资源描述:
《AVR单片机与PC机串口通讯程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//-----------------------------------------------------------------//名称:单片机与PC机双向串口通讯仿真//-----------------------------------------------------------------//说明:单片机可接收PC机发送的数字字符,按下单片机K1按键时,单片机//可向PC机发送字符串.在Proteus环境下完成本实验时,需要//先安装VirtualSerialPortDriver和串口调试助手软件.//建议在VSPD中将COM3和COM4设为对联端口.Proteus中设COM
2、PIM//为COM4,在串口助手中选择COM3,然后实现单片机程序与XP下串口//助手的通讯.////本例缓冲为100个数字字符,如果发送的字符串末尾没有回车符,//则下次接收的字符串将在上次接收字符串的后面接着存放,//否则将重新从开始位置存放.////如果本次PC发送的数字串是先输入回车符,再输入任意数字串,//则本次新接收的数字串也将从缓冲开始位置存放.////-----------------------------------------------------------------#defineF_CPU4000000UL//4M晶振#include#incl
3、ude#include#defineINT8Uunsignedchar#defineINT16Uunsignedint//数字串接收缓冲struct{INT8UBuf_Array[100];//缓冲空间INT8UBuf_Len;//当前缓冲长度}Receive_Buffer;//清空缓冲标志INT8UClear_Buffer_Flag=0;//0-9的数字编码,最后一位为黑屏constINT8USEG_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};ch
4、ar*s="22.5",*p;//------------------------------------------------------------------//USART初始化//------------------------------------------------------------------voidInit_USART(){UCSRB=_BV(RXEN)
5、_BV(TXEN)
6、_BV(RXCIE);UCSRC=_BV(URSEL)
7、_BV(UCSZ1)
8、_BV(UCSZ0);UBRRL=(F_CPU/9600/16-1)%256;UBRRH=(F_CPU/960
9、0/16-1)/256;}//------------------------------------------------------------------//发送一个字符//------------------------------------------------------------------voidPutChar(charc){if(c=='')PutChar('r');UDR=c;while(!(UCSRA&_BV(UDRE)));}//----------------------------------------------------------------
10、--//显示所接收的数字字符(数字字符由PC串口发送,AVR串口接收)//------------------------------------------------------------------voidShow_Received_Digits(){INT8Ui;for(i=0;i11、----//主程序//------------------------------------------------------------------intmain(){Receive_Buffer.Buf_Len=0;DDRB=0x00;PORTB=0xFF;DDRC=0xFF;PORTC=0x00;DDRD=0x02;PORTD=0xFF;MCUCR=0x08;GICR=_BV(INT1)