컴퓨터 지식 네트워크 - 컴퓨터 지식 - AT89S52는 기능을 구현하기 위해 타이머 2를 사용하여 1초의 시간을 어떻게 측정합니까?

AT89S52는 기능을 구현하기 위해 타이머 2를 사용하여 1초의 시간을 어떻게 측정합니까?

AT89S52 타이머 2는 자동 재로딩 기능을 실현할 수 있는 16비트 타이머입니다. 타이머 0과 타이머 1에 비해 장점이 있습니다. 물론 1초 타이밍을 달성하려면 루프도 사용해야 합니다. 12M 수정 발진기가 있는 16비트 타이머는 최대 약 65밀리초 동안만 시간을 측정할 수 있기 때문입니다.

#include lt;

#define uchar unsigned char

#define uint unsigned int

sbit Led=P0^0; LED 비트 정의

void Timer2() 인터럽트 5 //타이머 2 호출, 자동 다시 로드 모드

{

static uchar i=0 //정적 정의 변수 i

TF2=0; //타이머 2의 인터럽트 플래그는 소프트웨어에 의해 삭제되어야 합니다.

i; //카운팅 플래그는 1씩 증가합니다. >if(i==20 ) //1초 도달 여부 판단

{

i=0; //정적 변수를 0으로 초기화

Led =~Led; //LED 비트 찾기 Anti

}

}

void main()

{

RCAP2H=(65536-50000) /256; //카운터를 다시 로드하고 초기 값을 할당합니다.

RCAP2L=(65536-50000)256;

ET2=1; 타이머 2 인터럽트 활성화

EA=1; //전체 인터럽트 활성화

TR2=1; //타이머를 활성화하고 자동 다시 로드 모드로 설정

while( 1);

}

위 프로그램은 LED 조명을 1초 만에 켜고 끄는 기능을 구현합니다.

上篇: Apex 물리적 매크로가 봉인됩니까? 下篇: i3 10100에는 어떤 그래픽 카드를 사용해야 합니까?
관련 내용