AVRmega16 LED 例程
例程1:点亮一个灯
#include<mega16.h> #include<delay.h> void main(void) { DDRA=0xff; while(1) { PORTA=0x01; }; }
例程2:运用8个LED显示出流水灯的效果(运用for语句)
#include<mega16.h> #include<delay.h> void main(void) { unsignedchar i; PORTA=0x00; DDRA=0xFF; while(1) { for(i=0;i<8;i++) { PORTA=1<<i ; delay_ms(200); } } }
例程
#include<mega16.h> #include<delay.h> void main(void) { unsignedchar a; PORTA=0x00; DDRA=0xFF; a=0b00000001; while(1) { if(a==0b00000000) a=0b00000001; PORTA=a; a=a<<1; delay_ms(200); } }
#include<mega161.h> #include<delay.h> void main() { unsignedchar display1[]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsignedchar display2[]={ 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsignedchar k,b; DDRA=0xff; while(1) { for(k=0;k<8;k++) { PORTA=display1[k]; delay_ms(150); } for(b=0;b<8;b++) { PORTA=display2[b]; delay_ms(150); } } }
#include<mega16.h> #include<delay.h> void main(void) { DDRA=0xff; DDRB=0x00; PORTB=0xff; while(1) { if(PINB.0==0) { PORTA=0x01; //delay_ms(1000); } else { PORTA=0x00; // delay_ms(1000); } }; }
例程4:用独立按键控制8个灯(运用switch语句)
牛刀小试:自己用switch编写:
#include<mega16.h> #include<delay.h> void main(void) { DDRA=0xff; DDRB=0x00; while(1) { switch(PINB) { case(0xfe): PORTA=0x01;break; case(0xfd): PORTA=0x02;break; case(0xfb): PORTA=0x04;break; case(0xf7): PORTA=0x08;break; case(0xef): PORTA=0x10;break; case(0xdf): PORTA=0x20;break; case(0xbf): PORTA=0x40;break; case(0x7f): PORTA=0x80;break; } }; }
1位8段数码管
例程1:使数码管从0-F跳动(运用一维数组)
#include<mega16.h>
#include<delay.h>