- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[마이크로프로세서 응용설계] 실습자료 - 기말고사 본문
ADC를 이용하여 FND 값 출력
#include <ina90.h>
#include <iom128.h>
#define DEF_USE 1
#define DEF_NOTUSE 0
#define ON 1
#define OFF 0
#define UINT8 unsigned char
#define Set_pullup(x) {SFIOR_PUD = !x;}
#define Get_id_hi() (~PINA & 0xff)
#define Get_id_low() (~PINC & 0xff)
// input setting
#define Get_sw0() !PIND_Bit0
#define Set_fnd(UINT8) PORTB = UINT8 & 0xff
const UINT8 BCD2FND[6] =
{ 0x7d, // 0111 1101 0
0x0c, // 0000 1100 1
0xb5, // 1011 0101 2
0x9d, // 1001 1101 3
0xcc, // 1100 1100 4
0xd9 // 1101 1001 5
// 0xf9, // 1111 1001 6
// 0x4d, // 0100 1101 7
// 0xfd, // 1111 1101 8
// 0xdd // 1101 1101 9
};
// External Interrupt O service routine
#pragma vector = INT0_vect
__interrupt void ext_intO_isr(void)
{
__disable_interrupt();
if ( Get_id_hi() == Get_id_low() )
{
UINT8 temp8;
temp8 = ADCH / 43;
Set_fnd(BCD2FND[temp8]);
ADCSRA_ADIE = 1;
}
__enable_interrupt();
}
void init_mcu()
{
Set_pullup(DEF_USE);
DDRD = (UINT8) ~(0x61); // ~(01100001) = (10011110) = 0x9e
DDRE = (UINT8) ~(0x87); // ~(10000111) = (01111000) = 0x78
PORTD = 0x61; // 01100001
PORTE = 0x18; // 00011000
DDRB = 0xff;
PORTB = 0xff;
DDRF &= 0xfe;
}
void main(void)
{
// 초기화
init_mcu();
EIMSK |= 0x01;
EICRA |= 0x02;
ADMUX=0x20; // 11100000
// ADMUX_REFS1 = 1;
// ADMUX_REFS0 = 1;
// ADMUX_ADLAR = 1;
// ADMUX_MUX4 = 0;
// ADMUX_MUX3 = 0;
// ADMUX_MUX2 = 0;
// ADMUX_MUX1 = 0;
// ADMUX_MUX0 = 0;
ADCSR=0xef; // 11101111
// ADCSRA_ADEN = 1;
// ADCSRA_ADSC = 1;
// ADCSRA_ADFR = 1;
// ADCSRA_ADIF = 0;
// ADCSRA_ADIE = 1;
// ADCSRA_ADPS2 = 1;
// ADCSRA_ADPS1 = 1;
// ADCSRA_ADPS0 = 1;
__enable_interrupt();
while (1)
{
__watchdog_reset();
}
}
'★─Multi Media > ☆─3학년 1학기' 카테고리의 다른 글
[알고리즘] 해쉬 함수를 이용한 검색 (1) | 2008.10.13 |
---|---|
[마이크로프로세서 응용설계] 실습 AVR 하드웨어 회로도 (1) | 2008.10.13 |
[마이크로프로세서 응용설계] 실습자료 - ADC_channel (0) | 2008.10.13 |
[마이크로프로세서 응용설계] 실습자료 - BCD2FND (0) | 2008.10.13 |
[마이크로프로세서 응용설계] 실습자료 - Interrupt (0) | 2008.10.13 |