串口发送,接收
在while(1){printf(“xxx”); delay(100); //此处需要有delay函数;}
#include
//stdio.h,string.h用于printf函数原型
#include
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void uart_init(void)
{
TMOD=0x20;//即0010 0000,定时器/计数器1,工作方式2
TH1=0xe6;//设置波特率为2400 24M
TL1=0xe6;
TR1=1;//启动定时器/计数器1
SCON=0x50; //0101 0000.串口工作方式1,允许串行控制
PCON=0x00;//设置SMOD=0
IE=0x90; //CPU允许中断,串行允许中断
TI=1;//直接使用printf必须加入此句才能实现发送
RI=1;
}
int main(void)
{
int a=99;
char *string="abde";
uart_init();
printf("hello system is restart\n");
while(1)
{
//puts("abcd");
//printf("%d %x %c %s %p\n",a,a,(char)a,string,string);
delay(1000);
}
return 0;
}
void uart_receiver(void) interrupt 4 //串口中断
{
unsigned char temp; //临时变量,用于缓冲收发数据
if(RI) // 判断是串口接收产生中断
{
RI = 0; // 清接收中断标志
temp = SBUF; // 接收到的数据写入缓冲BUF
SBUF = temp; // 将收到的数据发回给电脑端
}
if (TI) // 判断是串口发送产生中断
TI = 0; // 清发送中断
}
C51串口接收字符串:
#include
//stdio.h,string.h用于printf函数原型
#include
static unsigned long int SysTick = 0;
#define S_RECEVIER_SIZE 32
unsigned char RevBuffer[S_RECEVIER_SIZE];
int revDataCount = 0;
int revTempLength = 0;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void uart_init(void)
{
TMOD=0x20;//即0010 0000,定时器/计数器1,工作方式2
TH1=0xe6;//设置波特率为2400 24M
TL1=0xe6;
TR1=1;//启动定时器/计数器1
SCON=0x50; //0101 0000.串口工作方式1,允许串行控制
PCON=0x00;//设置SMOD=0
IE=0x90; //CPU允许中断,串行允许中断
TI=1;//直接使用printf必须加入此句才能实现发送
RI=1;
}
int main(void)
{
int a=99;
char *string="abde";
uart_init();
printf("hello system is restart\n");
while(1)
{
//puts("abcd");
//printf("%d %x %c %s %p\n",a,a,(char)a,string,string);
delay(1000);
}
return 0;
}
void uart_receiver(void) interrupt 4 //串口中断
{
unsigned char temp; //临时变量,用于缓冲收发数据
if(RI) // 判断是串口接收产生中断
{
RI = 0; // 清接收中断标志
temp = SBUF; // 接收到的数据写入缓冲BUF
//SBUF = temp; // 将收到的数据发回给电脑端
if (temp != '/n') // 以‘/n’做为接收字符串结束标志
{
RevBuffer[revDataCount] = temp;
revDataCount++;
}
else
{
printf("%s\n", &RevBuffer[0]);
revTempLength = revDataCount;
revDataCount = 0;
}
}
//if (TI) // 判断是串口发送产生中断
// TI = 0; // 清发送中断
}
上一篇:C51 ADC0804LCN 应用
下一篇:C51 特殊功能寄存器SFR的名称和地址
推荐阅读最新更新时间:2024-03-16 16:20