AVR学习札记之跑马灯程序

用惯了51,51的I/O口控制比较容易,不需要进行大量的位位操作,而AVR因其I/O口与51相比具有强大的拉,推电流的能力,其端口操作亦较烦琐。故在程序中采用一定数量的宏定义,就会使代码编写量大大降低,下面我以一个跑马灯程序为例来介绍一下这样做的优点。

//环境:AVRSTUDIO+Winavr

//硬件:PB0、PB1、 PB2、 PB3连LED  

#define F_CPU 1000000
#include <avr/io.h>
#include <avr/delay.h>
#define SET0 PORTB|=_BV(0)
#define CLR0 PORTB&=~_BV(0)


#define SET1 PORTB|=_BV(1)
#define CLR1 PORTB&=~_BV(1)

#define SET2 PORTB|=_BV(2)
#define CLR2 PORTB&=~_BV(2)

#define SET3 PORTB|=_BV(3)
#define CLR3 PORTB&=~_BV(3)
int main()
{
 while(1)
 {
  CLR3;
  SET0;
  _delay_ms(500);

  CLR0;
  SET1;
  _delay_ms(500);

  CLR1;
  SET2;
  _delay_ms(500);

  CLR2;
  SET3;
  _delay_ms(500);
 }
}

 

你可能感兴趣的:(AVR学习札记之跑马灯程序)