打印

程序问题

[复制链接]
833|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanwe|  楼主 | 2022-6-12 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, hm, vr, play, ar
程序如下:
ORG 0000H ;Start address of the program
LJMP START
START: MOV R5,#0FEH
MOV R4,#0AH
MOV R0,#00H
MOV A,R5
MOV P2,A
MOV A,#00H
MOV DPTR,#TAB
PLAY1: MOVC A,@A+DPTR
MOV P0,A
LCALL DL1S
; LCALL DL1S
INC R0
MOV A,R0
DJNZ R4,PLAY1
AJMP REINPUT
;;;;;;;;;;;;;;Delay Function;;;;;;;;;;;;;

DL1S: LCALL DL05S
LCALL DL05S
RET
DL05S: MOV R3,#60H
DL05S1: DJNZ R3,DL05S1
RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
REINPUT: MOV A,#00H
MOV R4,#0AH
MOV R0,#00H
LJMP PLAY1
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
END
大家帮看看啊

使用特权

评论回复
沙发
hanwe|  楼主 | 2022-6-12 16:53 | 只看该作者
目的是使用数码管显示0到9个数字(每1秒变动一次),但是不知道为什么总是显示的8

使用特权

评论回复
板凳
juventus9554| | 2022-6-12 16:54 | 只看该作者

PLAY1:  MOVC A,@A+DPTR
                  MOV P0,A
                  LCALL DL1S
                  ; LCALL DL1S
                  INC R0
                  MOV A,R0
                  DJNZ R4,PLAY1
                  AJMP REINPUT”
这个子程序有问题

使用特权

评论回复
地板
hanwe|  楼主 | 2022-6-12 16:56 | 只看该作者

在debug模式下 明明看到P0口数据是不断变化的
可是在数码管总是显示的是8这个数字

使用特权

评论回复
5
jlyuan| | 2022-6-12 16:58 | 只看该作者
DJNZ R4,PLAY1这句明显不对,非要把全部断码送到P0口才去操作位码?

使用特权

评论回复
6
jiajs| | 2022-6-12 17:00 | 只看该作者

R4的作用是控制循环的啊
刚看了下,发现时DL1S延迟不对

使用特权

评论回复
7
chuxh| | 2022-6-12 17:07 | 只看该作者
跟看门狗倒是关系不大

使用特权

评论回复
8
supernan| | 2022-6-12 17:08 | 只看该作者
不到1s而是很短的延迟人眼看到的就是8

使用特权

评论回复
9
liuzaiy| | 2022-6-12 17:17 | 只看该作者

你的延时还不到1ms
延时时间长点

使用特权

评论回复
10
stly| | 2022-6-12 17:19 | 只看该作者
怎么改啊?

使用特权

评论回复
11
jlyuan| | 2022-6-12 17:24 | 只看该作者

MOV DPTR,#TAB
MOV   R0,#0
L_LOOP:
MOV    A,R0
MOVC A,@A+DPTR
MOV P0,A
LCALL DL1S
INC  R0
CJNE   R0,#10,L_LOOP
子程序这样改看一下可不可以

使用特权

评论回复
12
stly| | 2022-6-12 17:27 | 只看该作者

"
DL05S:  MOV R3,#60H
DL05S1: DJNZ R3,DL05S1
RET
"这个子程序不对,单片机指令周期1微秒,循环六十次,不到0.5毫秒...
P0口数值一直跳变,但太快(小于0.05秒),人眼无法识别...

使用特权

评论回复
13
supernan| | 2022-6-12 17:28 | 只看该作者
这可能是你的代码编写不对,可以单步运行一下

使用特权

评论回复
14
heweibig| | 2022-6-12 17:30 | 只看该作者
先实现位选通,再送字型码,每位八段数码管延迟显示1ms。如果仅仅是在一位八段数码管上面显示0-9,那就位一直选通,然后送字型码,每个字型码显示1秒钟,然后再送下一个字型码。 注意跳转到哪一个语句进行循环。

使用特权

评论回复
15
jiajs| | 2022-6-12 17:32 | 只看该作者
这数码管是共阴极还是共阳极的,如果接错,那程序的改了

使用特权

评论回复
16
hanwe|  楼主 | 2022-6-12 17:35 | 只看该作者
嗯,说得好,多谢了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

979

主题

8749

帖子

4

粉丝