- 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
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[마이크로프로세서 응용설계] 실습자료 - AVR_TEST2 본문
#include <iom128.h>
#include <ina90.h>
#define ON 1
#define OFF 0
#define DEF_USE 1
#define DEF_NOTUSE 0
#define UINT8 unsigned char
#define UINT16 unsigned int
// input setting
#define get_sw0() !PIND_Bit0
#define get_sw1() !PIND_Bit5
#define get_sw2() !PIND_Bit6
// output setting
#define set_led0(x) PORTE_Bit3 = !x
#define set_led1(x) PORTE_Bit4 = !x
#define set_led2(x) PORTE_Bit5 = x
#define set_led3(x) PORTE_Bit6 = x
#define Set_pullup(x) {SFIOR_PUD = !x; }
void delay_us(UINT16 time_us) // us 단위로 지연
{
UINT16 i;
for(i = 0; i < time_us; i++ ) // 4 cycle +
{
asm("NOP"); // 1 cycle +
asm("NOP"); // 1 cycle +
asm("NOP"); // 1 cycle +
asm("NOP"); // 1 cycle += 8 cycle for 8MHZ
}
} // 1초에 백만번
void delay_ms(UINT16 time_ms) // ms 단위로 지연
{
UINT16 i;
for ( i = 0; i < time_ms; i++ ) delay_us(1000);
}
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
}
void main(void)
{
int pre_sw_status; // 스위치의 이전 값 저장
int now_sw_status; // 스위치의 현재 값 저장
int led_status; // LED의 상태를 저장
int sw_on; // 스위치의 값 변경을 위한 값
init_mcu(); // mcu 초기화
while (1)
{
__watchdog_reset();
now_sw_status = get_sw0();
if ( now_sw_status == ON && pre_sw_status == OFF ) sw_on = ON;
pre_sw_status = now_sw_status; // 다음을 위해 현재 값 저장
delay_ms ( 10 );// 10 ms 지연 1초에 100번 스위치를 보고 led를 킨다
if ( sw_on )
{
sw_on = OFF;
if ( led_status == ON )
{
led_status = OFF;
set_led0 ( OFF );
}
else
{
led_status = ON;
set_led0 ( ON );
}
}
if ( get_sw1() ) set_led1 ( ON );
else set_led1 ( OFF );
if ( get_sw2() ) set_led2 ( ON );
else set_led2 ( OFF );
set_led3 ( ON );
};
}
'★─Multi Media > ☆─3학년 1학기' 카테고리의 다른 글
[마이크로프로세서 응용설계] 실습자료 - BCD2FND (0) | 2008.10.13 |
---|---|
[마이크로프로세서 응용설계] 실습자료 - Interrupt (0) | 2008.10.13 |
[마이크로프로세서 응용설계] 실습자료 - AVR_TEST (0) | 2008.10.13 |
[디지털신호처리] 연습문제 모음 (0) | 2008.10.13 |
[네트워크 프로그래밍] 3~4인 네트워크 기말 프로젝트 (1) | 2008.10.06 |