인하대 전자회로실험2 6주차 LED왕복 보고서
- 최초 등록일
- 2020.07.07
- 최종 저작일
- 2019.11
- 5페이지/ MS 워드
- 가격 2,000원
목차
I. 과제2. 스위치를 사용하여 interrupt를 통해서 스위치를 누르면 LED가 왕복하면서 움직이고, 다시 스위치를 누르면 LED가 멈추는 프로그램 작성.
II. 과제3 및 고찰
본문내용
과제2.
스위치를 사용하여 interrupt를 통해서 스위치를 누르면 LED가 왕복하면서 움직이고, 다시 스위치를 누르면 LED가 멈추는 프로그램 작성.
#define F_CPU 16000000UL
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
int msec=0, sec=0;
int num=0x01; //아래에서 LED제어목적으로 int형 변수를 하나 선언하였다.
void USART_Init(unsigned int ubrr){
UBRR0H=(unsigned char)(ubrr>>8);
UBRR0L=(unsigned char)ubrr;
UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
<중 략>
과제3 및 고찰
위의 동작은 인터럽트를 사용해 무한 반복문인 while문안에서 스위치의 동작이 작동하도록 설계되었다. main함수안에서 왕복 LED동작을 위한 PORTA=0xnn 문의 선언 외에도 num의 변수를 새로 도입해 옆에 똑같이 정의해주었는데, 이는 LED가 멈춘 지점에서 다시 시작하게 하기위해 필수이다. sec는 내부 인터럽트에의해 main함수와 상관없이 계속 sec++되고있는데, sec에 의한 나머지에 의해 LED가 동작되고있으니, 인터럽트문을 이용해서 정지시켜도 , 다시 동작 시킬때는 이미 바뀌어 버린 sec의 지배를 받을 것이기 때문이다.
참고 자료
없음