永发信息网

新手,单片机问题,求解释!(此程序是实现数码管从0到9循环)

答案:3  悬赏:70  手机版
解决时间 2021-01-17 08:50
  • 提问者网友:树红树绿
  • 2021-01-16 19:40
新手,单片机问题,求解释!(此程序是实现数码管从0到9循环)
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-01-16 20:52
1.这是1~9再0~9吧。如果是0开始,
INC R0
MOV A,R0 ;这2 条先后顺序对换一下

2.CJNE A,#10,LOOP
MOV R0,#0 ;加这2条
MOV A,R0 ;加
3.还有就是你的延时时间太短了,每个数字显示得太快,才65ms。
全部回答
  • 1楼网友:空山清雨
  • 2021-01-16 22:33
流程:
查表;
送段码;
延时;
循环追问我是想实现从0到9的循环,但是失败了,我不是不知道指令的意思。而是因为我不知道程序哪出问题了!追答你的延时太短了改为:
DELAY:
MOV R1,#2
LOP1:MOVR2,#255
LOP0: DJNZ R2,LOP0
DJNZ R1,LOP1
RET
另:每次A的值都是同样的;
要改用R0
INC R0
MOV A,R0
CJNE A,#10,L_NEXT
MOV R0,#0
L_NEXT:
MOVDPTR,#TAB
MOVC A,@A+DPTR
MOVP2,A
  • 2楼网友:执傲
  • 2021-01-16 21:59
这个程序有几个错误,比如这两句
MAIN:
CLRA
这个没意义,反正你要给A赋值R0,没必要在赋值前给A清零。
这两句
CJNE A,#10,LOOP
LOOP:
不管A值是多少,都会跳到LOOP,这个比较毫无意义。
最主要的是DELAY:子程序只有给R1,R2赋值,却没有循环,所以几乎没有延时功能。
所以程序应该是8个灯管都微亮,却不能显示出确切的数字。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯