/************************************************ 跳線設(shè)置:J4的2,3端跳線帽拔掉(防止DA燈干擾,如不介意不拔也可以),雙排針跳線除PSEN外全部插上
顯示效果:D1燈不停的閃爍 ************************************************/ ORG 0000h
AJMP START
ORG 000BH ;T0中斷入口地址
AJMP TIME0 ;跳轉(zhuǎn)到真正的中斷程序處
START:
SETB P2.6 ;以下3行防止數(shù)碼管干擾 MOV P0,#0 CLR P2.6 MOV P0,#0FFH CLR P1.4 ;開led使能
CLR P0.7 ;取反p20,點亮最低位LED
MOV 30H,#0 ;30H地址置數(shù),用于計算中斷次數(shù)
MOV TMOD,#00000001B ;設(shè)置定時器0,使用方式1,定時20ms
MOV TH0,#0B1H ;計數(shù)器初始值高8位
MOV TL0,#0E0H ;計數(shù)器初始值低8位
SETB EA ;開總中斷允許位
SETB ET0 ;開啟T0定時器
SETB TR0 ;開啟T0定時器中斷允許位
AJMP $ ;死循環(huán),等待中斷產(chǎn)生
TIME0: PUSH ACC ;進(jìn)入中斷首先將ACC\PSW壓棧
PUSH PSW ;然后重裝計數(shù)器初始值
MOV TH0,#0B1H ;計數(shù)器初始值高8位
MOV TL0,#0E0H ;計數(shù)器初始值低8位
INC 30H ;將30H內(nèi)數(shù)據(jù)加1
MOV A,30H ;然后判斷是否計數(shù)到25次(即0.5秒)?
CJNE A,#25,TIME01 ;未到25次,則跳轉(zhuǎn)到TIME01處執(zhí)行出棧操作
CPL P0.7 ;到了25次,則取反P20端口
MOV 30H,#0 ;同時將30H單元內(nèi)數(shù)據(jù)清零
TIME01: POP PSW ;出棧
POP ACC ;出棧
RETI ;中斷返回用RETI
END ;偽指令,結(jié)束程序 |