功能說明:
本文引用地址:
http://m.butianyuan.cn/article/201611/321013.htm開始時接在單片機P1端口中的P1.7亮,用定時器延時60ms后P1.6亮,如此向右移動,移到最右端P1.0亮后,又回到最左端重新開始向右移動,不斷循環(huán)。
程序:DS01.ASM
01: START: MOV R0, #8 ;設右移8次
02: MOV A, #01111111B ;存入開始點亮燈位置
03: LOOP: MOV P1, A ;傳送到P1并輸出
04: ACALL DELAY ;調(diào)延時子程序
05: RR A ;右移一位
06: DJNZ R0, LOOP ;判斷移動次數(shù)
07: JMP START ;重新設定顯示值 主程序
08: DELAY: MOV TMOD,#00000001B; 設定TO工作在MODE1
09: SETB TR0 ; 啟動TO開始計時
10: MOV TL0,#LOW(65536-60000) ; 裝入低位
11: MOV TH0,#HIGH(65536-60000); 裝入高位
12: JNB TF0,$ ; T0沒有溢出等待
13: CLR TF0 ; 產(chǎn)生溢出,清標志位 定時延時
14: RET ; 子程序返回 子程序
15: END ; 程序結束
功能說明:
開始時P1.0亮,延時10秒后,左移至P1.1亮,如此左移到第6個燈(P1.5)亮后,再從頭開始向左移動,1分鐘循環(huán)一次。
程序:DS02.ASM
01: START: MOV R0, #6 ;設左移6次
02: MOV A, #11111110B ;存入開始點亮燈位置
03: LOOP: MOV P1, A ;傳送到P1并輸出
04: ACALL DELAY ;調(diào)延時子程序
05: RL A ;左移一位
06: DJNZ R0, LOOP ;判斷移動次數(shù)
07: JMP START ;重新設定顯示值 主程序
08:DELAY: MOV R1,#200 ;設置軟件計數(shù)初值
09: MOV TMOD,#00000001B; 設定TO工作在MODE1
10: SETB TR0 ; 啟動TO開始計時
11: AGAIN: MOV TL0,#LOW(65536-50000) ; 裝入低位
12: MOV TH0,#HIGH(65536-50000); 裝入高位
13: LOOP1: JBC TF0,LOOP2 ;TF0是1轉移至LOOP2并清0
14: JMP LOOP1
15:LOOP2: DJNZ R1,AGAIN ;R1不是0,則轉移至AGAIN (定時加軟
16: CLR TR0 ;是,則停止T0計時 件計數(shù))
17: RET ; 子程序返回 延時子程序
18: END ; 程序結束
功能說明:采用兩個定時器合用,T0設置為定時方式,T1設置為計數(shù)方式。T0定時時間為50ms,計滿產(chǎn)生的輸出信號由P1.7口發(fā)光二極管顯示。同時還將該信號輸入到計數(shù)器T1(P3.5腳)作為T1的計數(shù)輸入脈沖,當輸入信號產(chǎn)生由1到0的跳變時觸發(fā)計數(shù)器工作,使計數(shù)器的值增1。計數(shù)器T1的初始值設置為100,計滿時所用的時間為50ms×2×100,即10s。并由P1.0端口發(fā)光二極管來顯示,所以P1.0端口的燈每10s點亮或熄滅一次。
程序:DS03.ASM
01: ORG 0000H ; 起始地址
02: JMP MAIN ; 跳到主程序MAIN處
03: ORG 000BH ; 定時器T0溢出入口地址
04: JMP EXT0 ; 跳到定時器中斷EXT0處
05: ORG 001BH ; 計數(shù)器T1溢出入口地址
06: JMP EXT1 ; 跳到計數(shù)器中斷EXT1處
07: MOV SP, #60H ; 設置堆棧 入口地址
08: MAIN: MOV TMOD, #01100001B;設T0模式1,T1模式2
09: MOV TL0, #LOW(65536-50000) ; 裝入定時初值
10: MOV TH0, #HIGH(65536-50000);
11: MOV TL1, #(256-100) ; 裝入計數(shù)初值
12: MOV TH1, #(256-100);
13: MOV IE, #10001010B ; 開總中斷及T0、T1中斷
14: SETB TR0 ; 啟動T0開始定時
15: SETB TR1 ; 啟動T1開始計數(shù)
16: JMP $ ; 等待溢出 主程序
17: EXT0: MOV TL0, #LOW(65536-50000) ;重加載
18: MOV TH0, #HIGH(65536-50000);
19: CPL P1.7 ; P1.7反相輸出,并輸入P3.5 T0中斷
20: RETI ; T0中斷子程序返回 子程序
21: EXT1: CPL P1.0 ; P1.0反相輸出 T1中斷
22: RETI ; T1中斷子程序返回 子程序
23: END ; 結束程序結束
評論