|
- #include <avr/io.h>
- #include<avr/interrupt.h>
- #include<avr/iom128.h>
- #define fosc 1000000
- void init_devices(void);
- void port_init(void);
- void time1_init(void);
- void port_init(void)//初始化io口
- {
- PORTA=0x00;
- DDRA=0xff;
- PORTB=0x00;
- DDRB=0x00;
- PORTC=0x00;
- DDRC=0x00;
- PORTD=0x00;
- DDRD=0x00;
- PORTF=0x00;
- DDRF=0x00;
- PORTE=0x00;
- DDRE=0x00;
- PORTG=0X00;
- DDRE=0X00;
- }
- //初始化128
- void init_devices(void)
- {
- cli();
- XDIV=0x00;//分频器
- XMCRA=0x00;//外部存储器控制寄存器 A
- port_init();
- usart_init();//初始化uart
- MCUCR=0X00;//MCU 控制寄存器
- EICRA=0X00;//外部中断控制器寄存器A(低电平触发);
- EICRB=0X00;//外部中断控制器寄存器B
- EIMSK=0X00;//用于选择中断引脚
- TIMSK=0X00;//定时器 / 计数器中断屏蔽寄存器
- ETIMSK=0X00;//扩展的定时器 / 计数器中断屏蔽寄存器
- sei();
- }
- void usart_init(void)
- {
- UBRR0H=(fosc/16/(9600+1))/256;
- UBRR0L=(fosc/16/(9600+1))%256;//1M下9600
- UCSR0A=0X00;
- UCSR0B=0xD8;
- UCSR0C=0X06;
- }
- /*
- */
- unsigned char count=0;
- int main(void)
- {
- init_devices();
- while(1)
- {
- putcha(count);
- };
- return 0;
- }
- void putcha(unsigned char x)
- {
- while(!(UCSR0A&0x20));
- UDR0=x;
- }
- ISR(USART0_TX_vect)
- {
- count++;
- }
- ISR(USART0_RX_vect)
- {
- unsigned char a=UDR0;
- PORTA=a;
- }
复制代码 |
|