发一段我的程序,用595,整篇程序没有延时指令,显示和键盘扫描汇编子程序
;----------------------------------------
; 动态显示子程序
;----------------------------------------
;动态显示只能一位一位的显示
disp: jnb keyscan_f,disp1
;**********************求键值***********************
setb p1.0
mov a,#00001100b ;键盘扫描,扫描SET键,输入低电平
call duan_disp
jb p1.0,key_disp1
jnb set_f,key_disp0 ;
mov key_value,#01h
key_disp0: setb set_f ;set_f为设置键去抖动标志位
clr jia_f
clr jian_f
jmp disp00
key_disp1: clr set_f
mov a,#00010100b ;扫描加键
call duan_disp
jb p1.0,key_disp2
jnb jia_f,key_disp11
mov key_value,#02h
key_disp11: setb jia_f
clr jian_f ;防止2个键同时按下时的情况
jmp disp00
key_disp2: clr jia_f
mov a,#00011000b
call duan_disp
jb p1.0,key_disp3
jnb jian_f,key_disp22
mov key_value,#03h
key_disp22: setb jian_f
jmp disp00
key_disp3: clr jian_f
mov key_value,#00h
jmp disp0
disp00: clr keyno_f ;有按键时,清没有按键标志位
mov cnt_keyno,#00 ;有按键时,键值计数器清零
disp0: clr keyscan_f
disp1: mov a,cnt_disp ;先求出显示第几位
clr c
mov r0,#s11
jmp cha00
cha0: inc r0
cha00: rlc a
jnc cha0
mov dptr,#disp_tab ;查表
cha1: mov a,@r0
movc a,@a+dptr
mov r0,cnt_disp ;再次利用r0
cjne r0,#00100000b,cha11 ;加13小数点
jnb dian13,cha12
inc a
jmp cha12
cha11: cjne r0,#00000100b,cha12 ;加22小数点
jnb dian22,cha12
inc a
cha12: cjne r0,#00000001b,cha2 ;指示灯显示
setb keyscan_f ;扫描完最后一位数码管后进入键盘扫描
jnb flash_f,cha12_1 ;1秒指示灯闪烁一次
jnb banmiao_f,cha12_1
mov a,#00011100b ;消隐
jmp cha2
cha12_1: mov a,#00h
jnb led_jiare,cha13 ;点亮加热等灯
orl a,#10011100b
cha13: jnb led_paifeng,cha14 ;点亮排风灯
orl a,#01011100b
cha14: jnb led_shoudong,cha2 ;点亮手动灯
orl a,#00111100b
cha2: call duan_disp
mov a,cnt_disp
jnb flash_f,cha4
jnb banliang_f,cha4
cjne a,#00010000b,cha3
cha3: jc cha4
mov a,#00h ;前4位亮度减半,
cha4: mov p1,a ;送位码
mov a,cnt_disp
rr a ;这就8位
mov cnt_disp,a ;位码右移一位
call dog
disp_end: ret
duan_disp: clr rclk_595 ;把段数据送出
clr c
mov r0,#8
duan1: clr sclk_595
rrc a
mov a_595,c
setb sclk_595
djnz r0,duan1
setb rclk_595
ret
disp_tab:
db 0FCH,060H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,0FEH,0F6H
;显示 0 1 2 3 4 5 6 7 8 9
db 0eeh,3eh,1ah,7ah,9eh,02h;8eh
;显示 A b c d E -
db 00H,0ffh,02h,1eh,6eh,1ch,62h,0ech;2ah
;显示 消隐 全亮 - t H L -1 n
db 3ah,0ceh,10h,70h,60h,0ah,38h,0fdh
; o P _ J i r u 0.
db 76h |