// 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++);
// 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++);
댓글 없음:
댓글 쓰기