新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用單片機設計15s倒計時器

用單片機設計15s倒計時器

作者: 時間:2012-11-10 來源:網(wǎng)絡 收藏

/*
跳線設置:默認跳線位置,注意選擇跳線J5要選23端
程序效果:利用的定時/計數(shù)器設計一個15到0,
按S4后啟動,要求精確顯示到百分之一秒。
發(fā)揮部分:
1、定時結束后有提示音報警,并可重新定時
2、定時過程中按獨立鍵盤s5可暫停,按S4繼續(xù)
運行環(huán)境:51hei學習板
*/
ORG 0000H
LJMP START //主程序必須避開地址000BH
ORG 000BH //定時器0的中段服務程序,起始地址為000BH
LJMP IT00
ORG 0030H
START: MOV TH0,#0EBH //裝入初始值,定時時間為10ms
MOV TL0,#64H
MOV TMOD,#01H //工作方式1
MOV 33H,#01 //顯示初值為15s
MOV 32H,#05
MOV 31H,#00
MOV 30H,#00
SETB ET0 //打開定時0
SETB EA //開總中斷
LOOP1: JB P3.6,LOOP //判斷高低位,即按鍵KEY0是否按 下
LCALL DISPLAY //為低,即按鍵按下,延時消抖
LCALL DISPLAY
JB P3.6,LOOP //按鍵真的按下,并不是外界的干擾
SETB TR0 //啟動定時器
HERE: LCALL DISPLAY //調用顯示
JB P3.7,LOOP3 //判斷高低,即KEY1按鍵是否按下
CLR TR0 //按下,關閉定時器,這里并沒有消抖
LJMP LOOP1 //等待KEY0的按下
LOOP3: SJMP HERE //KEY1沒有按下,就需顯示
LOOP: LCALL DISPLAY //KEY1沒有按下,就需顯示
LJMP LOOP1
//減10ms子程序
SUB1: DEC 30H //百分位減1
MOV A,30H
CJNE A,#0FFH,LOOP2 //判斷百分位減到0之后是否 再減1
MOV 30H,#09 //是,裝入初值9
DEC 31H //十分位減1
MOV A,31H
CJNE A,#0FFH,LOOP2 //判斷百分位減到0之后是否 再減1
MOV 31H,#09
DEC 32H
MOV A,32H
CJNE A,#0FFH,LOOP2
MOV 32H,#09
DEC 33H
MOV A,33H
CJNE A,#0FFH,LOOP2
clr P2.2 //從15s減到0s后,驅動
LCALL DELAY //延時
LCALL DELAY
SETB P2.2 //關閉
MOV 33H,#01 //裝入初值15s
MOV 32H,#05
MOV 31H,#00
MOV 30H,#00
LOOP2: NOP //空指令
RET //返回
//顯示子程序
DISPLAY: MOV DPTR,#TAB //賦表首地址
MOV A,#0FBH

SETB P2.7
MOV P0,A //亮最左邊的數(shù)碼管
CLR P2.7
XCH A,R0 //暫存A的值
MOV A,33H
MOVC A,@A+DPTR //根據(jù)表值查找所需的值
SETB P2.6
MOV P0,A //顯示值
CLR P2.6
LCALL DELAY //延時
XCH A,R0 //恢復原值
RL A //循環(huán)左移,為下次做準備
SETB P2.7
MOV P0,A
CLR P2.7
XCH A,R0
MOV A,32H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
CLR P2.6
LCALL DELAY
XCH A,R0
RL A

SETB P2.7
MOV P0,A
clr P2.7

XCH A,R0
MOV A,31H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
clr P2.6
LCALL DELAY
XCH A,R0
RL A
SETB P2.7
MOV P0,A
clr P2.7
XCH A,R0
MOV A,30H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
clr P2.6
LCALL DELAY
RET
TAB: DB 3FH,06H,5BH,4FH,66H ;數(shù)碼管顯示的數(shù)值
DB 6DH,7DH,07H,7FH,6FH
IT00: MOV TH0,#0EBH //裝入初值,時間為10ms
MOV TL0,#64H
LCALL SUB1 //減10ms
RETI //返回
DELAY: MOV R7,#04 //延時子程序,時間大約為:2us*4*250
DEL2: MOV R6,#250
DEL1: DJNZ R6,DEL1
DJNZ R7,DEL2
RET
END //結束

蜂鳴器相關文章:蜂鳴器原理


評論


相關推薦

技術專區(qū)

關閉