📄 freqe.c
字号:
/******************************************
功能:测量T0管脚出入的方波频率,只限0---250Hz
*******************************************/
#include<reg52.h>
sbit LED_DIG = P1^3;
sbit LED_COM = P1^2;
unsigned char counter = 0;
unsigned char Disbuf[]={0,0,0};
unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xFF};
//共阳极数码管码表,定位在ROM中
/********************************
显示延时
*********************************/
void Delay(void)
{
unsigned char i = 10;
while(i--);
}
/********************************
带参数传递的显示程序
*********************************/
void Display(unsigned char Dat[3])
{
static unsigned char i = 0;
unsigned LED_Posit = 0x01;
for(i = 0;i<3;i++) //只用3个数码管
{
P0 = DisCode[Dat[i]]; //送段选
LED_DIG = 1;
LED_DIG = 0;
P0 = LED_Posit; //选通一个数码管
LED_COM = 1;
LED_COM = 0;
Delay();
P0 = 0; //消隐
LED_COM = 1;
LED_COM = 0;
LED_Posit<<=1;
}
}/********************************
主函数
*********************************/
void main()
{
TMOD = 0x15;
TH1 = 50000>>8; //一次定时50ms
TL1 = 50000;
TL0 = 0;
TR0 = TR1 =ET1 = EA = 1;
while(1)
{
Display(Disbuf);
}
}
/********************************
T1中断服务子函数
*********************************/
void T1_SR() interrupt 3
{
TH1 = 50000>>8; //一次定时50ms
TL1 = 50000;
if(counter++==20) //定时一秒
{
counter = 0;
TR0 = 0;
Disbuf[2] = TL0/100;
Disbuf[1] = (TL0%100)/10;
Disbuf[0] = TL0%10;
TL0 = 0;
TR0 = 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -