C51 串口收发,printf, 接收字符串
来源:互联网 发布:java计算器布局 编辑:程序博客网 时间:2024/06/05 00:24
串口发送,接收
在while(1){printf(“xxx”); delay(100); //此处需要有delay函数;}
#include<reg51.h> //stdio.h,string.h用于printf函数原型 #include<stdio.h> 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<reg51.h> //stdio.h,string.h用于printf函数原型 #include<stdio.h> static unsigned long int SysTick = 0;#define S_RECEVIER_SIZE 32unsigned 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; // 清发送中断}
阅读全文
0 0
- C51 串口收发,printf, 接收字符串
- C51---串口通信---接收---发送
- keil C51 printf 重定向 串口
- Keil C51重定向printf到串口
- Keil C51重定向printf到串口
- Keil C51重定向printf到串口
- keil C51 重定向printf到串口
- C51串口中断接收和发送程序
- C51:串口通信接收与发送
- Arduino串口接收字符串
- C51串口中断接收和发送测试例程
- C51:串口接收和发送,查询与中断方法
- C51:串口接收和发送,查询与中断方法
- 80C51串口proteus 仿真终端接收乱码
- C51串口
- STM8 串口接收字符串问题
- stm32l011F4之 HAL库串口不定长收发(fifo接收)
- C51 printf format string
- iOS_Runtime2_方法交换
- 介绍几种java中网络通信的方式
- 集合的几种遍历方式
- mybatis 获取插入数据的自增id值
- 计算机视觉领域的一些牛人博客
- C51 串口收发,printf, 接收字符串
- java调用dll时回调函数的实现(jna)
- 训练日记8.21
- BZOJ4145: [AMPPZ2014]The Prices
- BootStrap入门
- YV12,I420,YUV420P的区别
- Mac 操作积累笔记
- spring初学
- Redis 学习笔记4: Redis 3.2.1 集群搭建