2016년 4월 18일 월요일

led1.c 2016.04.19.

// led1.c
// led on & off

#include <avr/io.h>
void delay(int d1, int d2);

int main(void) {
    unsigned char led = 0xfe;
    int dir = 1;                // 1 == left, 2 == right
    DDRD = 0x0f;   
    // upper4bit : input
    // under4bit :

    while(1) {
        PORTD = led;            // on
        delay(1000, 1000);        // delay
        if(dir == 1) {
            led <<= 1;            // shift left 1bit
            led |= 0xf1;        // 1111 0001, 우측에 1을 삽입
            if(led == 0xff) {
                led = 0xfb;
                dir = 2;
            }
        }
        else {
            led >>= 1;
            led |= 0x80;
            if(led == 0xff) {
                led = 0xfd;
                dir = 1;
            }
        }

//        PORTD = 0b00001110;
//        delay(1000, 1000);
//        PORTD = 0b00001101;
//        delay(1000, 1000);
//        PORTD = 0b00001011;
//        delay(1000, 1000);
//        PORTD = 0b00000111;
//        delay(1000, 1000);
//        PORTD = LED;
//        PORTD = 0xfe;
//        delay(1000, 1000);
//        PORTD = 0xfe<<1 || 0x01;
//        delay(1000, 1000);
//        PORTD = 0xfe<<2;
//        delay(1000, 1000);
//        PORTD = 0xfe<<3;
//        delay(1000, 1000);

    }

    return(0);

}

void delay(int d1, int d2) {
    int i, j;

    for(i=0; i<d1; i++) 
        for(j=0; j<d2; j++);

댓글 없음:

댓글 쓰기