51单片机串口通信不能反悔主函数
时间:10-02
整理:3721RD
点击:
请各位大侠给看看,51单片机串口通信,中断后,不能返回主函数继续,请各位指点:
#include <reg52.h>
//第一区:初始化单片机自身及快速的外设,避免。
void init_chuankou()
{
SCON=0x50; //设定工作在8位UART模式;REN=1,串口接收信号。
TMOD=0x20; //设定定时器1工作在8位自动重装载模式。
PCON=0x80; //设定波特率加倍。
TH1=0xF3; //设定定时器的初始值是0xF3。因为是8位定时器,高低位一致即可。
TL1=0xF3; //设定定时器的初始值是0xF3。因为是8位定时器,高低位一致即可。
EA=1; //CPU总中断开启。
ES=1; //串口中断开启。
TR1=1; //定时器1开始运行。
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
void init_extent()
{
}
void uart_send_byte(unsigned char aa)
{
SBUF=aa;
while(!TI);
TI=0;
}
void uart_send_string(unsigned char *str)
{
while(*str!='\0')
{
uart_send_byte(*str);
str++;
}
}
void uart_isr(void) interrupt 4 using 1
{
unsigned char tmp;
tmp=SBUF;
if(RI)
{
uart_send_byte(tmp);
RI=0; //接收中断请求标志位。
}
}
void main(void)
{
init_chuankou();
delay10ms();
init_extent();
while(1)
{
uart_send_string("山东浪潮云服务集团\n");
}
}
不胜感激!
#include <reg52.h>
//第一区:初始化单片机自身及快速的外设,避免。
void init_chuankou()
{
SCON=0x50; //设定工作在8位UART模式;REN=1,串口接收信号。
TMOD=0x20; //设定定时器1工作在8位自动重装载模式。
PCON=0x80; //设定波特率加倍。
TH1=0xF3; //设定定时器的初始值是0xF3。因为是8位定时器,高低位一致即可。
TL1=0xF3; //设定定时器的初始值是0xF3。因为是8位定时器,高低位一致即可。
EA=1; //CPU总中断开启。
ES=1; //串口中断开启。
TR1=1; //定时器1开始运行。
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
void init_extent()
{
}
void uart_send_byte(unsigned char aa)
{
SBUF=aa;
while(!TI);
TI=0;
}
void uart_send_string(unsigned char *str)
{
while(*str!='\0')
{
uart_send_byte(*str);
str++;
}
}
void uart_isr(void) interrupt 4 using 1
{
unsigned char tmp;
tmp=SBUF;
if(RI)
{
uart_send_byte(tmp);
RI=0; //接收中断请求标志位。
}
}
void main(void)
{
init_chuankou();
delay10ms();
init_extent();
while(1)
{
uart_send_string("山东浪潮云服务集团\n");
}
}
不胜感激!