用串口发送数据怎么会丢失第二位?

Suren2003 2004-04-03 10:43:38
我用查表发送数据,大致的程序如下:
MOV DPTR,#TAB ;定义指针指向TAB
SE_TAB: MOV A,#00H ;将A清空
MOVC A,@A+DPTR ;将表中第一个字符调用到A中
MOV SBUF,A ;将累加器A中字符调到SBUF
SECK1: JBC TI,CK_AT ;等数据发出后跳到CK_AT
SJMP SECK1
CK_TAB: INC DPTR ;修改指针,使之指向下一个字符
CJNE A,#0AH,SE_AT

TAB: DB 41H,00H,54H,0DH,0AH
但是运行时将41H发送后TI一直为1,因此跳过了第二位数据,无奈只有在第二位设置一个无用数据以供延时。不知问题出在哪里,特此求教?先在这谢谢啦!
...全文
445 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
daozi1980 2004-04-05
  • 打赏
  • 举报
回复
你的问题是应该在中断程序里将TI清0,这样就OK了
Suren2003 2004-04-05
  • 打赏
  • 举报
回复
to sundaykid(sundaykid):
TI是不是需要在最初的时候就用软件清零?
eric9811 2004-04-05
  • 打赏
  • 举报
回复
JBC TI,CK_AT,CK_AT这个function是将数据取出的吗?
从这几句看来程序好像没问题!
另外按楼上兄弟说的检查检查!
sundaykid 2004-04-05
  • 打赏
  • 举报
回复



注意:TI是要由軟件清零的.

sundaykid 2004-04-05
  • 打赏
  • 举报
回复
TI不但要初始化時清由軟件清零,
且每次發送完後都需要由軟件清零.
lhywing168 2004-04-04
  • 打赏
  • 举报
回复
SE_AT,,CK_AT这跳转没有问题吧,再查一下吧

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧