usart.c

来自「AVR单片机ATmega128的串口通讯程序」· C语言 代码 · 共 55 行

C
55
字号
#include<avr/io.h>
#include<stdio.h>
#include<avr/signal.h>
#include<avr/interrupt.h>

unsigned char j;

void port_init(void){
     DDRA=0XFF;
	 PORTA=0XFF;
	 DDRC=0X00;
	 PORTC=0XFF;
	}
	
void usart0_init(void){
     UBRR0L=0X19;
	 UBRR0H=0X00;
	 UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
	 UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
	}
	
void usart0_transmit(unsigned char data){
     while(!(UCSR0A&(1<<UDRE0)));
	 UDR0=data;
	}
	
SIGNAL(SIG_USART0_RECV){
     j=UDR0;
	 switch(j){
	     case 0X31: PORTA=0B11111110; break;
		 case 0X32: PORTA=0B11111101; break;
		 case 0X33: PORTA=0B11111011; break;
		 case 0X34: PORTA=0B11110111; break;
		 case 0X35: PORTA=0B11101111; break;
		 case 0X36: PORTA=0B11011111; break;
		 case 0X37: PORTA=0B10111111; break;
		 case 0X38: PORTA=0B01111111; break;
		 case 0X39: PORTA=0B00000000; break;
		 default: break;
		}
	}
	
int main(void){
     unsigned char i,m;
	 cli();
     port_init();
	 usart0_init();
	 sei();
	 for(m=0;m<10;m++){
	     i=PINC;
		 usart0_transmit(i);
		}
	 for(;;){
        }
    } 	

⌨️ 快捷键说明

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