×
单片机 > 单片机程序设计 > 详情

avr uart仿真实验 PROTEUS virtual terminal

发布时间:2020-05-28 发布时间:
|
注意PROTEUS virtual terminal的设置如下图。advanced properties中,一定要选择inverted否则结果出错

#include
#include
//#include
//#include "skey.c"
#define uchar unsigned char
#define uint unsigned int
#define MCLK 8000000
uchar str[]="http://hi.baidu.com/282280072/blog";
void delay(uint ms)
{
   uint i,j;
for(i=0;i for(j=0;j<1141;j++);
}
void uart_init(uint baud)
{
   UCSRB=0x00; 
   UCSRA=0x00;       //控制寄存器清零
   UCSRC=(1<                                                         //选择UCSRC,异步模式,禁止 //校验,1位停止位,8位数据位                       
                                                        
   baud=MCLK/16/baud-1;    //波特率最大为65K
   UBRRL=baud&0xff;              
   UBRRH=(baud>>8)&0X0F;      //设置波特率
   UCSRB=(1<                                                        //接收、发送使能,接收中断使能
   //SREG=BIT(7);                 //全局中断开放
   DDRD|=BIT(1);                 //配置TX为输出(很重要)

}
void uart_sendB(uchar data)
{
   while(!(UCSRA&BIT(UDRE)));//等待数据reg为空
UDR=data;//写数据
while(!(UCSRA&BIT(TXC)));//等待数据发送结束
UCSRA|=BIT(TXC);//清除发送结束标志
}

void uart_sentString(uchar *s)
{
   while(*s)
{
   uart_sendB(*s++);
}

}
void main()
{
   uchar i=4;
uchar j='a';
   
   uart_init(19200);
for(i=0;i<20;i++)
{
   uart_sendB(j+i);
    uart_sendB(j+i);
    //delay(15);
    //下面两条命令输出换行
    uart_sendB(0x0d);
    uart_sendB(0x0a);
    //delay(15);
   }
   
   uart_sentString(str);
//uart_sendB(j);
//uart_sendB(j+1);
//uart_sendB(j+2);
}

 

 

关键字:avr  uart  仿真实验 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向