21ic问答首页 - STC89C52单片机串口通信问题,求解答
STC89C52单片机串口通信问题,求解答
guoyy182020-09-04
使用的是STC89C52单片机,从另一个芯片上通过串口忘单片机上传数据,在串口调试助手上能看到传到单片机的数据,但是程序没有反应,求问大佬们为什么,多谢啦
#include <reg52.h>
void UsartConfiguration();
unsigned char num = 'A';
sbit LED2=P2^0;
void delay(unsigned int i) //延时函数
{
unsigned int k;
for (k=0;k<i;k++) ;
}
void main() //主函数
{
UsartConfiguration(); //调用接受的参数
if(num == 'F')
{
LED2=0;
}
}
void UsartConfiguration()
{
SCON=0x50; //设置为工作方式1
TMOD=0x20; //设置为工作方式2
PCON=0x80; //波特率加倍
TH1=0xFD; //计数器初值设置,波特率是9600
TL1=0xFD;
ES=1; //开中断
EA=1;
TR1=1; //开计数器
}
void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。
{
if(TI) //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。
{
TI = 0;
REN = 1; // ******允许接收数据。 *******
}
if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。
{
RI = 0; //只要数据接收端清零,就可以取出数据。
num = SBUF; //SBUF取数据
SBUF = num; //*******把数据num从SBUF送出去。************
REN = 0; //严谨的写法,发送数据的时候禁止接收数据。
}
//发送的时候不接收数据 ,发送完了再接收数据。
}
#include <reg52.h>
void UsartConfiguration();
unsigned char num = 'A';
sbit LED2=P2^0;
void delay(unsigned int i) //延时函数
{
unsigned int k;
for (k=0;k<i;k++) ;
}
void main() //主函数
{
UsartConfiguration(); //调用接受的参数
if(num == 'F')
{
LED2=0;
}
}
void UsartConfiguration()
{
SCON=0x50; //设置为工作方式1
TMOD=0x20; //设置为工作方式2
PCON=0x80; //波特率加倍
TH1=0xFD; //计数器初值设置,波特率是9600
TL1=0xFD;
ES=1; //开中断
EA=1;
TR1=1; //开计数器
}
void interrupt_uart() interrupt 4 //using1切换寄存器组到1,进入中断就要判断是发送中断TI,还是接收中断RI。
{
if(TI) //判断是否为发送端TI中断,中断结束之后,只需发送端清零,表示发送完成。
{
TI = 0;
REN = 1; // ******允许接收数据。 *******
}
if(RI) //判断是否为接收端RI中断,中断结束之后,只需接收端清零,表示接收完成。
{
RI = 0; //只要数据接收端清零,就可以取出数据。
num = SBUF; //SBUF取数据
SBUF = num; //*******把数据num从SBUF送出去。************
REN = 0; //严谨的写法,发送数据的时候禁止接收数据。
}
//发送的时候不接收数据 ,发送完了再接收数据。
}
赞0
评论
2020-09-05
赞0
评论
2020-09-05
赞0
评论
2020-09-05
赞0
评论
2020-09-05
您需要登录后才可以回复 登录 | 注册