微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新人求助51汇编串行通信问题

新人求助51汇编串行通信问题

时间:10-02 整理:3721RD 点击:
本人小菜一枚,利用51假期学习51汇编,程序如下,结果是当上位机发送数据后,再读回来时显示00,跪求大神解答。               
                ORG                0000H
START:        AJMP        MAIN
                ORG                0023H
                AJMP        COM_INT
MAIN:        MOV                SP,#30H                        ;设置堆栈指针位置
                MOV                P2,#00H                        ;关闭所有LED,用于检测问题
                ACALL   InitISR                               ;初始化串行中断
HEAR:        SETB        P2.7                               ;检测代码段的执行情况
                AJMP        HEAR
InitISR:     MOV                TMOD,#20H                ;定时器1工作于方式2
                MOV                TH0,#0F3H                ;设置波特率为4800bps
                MOV                TL0,#0F3H
                MOV                PCON,#80H                ;波特率加倍
                MOV                SCON,#50H                ;串行口方式1
                SETB        EA                                ;开总中断
                SETB        TR1                                ;打开定时器T1
                SETB        ES                                ;开串行中断
                SETB        P2.6                                ;检测代码段的执行情况(OK)
                RET
COM_INT:SETB          P2.5                                ;检测代码段的执行情况(从PC端读取数据)
                JNB                RI,$                                ;等待接收完成                                       
                CLR                RI                                ;等待下次读取数据
                MOV                R0,SBUF                        ;读SBUF数据       
                   MOV                SBUF,R0                         ;立即向SBUF写数据
                JNB                TI,$                                ;等待发送完成
                CLR                TI
                SETB        P2.4                                ;检测代码段的执行情况(写数据)       
                RETI
END

新人不知道怎么关贴,是定时器初始化成T0了,真是悲了个剧的说~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top