728x90

bcd.DSN


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

+ Recent posts