|
这是avr操作的基础实验,适合初学者,高手就别看了.功能极简单,就是让PA0脚控制一个发光二极管亮与灭.定时部分,我使用了定时器,主要是为了熟悉一下avr的定时器操作.在做完这个实验后,对avr的操作有了个大致的了解.发现avr与51还是有很多差别.现在才觉得普通51单片机的功能确实弱了些.不过奇怪的是avr功能这么强劲,普及率却远远不及51,呵呵. 以下是程序代码,采用winavr编写.
#include
#include
#include
#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);
}
|
|