마이크로컴퓨터 실험 레포트(5)
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

마이크로컴퓨터 실험 레포트(5)에 대한 보고서 자료입니다.

목차

1. 하드웨어 연결

2. TMR0 & prescaler

3. TIMER0.c 프로그램 설명

4. TIMER0.c 프로그램 응용 설명

5. 레포트를 쓰고 나서...

본문내용

ec == 500){
RD0 = 0;
RD1 = 0;
}
if(m_sec == 1000){
RD0 = 1;
sec를 10으로 하여, 10초에 1번 불이 켜지도록 하였다.
m_sec = 0;
sec++;
if(sec == 10){
RD1 = 1;
초기 값을 주어 2회 이상 반복 할 수 있게 한다.
sec = 0;
}
}
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
INTCON = 0b10100000;
OPTION_REG = 0b00000001;
TMR0 = 0b00000110;
RD0 = 1;
while(1);
}
- TIMER0_3.c 프로그램 보다 변수를 하나 더 선언 하여 10초마다 RD1이 켜지는 프로그램을 만들었다.
4. TIMER0.c 프로그램 응용 설명
●TIMER0.c
#include
unsigned char data;
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
OPTION_REG을 0b00000000으로 주었다. ->1:2(클락이 많이 들어가기 때문에 속도가 빠르다(움직임이 눈에 보이지 않는다.)
TRISD = 0b00000000;
PORTD = 0b00000000;
OPTION_REG = 0b00000000;
TMR0 = 0;
data = 0b00000001;
TMR0에 0대신 127입력 또는 0b10000000을 입력하여 속도를 빠르게 만들었다.
while(1){
if(T0IF){
T0IF = 0;
TMR0 = 127;
PORTD = data;
data <<= 1;
if(data == 0b00000000)
data = 0b00000001;
}
}
}
●TIMER0_2.c
#include
unsigned char data;
void interrupt TIMER0_isr(void)
{
if(T0IF){
T0IF = 0;
TMR0 = 0;
PORTD = data;
data <<= 1;
if(data == 0b00000000)
data = 0b00000001;
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
INTCON에 0b10000000; 넣어 interrupt가 발생하지 않아, interrupt Service Routine이 동작하지 않게 되어 LED에 불이 들어오지 않게 된다.
TRISD = 0b00000000;
PORTD = 0b00000000;
INTCON = 0b10000000;
OPTION_REG = 0b00000111;
TMR0 = 0;
data = 0b00000001;
while(1);
}
●TIMER0_3.c
#include
unsigned int m_sec;
void interrupt TIMER0_isr(void)
{
m_sec에 100을 넣어주었다. m_sec가 100일 때, 듀티를 10%로 하여 시간을 줄일 수 있다.
if(T0IF){
T0IF = 0;
TMR0 = 0b00000110;
m_sec++;
if(m_sec == 100)
RD0 = 0;
m_sec에 1000을 넣어주었다. m_sec가 1000일 때, LED는 1초일 때 켜진다.
if(m_sec == 1000){
RD0 = 1;
m_sec = 0;
}
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
INTCON = 0b10100000;
OPTION_REG = 0b00000001;
TMR0 = 0b00000110;
RD0 = 1;
while(1);
}
●TIMER0_4.c
#include
unsigned int m_sec;
unsigned char sec;
void interrupt TIMER0_isr(void)
{
if(T0IF){
T0IF = 0;
TMR0 = 0b00000110;
m_sec++;
if(m_sec == 500){
RD0 = 0;
RD1 = 0;
}
if(m_sec == 1000){
RD0 = 1;
sec에 60을 넣어 주었다. 60이면 60초기에 1분에 1번씩 켜진다.
m_sec = 0;
sec++;
if(sec == 60){
RD1 = 1;
sec = 0;
}
}
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
INTCON = 0b10100000;
OPTION_REG = 0b00000001;
TMR0 = 0b00000110;
RD0 = 1;
while(1);
}
- TIMER0_4.c 프로그램을 용용하여 1분마다 RD1이 켜지는 프로그램을 만들었다.
5. 레포트를 쓰고 나서...
-TIMER0를 사용하여 내부의 타이머를 LED로 확인하기 위해 PORTD를 사용하여 실험을 하였고, TIMER를 바꿔 LED의 동작을 여러 형태로 바꾸어 프로그램만 만들어 실험하였습니다. 이 레포트를 쓰고 나서 TMR0와 Pre-scaler가 무엇인지 알게 되었으며, TIMER0의 여러 프로그램을 동작 시켜보면서 변수를 선언 하지 않고 동작 시켰을 때 되지 않아 고민을 잠시 하였습니다. 변수를 사용 할 때 변수 선언의 중요함과 변수 하나 하나의 기능이 중요하다는 것을 깨닫게 되었습니다. 프로그램을 조금씩 변형 시켜가면서 이 프로그램을 안보고 작성 할 수 있게 레포트를 보는데 내용이 무척 어렵지는 않은 듯하나, 머릿속으로 잘 들어오지 않습니다. 지금 까지 여러 프로젝트로 프로그램을 많이 작성 해 보았으나 중간고사가 끝나고 연습 할 때에 했던 프로그램은 작성이 잘 되는 편이지만, 새로 배운 것은 잘 안 되는 것 같습니다. 역시 직접 많이 해보는 것이 가장 중요하다는 것을 느꼈습니다. 감사합니다. ^^

키워드

전자,   전기,   컴퓨터,   마이컴,   공학
  • 가격1,000
  • 페이지수15페이지
  • 등록일2021.02.09
  • 저작시기2013.3
  • 파일형식한글(hwp)
  • 자료번호#1145121
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니