?? uart._c
字號:
/*串口通信模塊,使用之前,應(yīng)該在Main 函數(shù)中對串口進(jìn)行初始化,串口數(shù)據(jù)接收方式采用
中斷進(jìn)行,振蕩頻率修正參數(shù)不在EEPROM的0x1ff0中,使用PonyProg可以測試得OSCCAL=0xA1*/
#include <iom8v.h>
#include <macros.h>
#define fosc 8000000 //晶振8MHZ
#define baud 19200 //波特率
//使用中斷方式接收UART的輸入字符
#pragma interrupt_handler UartGet:12
unsigned char charInput=0x00;
void UartGet(void)
{charInput=UDR;}
void putchar(unsigned char c)/* 字符輸出函數(shù) */
{while (!(UCSRA&(1<<UDRE)));
UDR=c;}
unsigned char getchar(void)/* 字符輸入函數(shù)-查詢方式 */
{
while(!(UCSRA& (1<<RXC)));
return UDR;
}
/* 字符串輸出函數(shù) */
int puts(char *s)
{
while (*s)
{
putchar(*s);
s++;
}
return 1;
}
void uart_init(void)
{
//OSCCAL=read_flash(osc_address);
OSCCAL=0xA1;
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);//允許接收中斷、發(fā)送和接收
/*UBRRL=(fosc/16/(baud+1))%256;
UBRRH=((fosc/16/(baud+1))/256)&0b01111111;*/
UBRRL=(fosc/16/baud-1)%256;
UBRRH=((fosc/16/baud-1)/256)&0b01111111;
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位數(shù)據(jù)+1位STOP位
//SEI();由MAIN函數(shù)統(tǒng)一開放
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -