;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;51單片機入門程序15
;工程名稱:用外部中斷0做一個報警電路
;(功能要求:報警信號為P1端口的燈亮滅起來共10秒鐘)
;編寫日期:2009.7.4
;編寫者:藍柳柳
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORG 0000H
AJMP QQ ;跳轉到主程序QQ去運行
ORG 0003H ;外部中斷0入口地址
LJMP QQQ ;轉到中斷服務程序QQQ處去運行
ORG 30H
QQ:
MOV P1,#1111111B ; 熄滅掉PI端口的燈,等下運行中斷服務程序時P1.0就亮
MOV P3,#1111111B ;讓P3.2這引腳置為高電平,等下按下其所接的開關將有下降沿觸發
SETB IT0 ;外部中斷0條件
SETB EX0 ;外部中斷0條件
SETB EA ;外部中斷0條件
LOOP:MOV P2,#00000000B ;單片機一直讓路燈亮著,假如路燈接在了P2端口
QQQ:MOV P1,#00000000B
ACALL YS ;延時,亮1秒鐘
MOV P1,#1111111B
ACALL YS ;延時,滅1秒鐘
MOV P1,#00000000B
ACALL YS ;延時,亮1秒鐘
MOV P1,#1111111B
ACALL YS ;延時,滅1秒鐘
MOV P1,#00000000B
ACALL YS ;延時,亮1秒鐘
MOV P1,#1111111B
ACALL YS ;延時,滅1秒鐘
MOV P1,#00000000B
ACALL YS ;延時,亮1秒鐘
MOV P1,#1111111B
ACALL YS ;延時,滅1秒鐘
MOV P1,#00000000B
ACALL YS ;延時,亮1秒鐘
MOV P1,#1111111B
ACALL YS
RETI ;中斷服務程序返回,返回到LOOP處等待下次中斷
YS: ;延時子程序,如果是用12MHZ作為時鐘電路的話,那么延時時間為1秒
MOV R1,#10
D: MOV R2,#200
T: MOV R3,#248
DJNZ R3,$
DJNZ R2,T
DJNZ R1,D
RET ;子程序返回指令,子程序的設計一般都是因為主程序要調用它,
;調用完是要返回到主程序繼續運行下一個語句的
END
|