|
原代碼
按鍵1 控制亮滅,按下時(shí)燈滅,再按下繼續(xù)流水
按鍵2 控制暫停,按下時(shí)暫停,保持該LED燈亮,再按下繼續(xù)
單片機(jī)源程序如下:
- #include<reg52.h>
- sbit KEY=P3^2; //按鍵1
- sbit KEY1=P3^3; //按鍵2
- unsigned char code d[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
- 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0x00,0xff}; //燈的效果(常量)
- void time();
- void timer();//調(diào)用中斷
- bit flag; //標(biāo)志位1
- bit flag1; //標(biāo)志位2
- void main()
- {
- time();
- while(1)
- {
- if(!KEY)
- {
-
- if(!KEY)
- {
- while(!KEY); //控制燈停止的按鍵
- {flag=~flag;}
- }
- }
- if(!KEY1)
- {
-
- if(!KEY1)
- {
- while(!KEY1); //控制燈熄滅的按鍵
- {flag1=~flag1;}
- }
- }
- }
- }
- void time()
- {
- TMOD|=0x01;
- //設(shè)置定時(shí)器工作模式TMOD(定時(shí)器工作方式寄存器);
- //GATE(定時(shí)器/計(jì)數(shù)器的開關(guān)控制選項(xiàng))設(shè)置為0;即定時(shí)器/計(jì)數(shù)器的開關(guān)控制僅由TCON寄存器中的TRx(x = 0,1)控制
- //C/T位(定時(shí)器模式和計(jì)數(shù)器模式選擇位)設(shè)置為0使其工作在定時(shí)器模式下;將該位置1則為定時(shí)器模式。
- //M1M0設(shè)置為01,使用16位計(jì)數(shù)
- TH0 = 0xD8; //65536-10000
- TL0 = 0xF0; //55536
- EA =1; //開啟總中斷
- EX0=1; //開啟0號(hào)外部中斷
- IT0=1; //設(shè)置外部中斷0觸發(fā)方式,1 - 負(fù)跳變觸發(fā)
- TR0=1; //定時(shí)器0運(yùn)行控制位,將該位置1時(shí)啟動(dòng)定時(shí)器0
- ET0=1; //定時(shí)器/計(jì)數(shù)器0中斷允許位
- }
- void timer() interrupt 0
- {
- P2=0xff;
- }
- void timeer() interrupt 1
- {
- static unsigned int k=0;
- static unsigned char i=0;
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256; //實(shí)現(xiàn)延時(shí)
- if((!flag)&&(!flag1))
- {
- k++;
- if(k<150) //當(dāng)兩個(gè)按鍵都沒有被按下時(shí),燈進(jìn)行流水效果
- {P2=d[i];}
- if(k==300)
- {
- k=0;
- i++;
- if(i==18)
- i=0;
- }
- }
- }
復(fù)制代碼
全部資料51hei下載地址:
Proteus 8.7模擬.zip
(52.52 KB, 下載次數(shù): 18)
2019-5-1 12:04 上傳
點(diǎn)擊文件名下載附件
hex原文件.zip
(607 Bytes, 下載次數(shù): 12)
2019-5-1 12:04 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|