Red de conocimiento informático - Material del sitio web - ¿Cómo programar el temporizador 0 del microcontrolador para el conteo de pulsos externos?

¿Cómo programar el temporizador 0 del microcontrolador para el conteo de pulsos externos?

#include

#define uint unsigned int

#define uchar unsigned char uchar code tabel[]={ 0xC0,0xF9,0xA4,0xB0,0x99, 0x92, 0x82,0xF8,0x80,0x90};

uint num; //Declaración de variable de conteo sbit wei_ge=P2^0; //Definición del ángulo de control decimal

sbit wei_shi=P2^1 ; //Definición del ángulo de control decimal

sbit wei_bai=P2^2 ;

sbit wei_qian=P2^3; //Definición del ángulo de control de mil dígitos/*Subrutina de retardo*** ************************************************** * **/

retraso nulo(uint xms)

{

uint j;

for(;xms>0;xms - -)

for(j=110;j>0;j--);

}/* Subrutina de visualización de escaneo de tubos digitales********** ** ******************* *******************/

void shuma_show (fecha uint)

{

uchar ge,shi,bai,qian;//declaración de variable de visualización del tubo digital ge=date%1000;//conversión de dígitos

shi= fecha/10%10;//conversión de diez dígitos

bai=date/100%10;//conversión de cientos de dígitos

qian=date/1000;// miles Conversión de dígitos

wei_ge=1;//Encienda la pantalla digital

P0=tabel[ge];//Entrada de datos al tubo digital

retraso( ); //entrada de datos en el tubo digital

wei_ge=1; //entrada de datos en el tubo digital

P0=tabel[ge]; p>

wei_ge=1;//tab[ge];

delay(2);//retraso de visualización durante 2 ms

wei_ge=0;//apagar dígito display wei_shi =1;//activar la visualización de dígitos

P0=tabel[shi]; //entrada de datos en el tubo digital

delay(2);//retrasar la visualización durante 2 ms

wei_shi=0;//cerrar visualización de dígitos wei_bai=1;//abrir pantalla digital

P0=tabel[bai] //tubo digital de entrada de datos

delay(2);//Retraso de visualización 2ms

wei_bai=0;//Apagar la pantalla digital wei_qian=1;//Encender la pantalla digital

P0=tabel[ qian]; // Tubo digital de entrada de datos

retardo(2);// Visualización de retardo

2ms

wei_qian=0; //Apagar pantalla digital

}/*Subrutina de inicialización********************* ** ***** **********************************/

vacío inti ()

{

wei_ge=wei_shi=wei_bai=wei_qian=0;//inicializar cada puerto de E/S

TMOD=0x05;// Establecer contador 0 modo de trabajo 1, para contador de 16 bits y para conteo externo

TH0=0; //Los 8 bits superiores del contador se cargan con el valor inicial

TL0= 0; //Los 8 bits inferiores del contador Cargan valor inicial

TR0=1 //Abre contador

}//*Programa principal******* **************** ***** ******************************* **********/

void main()

{

inti();

while( 1)

{

num=TH0*255+TL0;//leer los datos del contador

if(num==10000){TH0=TL0= 0;}//Borrar el contador

shuma_show (num);//Pantalla de escaneo de tubo digital

}

}Su diagrama esquemático no está claro. Definí el puerto de E/S a voluntad. Acabo de terminar de escribir y el programa se compiló. Eso no es problema. Puede haber problemas, pero no son grandes. Espero que estén satisfechos. Muy pocas chicas aprenden sobre microcontroladores. ¿Qué tal si agregan un botón? Estoy aprendiendo AVR ahora y siento que 51 recursos no son suficientes. He realizado muchos proyectos. ¿Podemos intercambiar ideas juntos? Mi QQ:576689422