#define F_CPU 16000000UL
//CPU 클럭 시간 16MHz 설정
#include <avr/io.h>
#inlcude <util/delay.h>
int main(void)
{
DDRA = 0b11111111;
//PROTA의 8피트를 모두출력으로 사용하겠음
// DDRA = 0xFF; 와 동일
while(1)
{
PORTA = 0b11111110;
_delay_ms(1000); //1초 지연
PORTA = 0b11111111;
}
}
~연산자를 이용해서
이렇게 1일때 점등될 수 있도록 해줄 수 있다.
그런데 첫번째 비트는 부호비트 이기 때문에 한번 더 생각할 필요가 있다.
#define F_CPU 16000000UL
#include <avr/io.h>
#inlcude <util/delay.h>
int main(void)
{
DDRA = 0b11111111;
while(1)
{
for(int i = 0; i < 256 ; i ++)
{
PORTA = ~i;
_delay_ms(1000);
}
}
}
#define F_CPU 16000000UL
#include <avr/io.h>
#inlcude <util/delay.h>
int main(void)
{
DDRA = 0b11111111;
while(1)
{
PORTA = (unsigned char) ~0xaa; _delay_ms(1000);
PORTA = (unsigned char) ~0x55; _delay_ms(1000);
PORTA = (unsigned char) ~0x7e; _delay_ms(1000);
PORTA = (unsigned char) ~0x99; _delay_ms(1000);
}
}
# define F_CPU160000000UL
#include<avr/io.h>
#include<util/delay.h>
int main(void)
{
DDRA = 0b11111111;
unsigned char ledtable[] {
~0x01, ~0x02, ~0x04, ~0x08, ~0x10, ~0x20,
~0x40, ~0x80, ~0x40, ~0x20, ~0x10, ~0x08,
~0x04, ~0x02 };
}
while(1){
for(int i = 0; i < 14 ; i++){
PORTA = leㅇtable[i]
_delay_ms(1000);
}
}
# define F_CPU16000000UL
#include<avr/io.h>
#include<util/delay.h>
int main(void)
{
DDRA = 0b11111111;
int i = 0;
int value = 0x01;
while(1) {
PORTA = ~value;
_delay_ms(1000);
value <<== 1;
if(value == 0x100) value = 0x01;
}
}