📄 usart._c
字号:
//Project : USART
//Writer :youhu
//ICC-AVR application builder : 2007-4-24 16:45:33
// Target : M16
// Crystal: 8.0000Mhz
// USART initialize
// desired baud rate: 115200
// actual: baud rate:111111 (3.7%)
// char size: 8 bit
// parity: Disabled
#include <iom16v.h>
#include <macros.h>
unsigned char mes;
void uart_init(void)
{
UCSRB = 0x00;
UCSRA = 0x03; //异步模式,禁止奇偶校验,8位数据帧
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x67; //波特率设置为115200
UBRRH = 0x00;
UCSRB = 0xF8; //允许串口发送和接收,接收和发送中断使能
}
/*
void USART_Transmit( unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)) );
UDR = data;
}
*/
unsigned char USART_Receive( void ) //串口从主机接收数据
{
while ( !(UCSRA & (1<<RXC)) ); // 等待接收数据
return UDR; // 从缓冲器中获取并返回数据
}
/*
#pragma interrupt_handler uart0_rx_isr:12 //接收中断函数
void uart0_rx_isr(void)
{
//wait a task;
}
*/
#pragma interrupt_handler uart0_tx_isr:14 //发送中断函数
void uart0_tx_isr(void)
{
mes = USART_Receive();
while ( !( UCSRA & (1<<UDRE)) ); // 等待发送缓冲器为空
UDR = mes; // 将数据放入缓冲器,发送数据
}
void init_devices(void) //初始化各中断
{
CLI();
uart_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00;
SEI();
}
void main(void)
{
init_devices();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -