新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > avr uart仿真實驗 PROTEUS virtual terminal

avr uart仿真實驗 PROTEUS virtual terminal

作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
注意PROTEUS virtual terminal的設(shè)置如下圖。advanced properties中,一定要選擇inverted否則結(jié)果出錯

本文引用地址:http://2s4d.com/article/201611/316372.htm

#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;ifor(j=0;j<1141;j++);
}
void uart_init(uint baud)
{
UCSRB=0x00;
UCSRA=0x00; //控制寄存器清零
UCSRC=(1< //選擇UCSRC,異步模式,禁止 //校驗,1位停止位,8位數(shù)據(jù)位

baud=MCLK/16/baud-1; //波特率最大為65K
UBRRL=baud&0xff;
UBRRH=(baud>>8)&0X0F; //設(shè)置波特率
UCSRB=(1< //接收、發(fā)送使能,接收中斷使能
//SREG=BIT(7); //全局中斷開放
DDRD|=BIT(1); //配置TX為輸出(很重要)

}
void uart_sendB(uchar data)
{
while(!(UCSRA&BIT(UDRE)));//等待數(shù)據(jù)reg為空
UDR=data;//寫數(shù)據(jù)
while(!(UCSRA&BIT(TXC)));//等待數(shù)據(jù)發(fā)送結(jié)束
UCSRA|=BIT(TXC);//清除發(fā)送結(jié)束標(biāo)志
}

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);
}



關(guān)鍵詞: avruart仿真實

評論


技術(shù)專區(qū)

關(guān)閉