lcall delay20ms
jmp pro_key
ke3:ret
;**************************************
;******** 定时器 T0 设置 **************
;定时器工作在方式1,为提高精度,总定时时间为50ms,
;定时器溢出20次为1秒,
pro_timer: MOV tmod,#01h ;设置定时器为定时方式1
MOV th0,#0ffh ;初始化定时初值
MOV tl0,#0a1h ;
setb ea ;总中断允许
setb et0 ;定时器0 允许
setb tr0 ;开始定时
ret ;返回
; *****************************************
; *************** 软件延时 *************
delay:push psw ;保存原来的寄存器内容
clr psw.3 ;
clr psw.4 ;设置新的寄存器组
MOV r0,#2 ;延时参数1
MOV r1,#250 ;延时参数2
MOV r2,#2 ;延时参数3
dl1:djnz r0,dl1 ;延时循环1
MOV r0,#250 ;
dl2:djnz r1,dl1 ;延时循环2
MOV r0,#240 ;
MOV r1,#248 ;
dl3:djnz r2,dl1 ;延时循环3
nop ;定时精度调整
pop psw ;恢复原来的寄存器
ret ;返回
;*****************************************
;*************** 键盘延时 ***************
delay20ms:push psw
clr psw.3
clr psw.4
MOV r0,#250
MOV r1,#40
d20:djnz r0,d20
MOV r0,#250
djnz r1,d20
pop psw
ret
;**************************************
;*********** 延时 5ms ****************
delay5ms:push psw
clr psw.3
setb psw.4
MOV r0,#250
MOV r1,#10
d5:djnz r0,d5
MOV r0,#250
djnz r1,d5
pop psw
ret
;************************************************************************************
;这是数字显示表格,其中 带小数点的数字比不带小数点的数字大16
; 比如 0 的显示代码为 0;那么 0.的显示代码为 16;如此类推
tab_nu:db 0c0h, 0f9h, 0a4h, 0b0h, 99h , 92h , 82h, 0f8h ;数字0-7 不带小数点代码
db 80h , 90h, 88h , 83h , 0c6h, 0a1h, 86h, 8eh ;数字8-f 不带小数点代码
db 40h , 79h, 24h , 30h , 19h , 12h , 02h, 78h ;数字0-7 带小数点代码
db 00h , 10h, 08h , 03h , 46h , 21h , 06h, 0eh ;数字8-f 带小数点代码
end ;
上一页 [1] [2] [3]
本文关键字:电子钟 51单片机,单片机-工控设备 - 51单片机