728x90
proteus에서 회로도 그리고 아래 소스를 시뮬레이션
hex파일을 프로그램으로 올려줌
7 Segment - up & down 카운트
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char in, out =0;
DDRA = 0b11111100; // A0, A1만 입력 (0xFC) / 사용하지 않는 포트는 출력
DDRB = 0xFF;
while(1)
{
in = PINA;
switch (in)
{
case 0x01 : // Up count
while(PINA=0x01); // 스위치 때는 순간 while문 탈출(high->low)
out++;
break;
case 0x02 :
while(PINA=0x02);
out--;
break;
}
PORTB = out;
//_delay_ms(50);
}
return 0;
} |
7 Segment - 입출력
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char a;
DDRA = 0x00; // A 포트는 입력으로 사용, 생략 가능
DDRB = 0xFF; // B 포트는 출력으로 사용
DDRC = 0xFF; // 미사용 포트는 출력으로 설정
DDRD = 0xFF; // 미사용 포트는 출력으로 설정
DDRE = 0xFF; // 미사용 포트는 출력으로 설정
DDRF = 0xFF; // 미사용 포트는 출력으로 설정
DDRG = 0xFF; // 미사용 포트는 출력으로 설정
DDRH = 0xFF; // 미사용 포트는 출력으로 설정
DDRJ = 0xFF; // 미사용 포트는 출력으로 설정
DDRK = 0xFF // 미사용 포트는 출력으로 설정
while(1)
{
a = PINA;
switch(a)
{
case 0x01;
PORTB = 0x01;
break;
case 0x02;
PORTB = 0x02;
break;
case 0x04;
PORTB = 0x04;
break;
case 0x08;
PORTB = 0x08;
break;
case 0x10;
PORTB = 0x10;
break;
case 0x20;
PORTB = 0x20;
break;
case 0x40;
PORTB = 0x40;
break;
case 0x80;
PORTB = 0x80;
break;
default :
PORTB = 0;
break;
}
PORTB = a;
}
return 0;
} |
'Study > Embedded' 카테고리의 다른 글
2016-05-19 업무일지-Atmega2560_LCD출력 (0) | 2016.05.19 |
---|---|
2016-05-17 업무일지-7 segment (0) | 2016.05.17 |
5/12 avr 업무일지 (0) | 2016.05.12 |
5/2 디지털이란? / 저항, 인덕터, 캐패시터 (0) | 2016.05.02 |
2016 04 28 디코더 (0) | 2016.04.28 |