共2条
1/1 1 跳转至页
1121 求助:1121串口通讯有问题!!!
问
我用的是1121在串口通讯时,遇到了这样一个问题:
单片机发送 06 结果上位机收到的却是 06 00 不知为什么?
请给位高手指点!!谢谢!:confused: 答 1: 哎,每人理我我还要说,还要补充!!:mad:
上面这个程序,在循环发送中上位机收到的十分正确,可单步发送却总是有个尾巴,比如:00;80;f0等等,不知为什么?请各位好心的大虾看看吧?
下面是程序:
ORG 0F000h ; 程序开始
RESET mov.w #300h,SP ;初始化堆栈指针
MOV #05H,R5
call #Init_Sys ;初始化系统模块
Mainloop MOV #05H,R5
Call #TX_Byte ;发送数据
Jmp Mainloop ;程序不断循环
Init_Sys ;初始化程序
StopWDT mov #WDTPW+WDTHOLD,&WDTCTL ; 停止看门狗
SetupTA mov #TASSEL0+MC1,&TACTL ;输入ACLK,连续工作方式
SetupC0 mov #OUT,&CCTL0 ; TXD=1,发送空闲
SetupP1_2 bis.b #TXD,&P1SEL ; P1.1/TA0 为发送TXD
bis.b #TXD,&P1DIR
eint
ret
TX_Byte ;发送一个字节数据
mov &TAR,&CCR0 ;确定第一位的时间长度
add #Bitime,&CCR0
bis #0100h, RXTXData ; 数据中增加起始和停止位
rla RXTXData
mov #10,BitCnt ;8 个数据位+1 个起始位+1 个停止位
mov #OUTMOD0+CCIE,&CCTL0 ;输出方式1,TXD = 1,仍未发送数据
TX_Wait bit #CCIE,&CCTL0 ;等待数据全部发送完毕
Jnz TX_Wait
ret
TA0_ISR ;CCR0 数据收发中断服务程序
add #Bitime,&CCR0 ;发送下一位数据的时间
rra RXTXData ;最低有效位移入C
jnc TX_Space ; Jump --> bit = 1
UART_TX bic #OUTMOD2,&CCTL0 ;输出方式2,中断输出1
JMP TX_Test
TX_Space bis #OUTMOD2,&CCTL0 ;输出方式5,中断输出0
TX_Test dec BitCnt ;所有的数据位都收发完毕
jnz TX_Next ;没有,准备收发下一位
bic #CCIE,&CCTL0 ;所有的位都收发完毕关闭TIMER_A 中断
TX_Next reti
ORG 0FFFEh ;复位入口地址
DW RESET
ORG 0FFF2h ;Timer_A0 向量地址
DW TA0_ISR
END
END:eek: 答 2: 谢谢了各位大虾,帮帮我吧!谢谢了!!!!!:p 答 3: 又一天了,哎!没人理我!!!
:( 答 4: 老兄,我跟你有相同问题,也没有解决。我发26,上位机收到26 FF,不明白。
单片机发送 06 结果上位机收到的却是 06 00 不知为什么?
请给位高手指点!!谢谢!:confused: 答 1: 哎,每人理我我还要说,还要补充!!:mad:
上面这个程序,在循环发送中上位机收到的十分正确,可单步发送却总是有个尾巴,比如:00;80;f0等等,不知为什么?请各位好心的大虾看看吧?
下面是程序:
ORG 0F000h ; 程序开始
RESET mov.w #300h,SP ;初始化堆栈指针
MOV #05H,R5
call #Init_Sys ;初始化系统模块
Mainloop MOV #05H,R5
Call #TX_Byte ;发送数据
Jmp Mainloop ;程序不断循环
Init_Sys ;初始化程序
StopWDT mov #WDTPW+WDTHOLD,&WDTCTL ; 停止看门狗
SetupTA mov #TASSEL0+MC1,&TACTL ;输入ACLK,连续工作方式
SetupC0 mov #OUT,&CCTL0 ; TXD=1,发送空闲
SetupP1_2 bis.b #TXD,&P1SEL ; P1.1/TA0 为发送TXD
bis.b #TXD,&P1DIR
eint
ret
TX_Byte ;发送一个字节数据
mov &TAR,&CCR0 ;确定第一位的时间长度
add #Bitime,&CCR0
bis #0100h, RXTXData ; 数据中增加起始和停止位
rla RXTXData
mov #10,BitCnt ;8 个数据位+1 个起始位+1 个停止位
mov #OUTMOD0+CCIE,&CCTL0 ;输出方式1,TXD = 1,仍未发送数据
TX_Wait bit #CCIE,&CCTL0 ;等待数据全部发送完毕
Jnz TX_Wait
ret
TA0_ISR ;CCR0 数据收发中断服务程序
add #Bitime,&CCR0 ;发送下一位数据的时间
rra RXTXData ;最低有效位移入C
jnc TX_Space ; Jump --> bit = 1
UART_TX bic #OUTMOD2,&CCTL0 ;输出方式2,中断输出1
JMP TX_Test
TX_Space bis #OUTMOD2,&CCTL0 ;输出方式5,中断输出0
TX_Test dec BitCnt ;所有的数据位都收发完毕
jnz TX_Next ;没有,准备收发下一位
bic #CCIE,&CCTL0 ;所有的位都收发完毕关闭TIMER_A 中断
TX_Next reti
ORG 0FFFEh ;复位入口地址
DW RESET
ORG 0FFF2h ;Timer_A0 向量地址
DW TA0_ISR
END
END:eek: 答 2: 谢谢了各位大虾,帮帮我吧!谢谢了!!!!!:p 答 3: 又一天了,哎!没人理我!!!
:( 答 4: 老兄,我跟你有相同问题,也没有解决。我发26,上位机收到26 FF,不明白。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |