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