UXDE dot Net Wordpress Themes

8051 타이머 예제

8051 발진기 주파수는 12로 나눈 다음 컨트롤러에 공급, 시간 타이머 수를 증분 (타이머 틱) 아래와 같이 결정할 수 있습니다. 진드기 = (1/(Fosc/12) $$tick = Fosc == 11.0592Mhz, 틱 시간은 틱 = 12/11.0592M = 1.08506944us = 1.085us C/T2는 카운터/타이머 2에 의해 계산될 펄스를 선택하는 데 사용되는 타이머/카운터 2 선택 비트입니다: 타이머 0은 그림과 같이 16비트 너비입니다. 이것은 2 8 비트 레지스터 TL0 및 TL1로 액세스 할 수 있습니다. 타이머 1도 마찬가지입니다. 8051 타이머와 카운터는 동일한 단위이지만,이 튜토리얼에서는, 우리는 토론을 단순화하기 위해 타이머 단위만 논의할 것이다. 도 1은, 기본 8051 타이머 유닛을 나타낸다. 레지스터 TCON 및 TMOD는 타이머 작업에 영향을 미칩니다. 클럭 주파수는 12로 나누어 타이머 단위에서 사용됩니다. 따라서 11.0592MHz 외부 크리스탈을 사용하는 경우 타이머는 921KHz의 주파수를 사용합니다. 따라서 타이머는 매 (1/921Khz) = 1.085μ 초마다 증가합니다.

안녕하세요 선생님. 위에서 설명 한 타이머 인터럽트에 대한 쉬운 설명을 주셔서 대단히 감사합니다. 코드에서. 이 예제 프로그램은 타이머/카운터 0을 16비트 타이머로 구성하는 방법을 보여 주며, 이 프로그램에서는 타이머/카운터 0을 구성하는 방법을 보여 주며, 타이머/카운터 0을 구성하는 방법을 보여 주며, 타이머/카운터 0을 16비트 타이머로 구성하는 방법을 보여 주며, 타이머/카운터 0을 인터럽트 서비스 루틴(ISR)은 타이머가 오버플로될 때마다 호출됩니다(0xFFFF에서 0x00000으로 이동). ISR에서 오버플로_카운트 변수 증분. EXEN2는 타이머 2 작업에 T2EX 핀을 포함하는 데 사용되는 타이머 2 외부 사용 비트입니다:이 레지스터에는 타이머 2의 동작을 제어하는 비트가 포함되어 있습니다. TF2 비트는 타이머 2 오버플로에 자동으로 설정됩니다. 다음 오버플로를 감지하려면 이 비트를 프로그램 내에서 지워야 합니다. 비트 RCLK 및 TCLK가 설정된 경우 오버플로는 TF2 비트에 영향을 주지 않습니다.

EXF2 비트는 캡처 또는 재로드가 T2EX 핀의 음수 전환으로 인해 발생할 때 자동으로 설정됩니다. T2CON 레지스터의 DCEN 비트가 설정되지 않는 한 인터럽트(활성화된 경우)를 생성합니다. EXF2 비트는 프로그램 내에서 지워야 합니다. RCLK는 직렬 포트의 수신 클럭으로 사용할 타이머를 결정하는 클럭 비트를 수신합니다: 이 레지스터에는 타이머 0 및 1의 동작을 제어하는 비트가 포함되어 있습니다. TMOD 레지스터를 사용하는 타이머의 작동 모드와 타이머/카운터 작동을 선택합니다. 타이머 0과 타이머 1은 8051에서 두 개의 타이머 레지스터입니다. 이 두 레지스터는 TMOD라는 동일한 레지스터를 사용하여 다양한 타이머 작동 모드를 설정합니다. 8051에는 타이머로 사용할 수 있는 두 개의 구속타이머가 있습니다(지연 생성)/카운터(외부 이벤트 수). 타이머 1은 직렬 통신에서 baud 속도를 생성하는 데 사용되며, 다음 자습서에서 설명합니다 아래 표는 8051 타이머의 세부 사항을 제공합니다. 앞서 설명했듯이, 우리는 8051 마이크로 컨트롤러에서 타이머 인터럽트를 사용하려고합니다.

그래서, 지금 세부 사항에 징 전에, 내가 먼저 우리가 이것을 구현하는 방법에 대한 몇 가지 빛을 던져 보자. 타이머는 8 비트 255에서와 같이 8 비트 모드에서 0에서 255까지 계산되며 타이머가 255 숫자에 도달하면 타이머가 오버플로되었다고 말합니다. 이제 타이머가 넘치면 intterupt을 생성하는 표시를 보냅니다. 타이머에는 값을 저장하는 레지스터가 거의 없습니다. 우리가 Timer0에 대해 이야기하는 경우 timer0은 TL0 레지스터에 그 값을 저장합니다. 이제 타이머가 10 대신 0에서 계산을 시작하고 TL0 레지스터에 10을 저장하고 10 대신 0에서 계산하고 255에 도달하면 오버플로됩니다. 이제 Timer0이 오버플로되면 TF0 비트가 높게 됩니다. TF0은 또 다른 레지스터 값이며, 1이 타이머가 가득 찼다는 것을 의미하고 0이면 타이머가 여전히 계산중임을 의미합니다. 그래서, 우리가 우리의 타이머에서 계산 하 고 핀 TF0를 확인 하는 방법. 이제 우선 Timer0을 사용하고 Timer1을 간략하게 살펴보겠습니다. TCON 레지스터는 비트가 타이머 작업을 직접 제어하는 레지스터 중 하나입니다.

이 레지스터의 4 비트만 이 용도로 사용되며 나머지는 인터럽트 제어에 사용됩니다. 모드 1은 16 비트 모드를 제외하고 MODE 0과 유사합니다.