⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atmega128.txt

📁 *PC和ATMEGA128通信
💻 TXT
字号:
PC和ATMEGA128串口通信,ATMEGA以轮循方式发送,中断方式接受2008年03月23日 星期日 10:38
/*PC和ATMEGA128通信,ATMEGA以轮循方式发送,中断方式接受*/
#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]=='$') //$为停止标志
       {
       UCSR0B&=~(1<<RXCIE0); //关闭接受中断   
       str[in]='\0';
       COM_send(); //发送接受的字符串
       in=0; 
       
       flag=0;
       UCSR0B|=(1<<RXCIE0);//启动接受中断 
       }
       if(flag)
       in++;
      

}


void Uar_init(void)
{

in=0;
UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //0x98接受使能、发送使能、接受中断使能
UBRR0L=0x2f;
UBRR0H=0x00;
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00); //0x06设定数据位为8位


}                           
    
void COM_send(void)
{
   unsigned char point=0;
    while(str[point]!='\0')                                  
   { 
    
    while(!(UCSR0A&(1<<UDRE0)));//轮训方式发送
    UDR0=str[point];
    point++; 
    }   
}

void main(void)
{     

Uar_init(); 
    
       #asm("sei");//全局中断开启

       while(1);


}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -