這是avr操作的基礎(chǔ)實(shí)驗(yàn),適合初學(xué)者,高手就別看了.功能極簡單,就是讓PA0腳控制一個(gè)發(fā)光二極管亮與滅.定時(shí)部分,我使用了定時(shí)器,主要是為了熟悉一下avr的定時(shí)器操作.在做完這個(gè)實(shí)驗(yàn)后,對avr的操作有了個(gè)大致的了解.發(fā)現(xiàn)avr與51還是有很多差別.現(xiàn)在才覺得普通51 單片機(jī)的功能確實(shí)弱了些.不過奇怪的是avr功能這么強(qiáng)勁,普及率卻遠(yuǎn)遠(yuǎn)不及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); } |