


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、51單片機(jī)按鍵控制花樣燈時間: 2018-09-10 13:50:11 來源: 51hei 作者:/* 本程序?qū)崿F(xiàn)用按鍵控制花樣燈。*當(dāng)K1按下時,燈從Oxfe向左跑一遍;*當(dāng)K2按下時,LED燈從0x7f向右跑一遍到了 Oxfe右跑回到起始位置;*當(dāng)K3鍵按下時,LED燈從Oxfe開始作流水燈形式運行一次,然后再流回來。*當(dāng)K4鍵按下時,LED燈先亮前四個,接著再轉(zhuǎn)向亮后四個。*當(dāng)K5鍵按下時,結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。*/*連接方法:P0接獨立按鍵 JP5。P2接LED燈接口 JP1*/#include <reg52.h> / 頭文件,函數(shù)聲明#include
2、 <intrins.h>/ 定義按鍵所在位sbit K仁P0A0。sbit K2=P0A1 。sbit K3=POA2 。sbit K4=POA3 。sbit K5=POA4 。unsigned char led 。unsigned char j 。void delayms(unsigned char ms> / 1ms標(biāo)準(zhǔn)延時while(ms->for(j=0 o j<110。j+>。/還是無法設(shè)置比較標(biāo)準(zhǔn)的延時,如1S等;所以應(yīng)該用定時器延時才最準(zhǔn)確 void main(> /P2=led 。 unsigned int iwhile(1>*
3、*當(dāng)K1按下時,燈從Oxfe向左跑一遍;*/if(K1=0>delayms(10> 。/ 消除鍵盤抖動if(K1=0>led=0xfefor(i=0。i<7。i+>/i 可以去8的倍數(shù),表示本電路執(zhí)行多少次/led=0x7f 。/ PP2=led 。/delayms(100> 。/到要求。led=_crol_(led,1> 。端口的初定義要在循環(huán)外面,不然會使效果錯亂因為這里已經(jīng)初設(shè)一個燈,所以 for 里面要加上這一個起初這里設(shè)置500MS使按鍵每按一下燈彩走一個,不能達(dá)P2=led 。 delayms(100>while(!K1> 。/
4、P2=led 。/這里強(qiáng)調(diào)松開就沒再次執(zhí)行程序 說明執(zhí)行完上面的程序的最后狀態(tài) /P2=led/如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個燈,但因為本行在 if 外面,所有最后還是會顯示*當(dāng)K2按下時,LED燈從0x7f向右跑一遍到了 0xfe右跑回到起始位置 */if(K2=0>delayms(10> 。if(K2=0>led=0x7f 。for(i=0 。 i<7 。 i+>P2=led 。 delayms(100> 。 led=_cror_(led,1> 。P2=led 。delayms(100> 。while(!K
5、1> 。P2=led 。delayms(100> 。for(i=0 。 i<7 。 i+>led=_crol_(led,1> 。P2=led 。delayms(100> 。 / 跑回去怎么就那么快呀? / 此時 led=0x7f/*當(dāng)K3鍵按下時,LED燈從Oxfe開始作流水燈形式運行一次,然后再流回來。*/if(K3=0>delayms(10> 。 / 消除抖動if(K3=0>led=0xfe 。delayms(200> 。for(i=0 。 i<7 。 i+>P2=led 。delayms(200> 。led=l
6、ed<<1 。/ 備注 led=_crol_(led,1 )等于 led<<1|led>>7。P2=led 。 delayms(200> 。if(led=0x00>break 。/ 這里一定要有個 break ,跳出循環(huán),然后別忘了此時的狀態(tài)是00,而不是 7fwhile(!K1>led=0x7f 。P2=led 。 delayms(200 > 。 for(i=0 。 i<7 。 i+> led=led>>1 。P2=led 。 delayms(200> 。 /*當(dāng)K4鍵按下時,LED燈先亮前四個,接著再
7、轉(zhuǎn)向亮后四個。*/if(K4=0> delayms(10> 。 / 消除抖動 if(K4=0>for(i=0 。 i<4 。 i+>/ 執(zhí)行四次 led=0xf0。P2=led。delayms(500> 。 led=0x0f 。P2=led 。delayms(500> 。*當(dāng)K5鍵按下時,結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。*if(K5=0> delayms(10> 。if(K5=0>P2=0xff 。/*/時鐘 +秒表 +流水燈的單片機(jī)匯編程序時間: 2018-09-10 13:49:42 來源: 作者:/HJSMSY-V1
8、.0 單片機(jī)開發(fā)板測試程序/ << 電腦鐘 >>/主函數(shù)ORG 0000HLJMP MAINORG 000BHLJMP T00/ ORG 001BH/ LJMP T11ORG 0030H/程序初始化MAIN:MOV TMOD,#11HMOV TH0,#3CHMOVTL0,#0B0HMOVMOVTH1,#0F0HTL1,#0B0HSETBEASETBET0/ SETB ET1SETB TR0/ SETB TR1CLR P3.4MOV R7,#00HMOV 30H,#00HMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#00HMOV
9、 35H,#00HMOV 44H,#00HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00HMOV 48H,#00HMOV 49H,#00HMOV P2,#0F0HMOV 40H,#01HMOV 41H,#08H秒值。秒個位值。秒十位值。分個位。分十位。時個位。時十位。秒表毫秒十位。秒表秒毫秒百位。秒表秒個位。秒表秒十位。秒表分個位。秒表分十位。P2 口按鍵初始化。數(shù)碼管休眠值 / 流水燈 / 秒表開關(guān)數(shù) 。流水燈循環(huán)值MOV 42H,#00H 。秒表暫停/ ACALL T11/MAIN1:MOV P0,#0FFHMOV P1,#0FFHMOV R0,40HCJNE R0
10、,#01H,ACL1ACALL MAIN2。時鐘顯示ACL1:CJNE R0,#02H,ACL2ACALL MAIN3。秒表ACL2:CJNE R0,#03H,ACL3ACALL LED。流水燈ACL3:ACALL KEY 。按鍵掃描/ ACALL BAO。定時報警LJMP MAIN1/= 報警子程序 =BAO:MOV R4,33HCJNE R4,#03H,YY1CLR P3.2ACALL KEYLJMP YY2YY1:CJNE R4,#05H,YY2SETB P3.2ACALL KEYYY2:RET/= 時鐘掃描子程序 =MAIN2:MOV A,30HMOV DPTR,#TABMOVC A,
11、A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,31HMOV DPTR,#TABMOVC A,A+ DPTRMOV P0,ACLR P1.1SETB P1.0ACALL DELAYMOV A,32HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,33HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,34HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.4SE
12、TB P1.3ACALL DELAYMOV A,35HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FHMOV P1,#0EBHACALL DELAYMOV P1,#0FFHRET/= 秒表掃描子程序 = MAIN3:MOV A,44HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.0ACALL DELAYMOV A,45HMOV DPTR,#TABMOVC A,A+ DPTRMOV P0,ACLR P1.1SETB P1.0ACALL DELAYMOV A,46H
13、MOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.2SETB P1.1ACALL DELAYMOV A,47HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.3SETB P1.2ACALL DELAYMOV A,48HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.4SETB P1.3ACALL DELAYMOV A,49HMOV DPTR,#TABMOVC A,A+DPTRMOV P0,ACLR P1.5SETB P1.4ACALL DELAYMOV P0,#7FHMOV P1,#0EBHAC
14、ALL DELAYMOV P1,#0FFHRET/=定時器 TO 中斷服務(wù)=T00:MOV TH0,#0D8HMOV TL0,#0F0HINC R7CJNE R7,#64H,AAMOV R7,#00H/ 時鐘跑值 TK1:INC 30H 。每秒鐘秒個位增一MOV R6,30HCJNE R6,#0AH,AAMOV 30H,#00HTK2:INC 31HMOV R6,31HCJNE R6,#06H,AAMOV 31H,#00HTK3:INC 32HMOV R6,32HCJNE R6,#0AH,AAMOV 32H,#00HTK4:INC 33HMOV R6,33HCJNE R6,#06H,AAMOV
15、 33H,#00HTK5:INC 34HMOV R5,34HMOV R6,35HCJNE R5,#04H,TK6CJNE R6,#02H,TK6MOV 34H,#00HMOV 35H,#00HTK6:CJNE R5,#0AH,AAMOV 34H,#00HINC 35H/ 秒表跑值 AA:MOV R5,42HCJNE R5,#01H,TK7INC 44HTK7:MOV R5,44HCJNE R5,#0AH,AA1MOV 44H,#00HINC 45HMOV R5,45HCJNE R5,#0AH,AA1MOV 45H,#00HINC 46HMOV R5,46HCJNE R5,#0AH,AA1MOV
16、 46H,#00HINC 47HMOV R5,47HCJNE R5,#06H,AA1MOV 47H,#00HINC 48HMOV R5,48HCJNE R5,#0AH,AA1MOV 48H,#00HINC 49HMOV R5,49HCJNE R5,#06H,AA1MOV 49H,#00HAA1:RETI/=定時器T1中斷服務(wù)子程序 = /T11:MOV TH1,#0F0H / MOV TL1,#0B0H/ RETI/*定時時間調(diào)整子程序*/TBAO:MOV 50H,#00HMOV 51H,#00HMOV 52H,#00HMOV 53H,#00HMOV 54H,#00HMOV 55H,#00HM
17、OV R3,50HDJNZ 30H,RET1RET1: RET/= 鍵盤掃描子程序 =KEY:MOV P2,#0F0HMOV R3,P2CJNE R3,#0F0H,KE0LJMP KK13KEO:CJNE R3,#0E0H,KE1。P2.4行MOV P2,#0EFHJB P2.3,KK1/ 用作調(diào)定時時間。 K13 秒個位增一ACALL DELAY1ACALL TK1KK1:JB P2.2,KK2ACALL DELAY1ACALL TK2KK2:JB P2.1,KK3ACALL DELAY1ACALL TK3KK3:JB P2.0,KE1ACALL DELAY1。 K14 秒十增。 K15 分
18、個位增。 K16 分十位增ACALL TK4KE1:M0V P2,#0DFH。P2.5 行JB P2.3,KK4。 K9 時個位增一ACALL DELAY1ACALL TK5KK4:JB P2.2,KK5。 K10 時十位增一ACALL DELAY1INC 35HM0V R3,35HCJNE R3,#03H,HH0M0V 35H,#00HLJMP KK5HH0:CJNE R3,#02H,HH1LJMP KK5HH1:CJNE R3,#01H,HH2LJMP KK5HH2:M0V 35H,#00HKK5:JB P2.1,KK6ACALL DELAY1CPL P3.2KK6:JB P2.0,KE2
19、M0V 42H,#00H。 K11開/ 關(guān)蜂鳴器。 K12 秒表暫停。 P.6 行。 K5 時鐘暫停 / 取消暫停。 K6 顯示 /休眠/ 流水燈KE2:M0V P2,#0BFHJB P2.3,KK7ACALL DELAY1CPL ET0KK7:JB P2.2,KK8ACALL DELAY2INC 40HM0V R3,40HCJNE R3,#04H,KK8MOV 40H,#01HKK8:JB P2.1,KK9/ ACALL DELAY3 。MOV 44H,#00HMOV 45H,#00HMOV 46H,#00HMOV 47H,#00HMOV 48H,#00HMOV 49H,#00HKK9:JB
20、 P2.0,KE3MOV 42H,#01HKE3:MOV P2,#7FH 。JB P2.3,KK10 。 ACALL DELAY1 MOV R3,31H CJNE R3,#00H,JA1 LJMP KK10 JA1:DEC 31HKK10:JB P2.2,KK11。ACALL DELAY1MOV R3,32HCJNE R3,#00H,JA2LJMP KK11JA2: DEC 32HKK11:JB P2.1,KK12。ACALL DELAY1MOV R3,33HCJNE R3,#00H,JA3LJMP KK12JA3:DEC 33H KK12:JB P2.0,KK13ACALL DELAY1MOV R3,34HCJNE R3,#00H,JA4LJMP KK13JA4:DEC 34HKK13:RET/= 流水燈子程序LE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國際設(shè)備租賃合同(4)管理資料
- 2025年電梯媒體廣告發(fā)布合同
- 2024年醫(yī)用X射線增強(qiáng)電視系統(tǒng)項目資金籌措計劃書代可行性研究報告
- 2024年涂布助劑項目資金籌措計劃書代可行性研究報告
- 2025全包裝修合同樣本
- 2025汽車租賃合同范本協(xié)議書格式
- 2025基礎(chǔ)設(shè)施貸款合同范本
- 2025年學(xué)校食堂肉類采購合同
- 2025林場轉(zhuǎn)讓合同范文
- 2025江西省采購合同示范文本
- 于丹--莊子心得
- 2023年供貨方案 醫(yī)療器械供貨方案(四篇)
- 森林病蟲害防治自測練習(xí)試題與答案
- GB/T 3728-1991工業(yè)乙酸乙酯
- GB/T 34949-2017實時數(shù)據(jù)庫C語言接口規(guī)范
- GB/T 3452.1-2005液壓氣動用O形橡膠密封圈第1部分:尺寸系列及公差
- GB/T 23641-2018電氣用纖維增強(qiáng)不飽和聚酯模塑料(SMC/BMC)
- 2023年國際焊接工程師考試IWE結(jié)構(gòu)試題
- 精華版-趙武靈王胡服騎射課件
- 《高等教育心理學(xué)》《高等教育學(xué)》樣題
- 高等學(xué)校英語應(yīng)用能力考試〔B級〕真題及答案
評論
0/150
提交評論