atmega128.txt

来自「*PC和ATMEGA128通信」· 文本 代码 · 共 76 行

TXT
76
字号
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 + =
减小字号Ctrl + -
显示快捷键?