[8051] 8051 타이머/인터럽트 응용
- 최초 등록일
- 2002.11.04
- 최종 저작일
- 2002.11
- 34페이지/ 한컴오피스
- 가격 1,000원
소개글
^^
목차
없음
본문내용
[프로그램 1] 기본 주기와 샘플링 시간을 이용하여 샘플링 시간 사이에 카운터된 외부 클럭의 low와 high 의 카운터 값 검출하여 주기와 주파수 계산
//
// Lab 6.1 - Timer/Counter(Measuring Pulse Freq)
// : Counting No. of pulse in given period
//
#include <reg51.h> /* define 8051 registers */
#include <stdio.h>
#include <stdlib.h>
#include <intrins.h>
#include "lcd.h" // lcd funtion set
#define F_PERIOD 5 // Fundamenatal period(5msec)
#define SAMPLE_PERIOD 100 // 기본주기5msec로 잡고100msec동안 체크
#define CLOCK_FREQ 11.0592 // MHz
// initialize timer/counter 1
TMOD = (TMOD & 0x0F) | 0x50; // 0x50을 OR 함으로서 TMOD의 6번째 비트가 SET 되어 외부 클럭을 사용, GATE1 = 0, 모드 1로 초기화
TL1 = 0;
TH1 = 0; // 외부클럭은 0부터 카운터를 시작 하므로 TL1, TH1모두 0으로 초기화
counter1_on = 0; // counter1을 0으로 초기화
// Interrupt Set
EA = 1; // IE 레지스터의 EA 비트 셋
ET0 = 1; // 타이머 0 인터럽트 사용
// measuring No. of pulse at every SAMPLE_PERIOD
period_count = (SAMPLE_PERIOD/F_PERIOD);
TR0 = 1; // 타이머 0 시작
while(1) // infinite loop
{
// Read Number of Pulse
ET0 =0; // Disable Timer 0 interrupt
lth1 = th1;
ltl1 = tl1;
ET0 = 1; // Enable Timer 0 interrupt
참고 자료
8051을 이용하여 타이머 인터럽트를 이용하여
PWM 을 만들거나 제어 합니다.