這是avr操作的基礎實驗,適合初學者,高手就別看了.功能極簡單,就是讓PA0腳控制一個發(fā)光二極管亮與滅.定時部分,我使用了定時器,主要是為了熟悉一下avr的定時器操作.在做完這個實驗后,對avr的操作有了個大致的了解.發(fā)現(xiàn)avr與51還是有很多差別.現(xiàn)在才覺得普通51 單片機的功能確實弱了些.不過奇怪的是avr功能這么強勁,普及率卻遠遠不及51,呵呵. 以下是程序代碼,采用winavr編寫. #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> #define uchar unsigned char void port_init(void) { PORTA =0x00; DDRA =0xFF; PORTB=0xFF; DDRB=0x00; PORTC=0xFF; DDRC=0x00; PORTD=0xFF; DDRD=0x00; } void timer1_init(void) { TCCR1B=0X00; TCNT1H = 0xC2; TCNT1L = 0xF7;//初始值 TCCR1A = 0x00; TCCR1B = 0x04; TIMSK=0X04; } SIGNAL(SIG_OVERFLOW1) { TCNT1H = 0xC2; TCNT1L = 0xF7; PORTA=(~PORTA)&0X01; } int main(void) { cli(); port_init(); timer1_init(); sei(); while(1); } |