单片机与RS232串口通信C51程序

单片机与 RS232 串口通信 C51 程序 [日期:2008-07-29 ] [来源:东哥单片机学习网 www.picavr.com 作者:佚名] [字体:大 中 小] (投递新闻) 单片机与 RS232 串口通信 C51 程序 /*************************************************************************/ #i nclude "iom16v.h" #i nclude<macros.h> #define baud 9600 //波特率 #define fosc 8000000 //晶振 8MHZ /************************* 初始化函数**********************/ void USART_Init(void) { /*设置波特率*/ //UBRR=51; //UBRRH=(unsigned char)(baud>>8); // UBRRL=(unsigned char)(baud); UBRRL=(fosc/16/baud-1)%256; UBRRH=(fosc/16/baud-1)/256; /*接收器和发送器使能*/ UCSRB=(1<<RXEN)|(1<<TXEN); /*设置数据帧格式*/ UCsrc="/blog/(1<";<URSEL)|(1<<USBS)|(3<<UCSZ0); //8 个数据位,2 个停止位 } /********************数据发送函数(5~8 位)*********************/ void USART_Transmit(unsigned char data) { /*等待发送缓冲器为空*/ while(!(UCSRA&(1<<UDRE))) //UDRE 为时缓冲器为空 ; /*将数据放入缓冲器,发送数据*/ UDR=data; } /********************数据接受函数(5~8 位)*********************/ unsigned char USART_Receive(void) { /*等待接受数据*/ while(!(UCSRA&(1<<RXC))) //接受缓冲器中有未读出的数据时 RXC 置位,否则清零 ; /*从缓冲器中获取并返回数据*/ return UDR;

} /********************字符串发送函数(不含回车换行)***********************/ void USART_Transmit_string(unsigned char *s) { while (*s) { USART_Transmit(*s); s++; } } void main() { unsigned char i; unsigned char *p1,*p2; unsigned char a[]={" The key is:"}; unsigned char b[]={" Please press any key "}; p1=a; p2=b; USART_Init(); //USART_Transmit_string(p2); //USART_Transmit(0x0d); //回车换行 //USART_Transmit(0x0a); while(1) { i=USART_Receive(); if(i!=0) { //USART_Transmit_string(p1); USART_Transmit(i); //USART_Transmit(0x0d); //回车换行 //USART_Transmit(0x0a); } } }

参考链接:http://www.picavr.com/news/2008-07/7637.htm


相关文档

串口通信的C51单片机程序
单片机串行通信RS-232
RS-232接口与单片机串行通信程序设计
RS232串口通信在PC机与单片机通信中的应用
C51很简洁易懂的RS232串口通信接收程序
基于单片机RS232串行通讯的设计
RS232串口通信在PC机与单片机通信中的应用_潘方
单片机温控串口通讯C51代码
单片机与PC机RS232串行通讯设计
电脑版