📄 myuart.c
字号:
#include"includes.h"
/*USART initiate*/
U8 rx_flag; //接收数据标志
U8 rx_buff; //接收数据缓存区
void uart0_init(void)
{
UBRR0H = BAUD_H;
UBRR0L = BAUD_L; //Set baud rate
UCSR0C = 0x0E; //Set frame format: 8data, 2stop bit
UCSR0B = ((1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0)); //Enable Receiver and Transmitter
//1:接受中断
//0:关闭中断
}
//接收中断
#pragma interrupt_handler uart0_rx_isr:19
void uart0_rx_isr(void)
{
//uart has received a character in UDR
PORTA=UDR0; //接收数据并输出到PA
}
//发送中断
#pragma interrupt_handler uart0_tx_isr:21
void uart0_tx_isr(void)
{
}
//USART0 数据寄存器空中断
#pragma interrupt_handler uart0_data_isr:20
void uart0_data_isr(void)
{
}
//call this routine to initialize all peripherals
//从RS232发送一个字节
void uart0_putchar(char c)
{
while(!(UCSR0A & 0x20));
UDR0 = c;
}
//输出一个字符串
void uart0_putstr(char* str)
{
while(*str)
{
uart0_putchar(*str);
str++;
}
}
//从RS232接收一个字节
int uart0_getchar(void)
{
unsigned char status,res;
if(!(UCSR0A & 0x80)) return -1; //no data to be received
status = UCSR0A;
res = UDR0;
if (status & 0x1c) return -1; // If error, return -1
return res;
}
char uart0_waitchar(void)
{
int c;
while((c=uart0_getchar())==-1);
return (char)c;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -