找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助一下关于串口方式1的问题

[复制链接]
跳转到指定楼层
楼主
ID:70526 发表于 2014-12-15 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了一个简单的由一个 单片机向另一个单片机传递数据,另外一个单片机驱动共阴极7段LED码的简单程序,但是不知道为什么总是运行不了。
求大神给解答一下,不胜感激。
我不明白的是方式 1用了定时计数器1,而且还用了串口中断,它就存在了两个中断源,这到底是怎么一回事啊。
发送机
ORG 0000H
          AJMP MAIN
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH   
MAIN :MOV R0,#10
          MOV R1,#0
      MOV TMOD,#20H
          MOV TH1,#0E8H
          MOV TL1,#0E8H
          SETB TR1      
      MOV SCON,#50H
          SETB EA
          SETB ES
          
          MOV DPTR,#TABLE
LOOP :MOV A,R1
          MOVC A,@A+DPTR
          MOV SBUF,A
          JNB TI,$
          INC R1
          CLR TI
          DJNZ R0,LOOP
          
      END
接收机
                  ORG 0000H
          AJMP MAIN
          ORG 0023H
          AJMP ZD
ZD   :CLR RI
          MOV A,SBUF
          MOV @R0,A
          INC R0
          DEC R1
          RETI          

DELAY:MOV R7,#20
DEL1 :MOV R6,#200
DEL2 :MOV R5,#123
      NOP
          DJNZ R5,$
          DJNZ R6,DEL2
          DJNZ R7,DEL1
          RET

MAIN :MOV R1,#10
          MOV R0,#40H
      MOV TMOD,#20H
          MOV TH1,#0E8H
          MOV TL1,#0E8H
          SETB TR1      
      MOV SCON,#50H
          SETB EA
          SETB ES
          CJNE R1,#0,$

      MOV R1,#10
          MOV R0,#40H
XH   :MOVX A,@R0
      MOV P0,A
          ACALL DELAY
          INC R0
          DJNZ R1,XH
          END      


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

使用道具 举报

沙发
ID:66032 发表于 2014-12-16 11:54 | 只看该作者
现在能看懂汇编的人越来越少了, 学汇编主要是了解算法,有时候在C里面会插入一些, 像你这样整段函数用汇编的我们没法理解, 也无从修改。能用C再写一下吗

评分

参与人数 1黑币 +7 收起 理由
xiaoyao + 7 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:70526 发表于 2014-12-16 14:06 来自手机 | 只看该作者
mqwu 发表于 2014-12-16 11:54
现在能看懂汇编的人越来越少了, 学汇编主要是了解算法,有时候在C里面会插入一些, 像你这样整段函数用汇 ...

感谢你了,我决定从现在开始学习C语言,能不能解答一下我理论方面的问题,如果说串口1要用定时器1的话,那不就有两个中断源了么,很不理解
回复

使用道具 举报

地板
ID:66032 发表于 2014-12-16 17:34 | 只看该作者
定时器1 用的是模式2自动重装,用来定义串口通信波特率的值; 不是中断源;若串口通信用中断的话,在51单片机 也就是中断4了。

评分

参与人数 1黑币 +10 收起 理由
xiaoyao + 10 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:70526 发表于 2014-12-16 22:16 | 只看该作者
mqwu 发表于 2014-12-16 17:34
定时器1 用的是模式2自动重装,用来定义串口通信波特率的值; 不是中断源;若串口通信用中断的话,在51单片 ...

首先谢谢您,我还是有些不懂在与定时器1应用模式2产生了TF1 置1,这个1怎么去处理,不管么???
回复

使用道具 举报

6#
ID:66032 发表于 2014-12-17 08:11 | 只看该作者
当TL1溢出后, TH1自动付给TL1初始值, 这就是所谓的自动重装模式, 也没有你说的溢出标志位TF1,因此也无需你软件清零。就是不管它。
回复

使用道具 举报

7#
ID:70508 发表于 2014-12-17 15:48 | 只看该作者
心有余而力不足啊,用C语言的话还差不多
回复

使用道具 举报

8#
ID:70653 发表于 2014-12-17 22:01 | 只看该作者
看见汇编都头大了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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