中国芯 发表于 2014-1-13 15:00:05

新手请教串口通讯问题

我想用STC单片机实现,通过上位机串口发送数据给单片机,单片机直接使用该数据传送到P1口,比如说我在上位机发生“0000 0000”到单片机,那么单片机就直接把“0000 0000”传说到P1口,点亮LED灯,程序如下,就是达不到效果,很不解,新手求助,谢谢!

ORG 0000H
START:MOV SCON ,#00H ;初始化串口工作方式
MOV A,#0FFH ;点亮Led条件是单片机输出低电压

OUT0:
MOV P1,A   


SCAN01:
MOV A,SBUF
MOV R0,A
;CJNE R0,#0FFH,START;立即数0FFH与寄存器R0比较,如果不相等,则跳转到程序开头
LCALL DELAY   

DELAY:         
MOV P1,A
DELAY100MS:                        ;@12.000MHz,100毫秒
        NOP
        NOP
        NOP
        PUSH 30H
        PUSH 31H
        PUSH 32H
        MOV 30H,#4
        MOV 31H,#166
        MOV 32H,#207
NEXT:
        DJNZ 32H,NEXT
        DJNZ 31H,NEXT
        DJNZ 30H,NEXT
        POP 32H
        POP 31H
        POP 30H
        RET
LCALL SCAN01


END

zoologist 发表于 2014-1-13 15:49:43

1.最好直接使用c语言写程序,单片机汇编效率太低

2.检查你串口电压......前几天我刚被这个问题困扰过......

中国芯 发表于 2014-1-13 18:53:07

zoologist 发表于 2014-1-13 15:49 static/image/common/back.gif
1.最好直接使用c语言写程序,单片机汇编效率太低

2.检查你串口电压......前几天我刚被这个问题困扰过... ...

谢谢提醒,想想真的很有可能是电压问题,因为是直接在USB取电,所以会造成串口连接时候电压过低

风之紫 发表于 2014-1-13 23:00:35

本帖最后由 风之紫 于 2014-1-13 23:04 编辑

MOV A,SBUF这里不对,应该要查询接收标志RI是否置位来确定是否接收到数据;还有你的上下位机的串口参数(波特率,数据位、stop位、是否校验)设置是否一样?
页: [1]
查看完整版本: 新手请教串口通讯问题