首页 > 编程知识 正文

bcd码转十进制程序,压缩bcd码怎么求

时间:2023-05-06 09:31:27 阅读:124404 作者:688

BCD: //BCD码转换、

; 将t_sec和T_min的秒数和分数转换为BCD码,存在于min10,min,sec10,sec中

MOV A,T_SEC;

MOV B,#10

DIV AB

MOV SEC10,a

MOV SEC,B MOV A,T_MIN;

MOV B,#10

DIV AB

MOV MIN10,a

MOV MIN,B next:

POP PSW

POP ACC

RETIINT:

PUSH ACC

推式电源

CLR EX0; 外部中断用于阻止因mode键抖动而引起的中断。

呼叫延迟10; 延迟10ms

JB P1.7、jNEXTT0; 10ms后,如果为1,则为抖动,结束中断。 中断了,相对地址太远了,造了一座桥。 mov r0,#0FFH

; //以下为扫描p1.7-p1.5

modekey:

mov a,temp1; 用于存储临时数字

MOVC A,@A DPTR; 查表

MOV P0,a; 用于调整中的显示。 只显示一位

mov p2、temp; 为了保存临时控制代码

call DELY1

MOV P2,#00H

呼叫戴尔y1; 为了与扫描的亮度相同,使用3个延迟。

CALL DELY1

CALL DELY1jb p1.7,upkey

呼叫延迟10; 延迟10ms

jb p1.7、modekey; 如果10ms后为1,则为抖动干扰,

jnb p1.7,$; 等待放松

JMP模式; 模式处理jne xtt 0: jmpnextt0up key : jbp 1.6,beginkey

呼叫延迟10

jb p1.6,upkey

jnb p1.6,$

jmp upbeginkey:

jb p1.5,modekey

呼叫延迟10

jb p1.5,beginkey

jnb p1.5,$

jmp begin mode: 用于选择要调节的数码管。 读数是倒计时中的时间值

inc r0

mov a,r0 m0:

cjne a,#00h,m1 //显示10位

mov a,tmin10

mov temp,#80h

jmp m m1:

cjne a,#01h,m2

mov a,tmin

mov temp,#40h

jmp m m2:

cjne a,#02h,m3

mov a,tsec10

mov temp,#20h

jmp m m3:

cjne a,#03h,m4

mov a,tsec

mov temp,#10h

jmp m m4:jmp NEXTT0

m:

mov temp1,a jmp modekey//跳过模式选择循环up:

up0: 对每个BCD码进行加法操作,对准。 保存在分钟和秒的计数器中

cjne r0,#00h,up1

mov a,tmin10;

国际航空航天局

cjne a,#10,upt0

mov a,#00h

upt0:

mov tmin10,a

jmp u

up1:

cjne r0,#01h,up2

mov a,tmin

国际航空航天局

cjne a,#10,upt1

mov a,#00h

upt1:

mov tmin,a

jmp u

up2:

cjne r0,#02h,up3

mov a,tsec10

国际航空航天局

cjne a,#6,upt2

mov a,#00h

upt2:

mov tsec10,a

jmp u

up3:

cjne r0,#03h,u

mov a,tsec

国际航空航天局

cjne a,#10,upt3

mov a,#00h

upt3:

mov tsec,a

u:

mov temp1,a jmp upkey begin:

mov sec10,tsec10

mov min10,tmin10

mov sec,tsec

mov min,tmin mov a,tsec10

mov b,#10

mul ab

add a,tsec

mov t_sec,a

mov a,tmin10

mov b,#10

mul ab

add a,tmin

mov t_min,a setb TR0 NEXTT0:

SETB EX0 //重启外中断

POP PSW

POP ACC

RETIDELY1: //为了消除重影延迟1ms

MOV R4,#2

D1:MOV R5,#248

DJNZ R5,$

DJNZ R4,D1

RET

DELAY10: 延迟10ms用于抖动去除

MOV R4,#20

D2:MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

//用于程序

DISPTAB:DB 00111111b、00000110b、01011011b、01001111b、01100110b、01101101b、0111111b、0111111b、01110000000001

DISPTABDP:DB 10111111b、10000110b、11011011b、11001111b、11100110b、11101101b、111111101 b、10000111b、1111111 b、11111111

结束; //倒计时的使用说明。 输出端口支持P0,扫描端口支持P2.7-p2.4,分十位、分一位、牌表十位、牌表一位

; //键盘输入端口为P1.5-begin,p1.6-up,p1.7-mode,p1.4-stop

正在读取注释.

请登录后发表评论!

修正失败了。 请稍后再试

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。