[마이크로프로세서응용실험] (결과) 실험 06: 시계 알람 설정
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[마이크로프로세서응용실험] (결과) 실험 06: 시계 알람 설정에 대한 보고서 자료입니다.

목차

문제 1. 알람이 울리는 동안 (즉, Alarm! 메시지가 문자LCD에 나타날 때) 동시에 LED가 켜지도록 프로그램을 수정하시오. 이때 LED가 켜지는 형태는 자유롭게 한다.

문제 2. 예비보고서의 프로그램은 외부 인터럽트 1을 누를 때 타이머 자체를 중지하도록 만들어져 있다. 이 프로그램을 수정하여 Alarm! 메시지가 뜰 때 외부 인터럽트 1을 누르면, 타이머는 그대로 동작하고 문자 LCD에 나타난 Alarm! 메시지만 없어지도록 하시오.

문제 3. 외부 인터럽트 1을 누르면 알람이 꺼졌다가 5초 후에 다시 울리도록 프로그램을 수정하시오. 이때 알람이 지속되는 시간은 10초로 한다.

※ 검토 및 고찰

본문내용

;
EA= 1;
TR0= 1;
while(1)
{
sprintf(clock_string, "%02d:%02d:%02d", clock[0], clock[1], clock[2]);
Line1();
Put_String(clock_string);
if(is_alarm == 1)
{
Line2();
Put_String("alarm!");
}
else
{
Line2();
Put_String(" ");
}
if(pause == 1)
{
Line3();
Put_String("Pause!");
}
else
{
Line3();
Put_String("Running");
}
}
}
void Int1_ISR(void) interrupt 2
{
alarm_delay = 5;// 외부 인터럽트1 버튼을 누르면 alarm_delay가 5가 되도록한다. 알람이 5초 동안 꺼졌다가 다시 작동하게 된다.
}
void Timer0_Int_ISR(void) interrupt 1
{
++t0_ovf_count;
if(t0_ovf_count >= 114)
{
t0_ovf_count = 0;
if(++clock[2] >= 60)
{
clock[2] = 0;
if(++clock[1] >= 60)
{
clock[1] = 0;
if(++clock[0] >= 24)
{
clock[0] = 0;
}
}
}
if(is_alarm == 1)
{
--alarm_duration;
if(alarm_duration == 0)
{
is_alarm = 0;
}
}
if(alarm_clock[0] == clock[0] &&
alarm_clock[1] == clock[1] &&
alarm_clock[2] == clock[2])
{
is_alarm = 1;
alarm_duration = 10;
}
if(alarm_delay > 0)// alarm_delay가 0보다 크면 if문 안으로 들어간다.
이 if문은 1초마다 확인된다
{
is_alarm =0;// 알람메시지를 사라지게 한다
--alarm_delay; // alarm_dealy를 1씩 감소한다
if(alarm_delay == 0) // alarm_delay가 0이되면 if문 안으로 들어간다.
{
is_alarm =1; // 알람메시지를 뜨게 한다.
alarm_duration =10; // 알람 지속시간을 10초로 설정한다.
}
}
}
}
※ 검토 및 고찰
이번 실험은 우리가 일상생활에서 항상 접하는 알람시계의 동작에 대해 살펴보았다.
알람이 울릴 때 LED를 켜지게 함으로써 시각적인 효과도 나타나고, 알람이 울리는데 시끄러운 알람을 끄거나, 조금만 더 자고일어나기 위해 알람을 더 늦추는 등 이러한 기본적인 동작원리를 구현해볼 수 있는 시간이었다. 실험을 다 마치고 나서보니 3번 문제를 풀 때 내가 한 방법이 아닌 다른 방법이 있다는 것을 알았다. 바로 현재시간에 5초를 더하는 방법인데 이 방법은 문제가 발생하게 된다. 초 부분이
56, 57, 58, 59초 일 때 외부인터럽트1 버튼을 누르면 5초가 더해져서 61, 62, 63, 64초가 된다. 60초 주기로 반복되는 시계에서 이것들은 비정상적이 되므로, 56, 57, 58, 59초 일 때에 따른 조건문이 또 추가되어야 한다. 이것은 프로그램이 복잡해지거나 오류가 발생할 가능성이 생기므로 새로운 변수를 지정해서 알람이 지연되도록하는 방법을 택하였다. 어떠한 프로그램이든지 한 가지 방법만이 아닌 여러 가지 방법으로 접근할 수 있고 그 중에서 프로그램이 최대한 간단하고 효율적으로 동작하는 방법을 찾는 연습이 필요할 것 같다. 어떻게 하면 알람의 더 다양한 기능을 구현할 수 있을지 생각해보는 것도 좋을 것 같다.
  • 가격2,800
  • 페이지수8페이지
  • 등록일2014.03.16
  • 저작시기2014.1
  • 파일형식한글(hwp)
  • 자료번호#908200
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니