STC12C5A60S2,第二串口方式0工作模式问题。就是发送不了。

;STC12C5A60S2,串口2工作在方式0.就是不能发送不了。
S2CON EQU 09AH
S2BUF EQU 09BH
AUXR EQU 08EH
AUXR1 EQU 0A2H
BRT EQU 09CH
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV S2CON,#00H ;设置串口2工作在方式0
MOV AUXR,#10H ;
MOV AUXR1,#00H
MOV BRT,#0F0H
MOV 30H,#02H ; 发送数据1
MOV 31H,#04H ; 发送数据2
MOV 32H,#10H ; 发送数据3
MOV 33H,#11H ; 发送数据4
MOV 34H,#0AAH ; 发送数据5
MOV R0,#30H ; 起始地址
MOV R6,#05H ; 数据个数
DEY: MOV A,@R0
INC R0
MOV S2BUF,A
LOOP: MOV 20H,S2CON ; 将S2CON放入位寻址区。
JNB 02H,LOOP ;判断S2CON的01位是否为1
MOV S2CON,#00H
DJNZ R6,DEY
MOV R0,#30H
MOV R6,#05H
NOP
NOP
NOP
JB P2.1,$ ;第二次发送开关,按下则发送一组。
AJMP DEY
END
我用逻辑分析仪监控串口2,就是没有发送出来,大家看下,是什么原因,
请高手找下我这个程序错在哪里?
我的这个MCU为 STC12C5A60S2----- LQFP44G封装的。

MOV 20H,S2CON ; 将S2CON放入位寻址区。
JNB 02H,LOOP ;判断S2CON的01位是否为1--------------这里有问题吧!!!!!
MOV S2CON,#00H追问

因为,S2CON不能位寻址,所以,放到位寻址区20H字节处,发送完成的标志位S2TI在S2CON的01位,所以,判断其01位,看来是我设错位了弄成了判断02位,呵呵,改后再试下。

追答

数据发送完毕一定要清除标志位

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜