关于单片机DA指令最近做课设,内容是计算一个按键按下的次数(0~99),用8个发光二极管显示.采用软件去抖.显示接口用273扩展,按键入口选P1口.8031单片机.我的程序如下:ORG 0000HLJMP MAIN ORG 0030
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/25 04:01:30
关于单片机DA指令最近做课设,内容是计算一个按键按下的次数(0~99),用8个发光二极管显示.采用软件去抖.显示接口用273扩展,按键入口选P1口.8031单片机.我的程序如下:ORG 0000HLJMP MAIN ORG 0030
关于单片机DA指令
最近做课设,内容是计算一个按键按下的次数(0~99),用8个发光二极管显示.采用软件去抖.
显示接口用273扩展,按键入口选P1口.8031单片机.
我的程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV A,#0FFH
MOV DPTR,#7FFFH ;我用P2.7和WR非口做273片选信号,接273的CLK
MOVX @DPTR,A
MOV R3,#00H
L1:JB P1.0,L1 ;P1.0=0,可能有键按下,若不是,跳回
LCALL DELAY
JB P1.0,L1
MOV A,R3
CPL A
WAIT:JNB P1.0,WAIT
MOV DPTR,#7FFFH
MOVX @DPTR,A
MOV A,R3
CJNE A,#63H,L1
LJMP MAIN
DELAY:MOV R4,#0AH
D2:MOV R5,#0FFH
D1:DJNZ R5,D1
DJNZ R4,D2
RET
SJMP $
END
但是这个程序的结构有问题,我只发现R3自加1后没有显示出来.
而且硬件电路连接好以后,通电测试的时候,发光二极管显示混乱.
好像是少一个DA转换指令
现在就是想请教,为什么要用DA指令?用在哪里?
是INC R3这一步么?这一步上移,接在 MOV A,R3后面,用
ADD A,#01H
DA A
望高手赐教,(主要不知道为什么用DA,我只是知道DZ用在高4位和低4位出现借位和错位超出显示范围的时候要用DA调整...)
关于单片机DA指令最近做课设,内容是计算一个按键按下的次数(0~99),用8个发光二极管显示.采用软件去抖.显示接口用273扩展,按键入口选P1口.8031单片机.我的程序如下:ORG 0000HLJMP MAIN ORG 0030
我没有看到给R3自动加1的程序
在MOV A, R3后加入
ADD A, #01H
DA A
MOV R3, A
两个功能
1. 自动加1
2. 将十六位转换为10进制,比如,09H转换一下,还是09
0AH转换一下,就成了10了,这主要就是为了显示,
但你的是发光二极管显示,并不是数码管显示的,它显示出来的肯定是乱码,
如果你不转换,也就是不加DA的话,那么二极管显示的就是2进制数据,这样还可以看出来到底按了多少次,但搞成这个样子,就得重新算了,
显示的数据是两个8进制,高四位显示十位,低四位显示个位,是十进制数,得仔细看了