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

소개글

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

목차

1. 하드웨어 연결1

2. T1CON register

3. TIMER1.c와 TIMER1_2.c의 차이

4. TIMER1_3.c~TIMER1_5.c

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

본문내용

b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
T1CON = 0b00001011;
TMR1H = 0x80;
TMR1L = 0x00;
INTCON = 0b11000000;
PIE1 = 0b00000001;
while(1);
}
- 대부분의 전자시계에 들어가는 32768Hz crystal을 이용하여 1초마다 RD0의 LED가 깜빡이는 프로그램이다.
● Timer1_4.c
#include
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
unsigned char sec;
void interrupt TIMER1_isr(void)
{
if(TMR1IF){
TMR1IF = 0;
TMR1H = 0x80;
TMR1L = 0x00;
RD0는 1초마다 불이 켜진다.
RD0 = 1;
1초 씩 증가 하는 sec가 10초가 되었을 때, RD1이 켜진다.
if(++sec == 10){
sec = 0;
RD1 = 1;
}
PORTD에 0b00000000;을 주어 RD0와 RD1을 동시에 끈다.
__delay_ms(50);
PORTD = 0b00000000;
}
}
void main(void)
{
OSCCON = 0b01100000;
T1CON에 1011을 넣어 32768Hz crystal을 사용한다.
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
TMR1H와 TMR1L에 0x8000을 나누어 넣어 줌으로, 1초마다 interrupt 서비스 루틴을 실행한다.
T1CON = 0b00001011;
TMR1H = 0x80;
TMR1L = 0x00;
INTCON = 0b11000000;
PIE1 = 0b00000001;
while(1);
}
- Timer1_3.c을 응용하여 T1CON에 1011을 넣어 줌으로써, 32768Hz crystal을 이용하여 1초마다 RD0의 LED가 깜빡이고, 10초마다 RD1이 깜빡이는 프로그램을 만들었다. 결과는 아래 그림에서 확인 할 수 있다.
● Timer1_5.c
#include
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
sec를 사용하기 위해 변수를 선언 하였다.
unsigned char sec;
TMR1H와 TMR1L 값에 0x8000 아닌 0x0000을 넣어주면 카운팅 스타트 점이 바뀌어 shift time이 1초에서 2초로 바뀐다.
void interrupt TIMER1_isr(void)
{
if(TMR1IF){
TMR1IF = 0;
TMR1H = 0x80;
PORTD 값이 sec++이므로 1초 씩 증가된다.
TMR1L = 0x00;
PORTD = sec++;
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
T1CON에 1011을 넣어 32768Hz crystal을 사용한다.
TRISD = 0b00000000;
PORTD = 0b00000000;
T1CON = 0b00001011;
TMR1H = 0x80;
TMR1L = 0x00;
INTCON = 0b11000000;
PIE1 = 0b00000001;
while(1);
}
- 이 프로그램도 마찬가지로 32768Hz crystal을 이용하였고, 0초부터 255초 까지 LED로 표현 할 수 있는 프로그램이다. 결과는 아래의 그림으로 확인 할 수 있다.
● Timer1_5_2.c
#include
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000
#endif
프로그램에 사용할 변수를 선언한다.
unsigned char sec, t_sec = 0, DATA;
void interrupt TIMER1_isr(void)
{
if(TMR1IF){
TMR1IF = 0;
sec가 10이 되었을 때, t_sec는 1씩 증가하고, t_sec가 6이 되면, 초기 값 0으로 한다.
TMR1H = 0x80;
TMR1L = 0x00;
if(++sec == 10){
sec = 0;
if(++t_sec == 6)
t_sec = 0;
“ | ”는 OR을 뜻한다.
t_sec를 왼쪽으로 4칸 미루어 LED에 표현 하도록 하였다.
}
DATA = sec | (t_sec << 4);
PORTD = DATA;
}
}
void main(void)
{
OSCCON = 0b01100000;
ANSEL = 0b00000000;
TRISD = 0b00000000;
PORTD = 0b00000000;
T1CON = 0b00001011;
TMR1H = 0x80;
TMR1L = 0x00;
INTCON = 0b11000000;
PIE1 = 0b00000001;
while(1);
}
- LED로 카운트하여 BCD코드를 표현 할 수 있는 시계 프로그램이다.
sec(왼쪽 4비트)는 0~9를 표현, t_sec(오른쪽 4비트)는 0~5까지 표현한다. 이 프로그램으로 1분을 확인 할 수 있다. 이 프로그램을 응용하여 1시간 하루 등등 표현 할 수 있다. 결과는 아래의 그림에서 확인 할 수 있다.
5. 레포트를 쓰고 나서...
- TIMER1을 사용하여 내부의 타이머를 LED로 확인하기 위해 PORTD를 사용하여 실험을 하였고, TIMER를 바꿔 LED의 동작을 여러 형태로 프로그램을 만들어 실험하였습니다. 이 레포트를 통해 시간을 컨트롤 할 수 있는 방법으로 클락 주파수 OSCCON과 Pre-scaler, 타이머의 값 이 3가지 값을 바꿔 LED가 이동하는 시간을 내 마음대로 변형 시킬 수 있는 것을 1번 더 확인 하였고, 32768Hz crystal을 이용하여 전자시계에 다 들어간다는 1초마다 RD0의 LED가 깜빡이고, 10초마다 RD1이 깜빡이는 프로그램도 만들어 보았습니다. 수업 시간에 들은 내용과 프로그래밍을 통해 배운 것은 저에게 어렵게 다가왔기 때문에 수업 내용을 숙지하는 것이 잘 되지 않았습니다. 레포트를 통해 한번 더 복습함으로써, 잘 이해가 되지 않은 부분을 조금이나마 이해가 되었습니다. 감사합니다.^^

키워드

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