USART 可以用中断和轮询,也可以用缓冲区做一个上层接口
*****************************************************************
//CPU:mega32
//编译器:iar
//USART一般编程方式
#include void usart_init(void); #define Fosc 8000000 char c = 'n'; put_s("acva"); while(1); void usart_init(void) UCSRB = (1< /* char get_char( void ) void put_char(char data) //发送字符串
void put_char(char data);
void put_s(char *p);
char get_char( void );
char *get_s(char *p);
#define Baud 9600
char str[9];
int main(void)
{
usart_init();
put_char( get_char() );
}
{
UCSRC = 0X86; //选择UCSRC,异步模式,无校验,1位停止位,8位数据位
UBRRH = (Fosc/16/Baud - 1)>>8; //选择UBRRH,设置波特率
UBRRL = (unsigned char)(Fosc/16/Baud - 1);
}
#pragma vector=USART_RXC_vect
__interrupt void receive(void)
{
c = UDR;
put_char('[');
put_char(c);
put_char(']');
}
*/
{
while ( !(UCSRA & (1<
}
{
while( !(UCSRA & (1<
UDR = data;//将要发送的数据送入发送寄存器
}
void put_s(char *p)
{
for(;*p!='