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

時間 2021-08-30 11:18:37

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,隨便選一個,就行了,只是提醒下,

微控制器的p0,p1,p2,p3埠有什麼作用

smile灬微光丶 1 p0口 真正的雙向口,輸出鎖存,輸入緩衝,輸入前要先置1 keil包含的標頭檔案已經有動作了,如果用匯編,要人工置1 輸出為漏極開路,輸出一般都要上拉電阻。輸入為高阻態,能驅動8個ttl負載。當有片外儲存器時,作資料線使用。2 p1口 最簡單的口,輸入也要先置1,無高阻態,只...

51微控制器怎麼用按鍵控制P0,P2順序輸出高電平

下面這個程式裡面有你要的東西,自己找找。include reg51.h void delay int n sbit k1 p3 3 led左移按鍵sbit k2 p3 5 led右移按鍵sbit k3 p3 6 開啟手動按鍵sbit k4 p3 7 開啟自動按鍵bit mark1 0 bit mar...

典型51微控制器的P0,P1,P2,P3口都有哪些功能

墨汁諾 p0口第一個功能是資料介面,第二個功能是地址低八位,p2口第二個功能是地址高八位。另外除了p0口沒有內部上拉電阻外,其他三個都有內部上拉電阻。p1就沒多少功能,就是個準雙向i o口。最重要的就是p3口了,他除了是個準雙向i o口外,第二功能很重要 p3.0 rxd 序列資料接收端 p3.1 ...