采用定时器/计数器T0对外部脉冲进行计数

每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数,如此循环不止,采用方式1实现 求C语言解答 不要汇编语言

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void Delay_ms(uint u)
{while(u--);}
sbit P20=P2^0;//数码管百位选
sbit P21=P2^1;//数码管十位选
sbit P22=P2^2;//数码管个位选
uchar code a[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
uchar i=0;
uchar time=0;
void Display(uint k)
{

P0 = a[k/100%10];
P20=1;
Delay_ms(15); //显示5ms十位
P20=0;
P0 =a[k%100/10];
P21=1;
Delay_ms(15); //显示5ms个位
P21=0;
P0 = a[k%10];
P22=1;
Delay_ms(15); //显示5ms个位
P22=0;
}
void main()
{time=0;
EA=1;
EX0=1;
IT0=1;

while(1)
{
Display(time);
}
}
void t0()interrupt 1
{
EX0=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
time=0;
EX0=1;
TR0=0;
}
void int0()interrupt 0
{

time++;
if(time==100)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
time=0;
}
}
这个用数码管仿真可以
温馨提示:答案为网友推荐,仅供参考
相似回答