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 ...