목차
1.문제
2.분석
3.설계
4.고찰
5.코딩
2.분석
3.설계
4.고찰
5.코딩
본문내용
else if(alarm_s[k] == 30)
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] - 30))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 30))
{
alarm_z[k] = 1;
}
}
}
}
else if(alarm_s[k] == 20)
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] -20))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 40))
{
alarm_z[k] = 1;
}
}
}
}
else if(alarm_s[k] == 10)
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] - 10))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 50))
{
alarm_z[k] = 1;
}
}
}
}
else alarm_z[k] = 0;
}
}
// 알람 led 표시 //
void Alarm_On(void)
{
for(k = 0 ; k <= 9 ; k ++)
{
alarm |= alarm_z[k];
}
if(alarm == 1)
{
led = ~led;
}
else
{
led = 0xFF;
}
PORTB = led;
}
// 시간 카운트 함수 //
void Count_Up(void)
{
if(count == 10)
{
count = 0;
second++ ;
Alarm_On();
if(second == 60)
{
second = 0;
minute++;
Alarm_Compare();
if(minute == 60)
{
minute = 0;
hour++;
if(hour == 24)
{
hour = 0;
}
}
}
}
Time_Display();
}
void Pat_Change(void)
{
if(pattern[j] >= 8)
{
for(i = 0; i < 48; i++)
{
Command(0x40 + i); //문자 패턴 등록
Data(cg_pat2[i]);
}
}
else
{
for(i = 0; i < 48; i++)
{
Command(0x40 + i); //문자 패턴 등록
Data(cg_pat1[i]);
}
}
}
void Eeprom_Write(void)
{
pStr = memo; //메모 쓰기
addr = 0x00;
for(k = 0; k <=69 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = hour_s; //시간 쓰기
addr = 0x50;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = minute_s; //분 쓰기
addr = 0x60;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = pattern; //종류 쓰기
addr = 0x70;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
}
void Eeprom_Load(void)
{
addr = 0;
for(k = 0 ; k <=9 ; k++) //메모 로드
{
for(i = 0 ; i <= 6; i++)
{
EEAR = addr++;
EECR |= 0x01;
memo[k][i] = EEDR;
}
}
addr = 0x50;
for(k = 0 ; k <= 9 ; k++) //시간 로드
{
EEAR = addr++;
EECR |= 0x01;
hour_s[k] = EEDR;
}
addr = 0x60;
for(k = 0 ; k <= 9 ; k++) //분 로드
{
EEAR = addr++;
EECR |= 0x01;
minute_s[k] = EEDR;
}
addr = 0x70;
for(k = 0 ; k <= 9 ; k++) //종류 로드
{
EEAR = addr++;
EECR |= 0x01;
pattern[k] = EEDR;
}
}
// 타이머 카운트1 1/16us * 64 * (65536 - 40536) = 0.1 sec //
interrupt [TIM1_OVF] void timer_int1(void)
{
TCNT1 = TIME;
if(set !=1 & set !=3)
{
count++;
Count_Up();
}
}
interrupt [EXT_INT0] void external_int0(void)
{
position = 0; // 분 위치로 초기화
j = 0;
position1 = 8;
set++; // 인터럽트 발생시 모드 변경
if(set == 4)
{
set = 0;
}
if(set != 0)
{
Command(CURON);
}
else Command(CUROFF);
Time_Display();
Mode_Display();
}
interrupt [EXT_INT1] void external_int1(void)
{
if(set == 3)
{
position1++;
if(position1 == 11)
{
position1 = 0;
}
}
else position = ~position; //인터럽트 발생시 자리 이동
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] - 30))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 30))
{
alarm_z[k] = 1;
}
}
}
}
else if(alarm_s[k] == 20)
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] -20))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 40))
{
alarm_z[k] = 1;
}
}
}
}
else if(alarm_s[k] == 10)
{
if(minute_s[k] > alarm_s[k])
{
if(hour == hour_s[k])
{
if(minute == (minute_s[k] - 10))
{
alarm_z[k] = 1;
}
}
}
else
{
if(hour == hour_s[k]-1)
{
if(minute == (minute_s[k] + 50))
{
alarm_z[k] = 1;
}
}
}
}
else alarm_z[k] = 0;
}
}
// 알람 led 표시 //
void Alarm_On(void)
{
for(k = 0 ; k <= 9 ; k ++)
{
alarm |= alarm_z[k];
}
if(alarm == 1)
{
led = ~led;
}
else
{
led = 0xFF;
}
PORTB = led;
}
// 시간 카운트 함수 //
void Count_Up(void)
{
if(count == 10)
{
count = 0;
second++ ;
Alarm_On();
if(second == 60)
{
second = 0;
minute++;
Alarm_Compare();
if(minute == 60)
{
minute = 0;
hour++;
if(hour == 24)
{
hour = 0;
}
}
}
}
Time_Display();
}
void Pat_Change(void)
{
if(pattern[j] >= 8)
{
for(i = 0; i < 48; i++)
{
Command(0x40 + i); //문자 패턴 등록
Data(cg_pat2[i]);
}
}
else
{
for(i = 0; i < 48; i++)
{
Command(0x40 + i); //문자 패턴 등록
Data(cg_pat1[i]);
}
}
}
void Eeprom_Write(void)
{
pStr = memo; //메모 쓰기
addr = 0x00;
for(k = 0; k <=69 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = hour_s; //시간 쓰기
addr = 0x50;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = minute_s; //분 쓰기
addr = 0x60;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
pStr = pattern; //종류 쓰기
addr = 0x70;
for(k = 0; k <=9 ; k++)
{
while((EECR & 0x02) == 0x02);
EEAR = addr++;
EEDR = *pStr++;
EECR |= 0x04;
EECR |= 0x02;
}
}
void Eeprom_Load(void)
{
addr = 0;
for(k = 0 ; k <=9 ; k++) //메모 로드
{
for(i = 0 ; i <= 6; i++)
{
EEAR = addr++;
EECR |= 0x01;
memo[k][i] = EEDR;
}
}
addr = 0x50;
for(k = 0 ; k <= 9 ; k++) //시간 로드
{
EEAR = addr++;
EECR |= 0x01;
hour_s[k] = EEDR;
}
addr = 0x60;
for(k = 0 ; k <= 9 ; k++) //분 로드
{
EEAR = addr++;
EECR |= 0x01;
minute_s[k] = EEDR;
}
addr = 0x70;
for(k = 0 ; k <= 9 ; k++) //종류 로드
{
EEAR = addr++;
EECR |= 0x01;
pattern[k] = EEDR;
}
}
// 타이머 카운트1 1/16us * 64 * (65536 - 40536) = 0.1 sec //
interrupt [TIM1_OVF] void timer_int1(void)
{
TCNT1 = TIME;
if(set !=1 & set !=3)
{
count++;
Count_Up();
}
}
interrupt [EXT_INT0] void external_int0(void)
{
position = 0; // 분 위치로 초기화
j = 0;
position1 = 8;
set++; // 인터럽트 발생시 모드 변경
if(set == 4)
{
set = 0;
}
if(set != 0)
{
Command(CURON);
}
else Command(CUROFF);
Time_Display();
Mode_Display();
}
interrupt [EXT_INT1] void external_int1(void)
{
if(set == 3)
{
position1++;
if(position1 == 11)
{
position1 = 0;
}
}
else position = ~position; //인터럽트 발생시 자리 이동
추천자료
- 조도측정기
- 조도측정기 프로그램
- ATmega128 과 PXA255를 이용한 자동온실관리 시스템
- Microprocessor, PIC, AVR 기초 자료 ( 슈미트트리거, 리&#49489;회로, Latch, RS232,RS...
- [전자공학과] 마이크로컨트롤 실습결과 보고서 - led 를 순차적으로 on/off 시키는 프로그램...
- [마이크로컴퓨터] 키채터링
- [마이크로컴퓨터] 오버플로우란
- 마이크로 세그먼트 & LED
- 마이크로 계산기 설계
- [마이크로컴퓨터] 파워power 제작 및 LED ON/OFF
- [마이크로 컴퓨터] PC와 ATmega128 보드의 비동기 USART 통신
- [마이크로컴퓨터] LCD 디스플레이와 float(플로트) 출력
소개글