找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1600|回复: 3
打印 上一主题 下一主题
收起左侧

单片机串行控制七段数码管代码错误?

[复制链接]
跳转到指定楼层
楼主
ID:998050 发表于 2021-12-29 00:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mentooo 于 2021-12-29 12:23 编辑

《实例解读51单片机完全学习与应用》程序8-15
目标:数码管显示1和5
原代码如下:Keil调试不正确!!新手求解
  1. ORG                00H                           
  2. START:
  3.         MOV                30H,#1                        ; 低位七段数码管DS0显示数据
  4.         MOV                31H,#5                        ; 高位七段数码管DS1显示数据
  5. MOV             R0,#30H                        ; R0=30H
  6.         MOV             R1,#40H                        ; R1=40H
  7. MOV             R2,#2                        ; R2=2
  8. DP10:   
  9. MOV      DPTR,#TABLE           ; 装表
  10. MOV             A,@R0                        ; 将R0所指的数据载入A
  11.         MOVC            A,@A+DPTR              ; 取表
  12.         MOV             @R1,A                        ; 把数据暂时保存在R1所指的地址中
  13. INC                R1                                ; R1自增1
  14. INC                R0                                ; R0自增1
  15.         DJNZ        R2,DP10                        ; 如果R2不等于0,说明没有取完两个段码,跳回DP10循环
  16.         MOV             R0,#40H               ; R0=40H,指向刚才保存段码的空间
  17.         MOV             R1,#2                  ; R1=2,段码共有2个字节数
  18. DP11:   
  19. MOV             R2,#8                  ; R2=8,每位显示数据共有8个段码,R2作计数器 
  20.         MOV             A,@R0                 ; 把R0指向的段码数据载入A
  21. DP12:   
  22. RLC                A                      ; 段码数据向左移动一位
  23.         MOV                P2.0,C                  ; 串行输出一位段码数据
  24.         CLR                P2.1                    ; 发送位移脉冲
  25.         SETB        P2.1                        ; 形成上升沿
  26.         DJNZ        R2,DP12                        ; 判断是否输出8位段码
  27.         INC                R0                                ; R0自增1
  28.         DJNZ        R1,DP11                        ; 判断是否输出两个显示数据
  29.         JMP                $

  30. TABLE:                                                ;七段数码管显示数据表(段码)
  31. DB                40H,79H,24H,30H,19H ;0,1,2,3,4
  32.         DB                12H,02H,78H,00H,10H ;5,6,7,8,9
  33.         END
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2021-12-29 17:52 | 只看该作者
Keil没有问题呀



你的Keil有什么错误?


回复

使用道具 举报

板凳
ID:998050 发表于 2021-12-29 22:00 | 只看该作者

这个程序 p2.0口 会一直输出0  ,因为RLC  A的值就是0
《实例解读51单片机完全学习与应用》第210页。
我再研究下。
回复

使用道具 举报

地板
ID:624769 发表于 2021-12-30 09:55 | 只看该作者

        SETB        P2.1                        ; 形成上升沿
        CLR          P2.1                    ; 发送位移脉冲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表