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