?? atmega128.txt
字號(hào):
PC和ATMEGA128串口通信,ATMEGA以輪循方式發(fā)送,中斷方式接受2008年03月23日 星期日 10:38
/*PC和ATMEGA128通信,ATMEGA以輪循方式發(fā)送,中斷方式接受*/
#include <mega128.h>
#define RXEN0 4
#define TXEN0 3
#define RXCIE0 7
#define UDRE0 5
#define UCSZ00 1
#define UCSZ01 2
#define UCSZ02 2
#define RXC0 7
char str[20];
unsigned char in;
void Uar_init(void);
void COM_send(void);
interrupt[19] void uart0(void)
{
bit flag=1;
str[in]=UDR0;
if(str[in]=='$') //$為停止標(biāo)志
{
UCSR0B&=~(1<<RXCIE0); //關(guān)閉接受中斷
str[in]='\0';
COM_send(); //發(fā)送接受的字符串
in=0;
flag=0;
UCSR0B|=(1<<RXCIE0);//啟動(dòng)接受中斷
}
if(flag)
in++;
}
void Uar_init(void)
{
in=0;
UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //0x98接受使能、發(fā)送使能、接受中斷使能
UBRR0L=0x2f;
UBRR0H=0x00;
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00); //0x06設(shè)定數(shù)據(jù)位為8位
}
void COM_send(void)
{
unsigned char point=0;
while(str[point]!='\0')
{
while(!(UCSR0A&(1<<UDRE0)));//輪訓(xùn)方式發(fā)送
UDR0=str[point];
point++;
}
}
void main(void)
{
Uar_init();
#asm("sei");//全局中斷開(kāi)啟
while(1);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -