/************************************************ 跳线设置: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 ;伪指令,结束程序 |