微控制器程式設計按鍵K1 p1 1 K2 p1 2 k3 p1 3 k4 p1 4 p5 p6輸出 k1 k3控制p5,k2k4控制p6

時間 2021-08-30 11:17:32

1樓:硬體開發

看你連分都沒有花五分鐘給你寫一個程式**如下:

#include //通用89c52標頭檔案 #include "intrins.h"

sbit key_01 = p1^1;

sbit key_02 = p1^2;

sbit key_03 = p1^3;

sbit key_04 = p1^4;

sbit main_a = p1^5;sbit main_b = p1^6;

/** 延時

*/void delay_1ms(unsigned int time)

/** 按鍵掃描子函式

*/void key_scangcmd(void)

while(key01 == 0); //等待鬆手檢測

}//*****按鍵3*****=//

if(key_03 == 0)

while(key03 == 0);

}//*****按鍵2*****=//

if(key_02 == 0)

while(key02 == 0);

}//*****按鍵4*****=//

if(key_04 == 0)

while(key04 == 0);}}

/** 主函式

*/int main(void) }

2樓:做而論道

;org 0000h

;-----------------------------------------

mov c, p1.1 ;當k1=0時

mov p5, c ;p5輸出低電平

;-----------------------------------------

mov c, p1.2 ;當k2=0時

mov p6, c ;p6輸出低電平

;-----------------------------------------

mov c, p1.3 ;當k3=0時

cpl c

mov p5, c ;p5回到高電平

;-----------------------------------------

mov c, p1.4 ;當k4=0時

cpl c

mov p6, c ;p6回到高電平

;-----------------------------------------

sjmp 0000hend

3樓:匿名使用者

#include "reg51.h"         //  試試sbit k1 = p1^0;//按鍵1

sbit k2 = p1^1;//按鍵2

sbit k3 = p1^2;//按鍵3

sbit k4 = p1^3;//按鍵4

sbit p5 = p1^5; //輸出1sbit p6 = p1^6; //輸出2bit  t1, t2;

void main(void)

while(1)

if(k1==0 && t1==0)

if(k2==0 && t1==0)

if(k1==1 && k2==1)

if(k3==0 && t2==0)

if(k4==0 && t2==0)

if(k3==1 && k4==1)

4樓:匿名使用者

#include

sbit k1=p1^0;

sbit k2=p1^1;

sbit k3=p1^2;

sbit k4=p1^3;

sbit door1=p1^5;

sbit door2=p1^6;

void delay()

}main()}}}

微控制器中開關k1,k2,k3,k4分別接p1.0到p1.4口,燈d1接p2.0口,k1,k2,k3中一個開關閉合燈亮,斷開滅,

5樓:匿名使用者

sbit key1 = p0^1;

sbit key2 = p0^2;

sbit key3 = p0^3;

sbit key4 = p0^4;

sbit led = p2^0;

#define on 1

#define off 0

unsigned char flag;

int main(void)

else

if (key4 &&(flag == on)) ///按下key4時 熄滅燈,且任何按鍵無法點亮燈

if (!key4) ///鬆開 key4 可以燈可以重新被點亮 }}

你的描述不是很清楚,我按照我的理解寫的。

51微控制器程式設計題微控制器p1.0~1.7口接八個發光二極體(愛心圖樣)試編寫流水燈的彙編程式使發光二極體逐個亮 15

6樓:匿名使用者

;啟動入口

org 0000h ;復位啟動

ljmp start ;

org 000bh ;t0中斷

ljmp t0int ;

org 0100h ;

ljmp start ;

;;主控程式

start: mov sp,#80h ;初始堆疊值mov tmod,#01h ;定時器0工作於方式1,50毫秒@12.000mhz

mov th0,#03ch ;定時器0定時時間=50msmov tl0,#0b0h ;設定定時初值mov p1,#0feh ;

mov ysjs,#4 ;4*50ms=200mssetb et0 ;允許定時器0中斷

setb ea ;開總中斷

setb tr0 ;定時器0啟動,開始定時jmp $ ;死迴圈等待中斷

;;定時器0中斷服務程式

t0int: push psw ;保護現場push acc ;

;djnz ysjs,qt0 ;

mov ysjs,#4 ;4*50ms=200msmov a,p1 ;

rl a ;

mov p1,a ;

;qt0: mov th0,#03ch ;定時器0定時時間=50ms

mov tl0,#0b0h ;

pop acc ;恢復現場

pop psw ;

reti ;

;ysjs equ 30h ;

end ;

7樓:做而論道

;p1 輸出低電平時,led 發光

org   0000h

mov   a, #127

lp:mov   p1, a

rr    a

mov   r5, #5

djnz  r7, $

djnz  r6, $ - 2

djnz  r5, $ - 4

jmp   lpend

利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。

8樓:匿名使用者

我正好也寫了那麼一個程式,我說一下自己的思路吧,我也剛學。

先做一個段選表和位選表,用兩個陣列儲存,如果有八個燈,位選就有8個。然後再定義一個陣列

digit[8] 裡面儲存 個位十位百位等數位。然後再定時器中斷函式裡,用一個switch語句,分別表明位選在01234567的情況。 我把它貼出來吧。

switch (num_we) //控制每一次位選的數碼管顯示

上面ledcode 是段選表 wecode 是位選表 。 num_we是位選標誌,表示選到了第幾個數碼管。

然後在除錯差不多掃描幾回為1秒,每到了一定的回數,個位數字就+1,個位數字到10,個位清零,十位+1,,以此類推。

9樓:絕種好風

那得看你的數碼管是怎麼接的,其實重要的是51微控制器定時器的使用,兩個,t0和t1,隨便選一個,就行了,只是提醒下,

51微控制器程式設計題微控制器P1 0 1 7口接發光二極體(愛心圖樣)試編寫流水燈的彙編程式使發光二極體逐個亮

啟動入口 org 0000h 復位啟動 ljmp start org 000bh t0中斷 ljmp t0int org 0100h ljmp start 主控程式 start mov sp,80h 初始堆疊值mov tmod,01h 定時器0工作於方式1,50毫秒 12.000mhz mov th...

51微控制器p0p1p2p3口,到底有啥區別啊,他們的基本功能

獅子最愛冥王星 51微控制器p0 p1 p2 p3口區別如下 一 意思不同 p0口作輸出口用時,需加上拉電阻。p0口有複用功能。當對外部儲存器進行讀寫操作時,p0口先是 提供外部儲存器的低8位地址,供外部儲存器地址鎖存器鎖存,然後充當資料線,用於寫出或讀入數 據。p1口 p2口只是普通io口。二 功...

微控制器程式設計問題 P1 P 0XF0宣告高四位輸入。請問這裡的是什麼意思?求講解

德昂當 是 或 運算子 按位或的 0 0 0 0 1 1 1 1 1 或運算就是 只要就有一個為1 結果就為1 與之相對應的是 與 運算 與運算只要有一個為0 結果就為0 0 0 0 0 1 0 1 1 1 p1 0xf0 就是把 p1的高4位都置為1 0xf0 二進位制就是 11110000 高4...