用串口发送数据怎么会丢失第二位?
我用查表发送数据,大致的程序如下:
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,因此跳过了第二位数据,无奈只有在第二位设置一个无用数据以供延时。不知问题出在哪里,特此求教?先在这谢谢啦!
问题点数:40、回复次数:6Top
1 楼lhywing168(林)回复于 2004-04-04 19:06:22 得分 10
SE_AT,,CK_AT这跳转没有问题吧,再查一下吧Top
2 楼sundaykid(Sunday)回复于 2004-04-05 09:17:16 得分 0
注意:TI是要由軟件清零的.
Top
3 楼eric9811(MCU我选择我喜欢)回复于 2004-04-05 09:31:55 得分 10
JBC TI,CK_AT,CK_AT这个function是将数据取出的吗?
从这几句看来程序好像没问题!
另外按楼上兄弟说的检查检查!Top
4 楼Suren2003(苏恩)回复于 2004-04-05 09:56:07 得分 0
to sundaykid(sundaykid):
TI是不是需要在最初的时候就用软件清零?Top
5 楼daozi1980()回复于 2004-04-05 11:22:44 得分 10
你的问题是应该在中断程序里将TI清0,这样就OK了Top
6 楼sundaykid(Sunday)回复于 2004-04-05 19:50:03 得分 10
TI不但要初始化時清由軟件清零,
且每次發送完後都需要由軟件清零.Top




