📄 main.txt
字号:
#include <reg51.h>
#include <init.h>
#include<display.h>
//*** 函数定义 ***
void long_delay(void); // 长延时
void short_delay(void); // 短暂延时
void delay10ms(unsigned char); // 延时10MS
void write7279(unsigned char, unsigned char); // 写入到HD7279
unsigned char read7279(unsigned char); // 从HD7279读出
void send_byte(unsigned char); // 发送一个字节
unsigned char receive_byte(void); // 接收一个字节
////
void delay(void);
void Conversion(unsigned long f);
void Conversion_1(unsigned long f);
void cepin_init(void);
void cezhou_init(void);
void letbit_display(void);
void t1(void) interrupt 3 using 1 //定时器t1
{
if(ch_way==1)
{ //测频
count++;
TH1=(65536-50000)/256;
TL1=(65536-49980)%256;
}
else
{ //测周
count++;
TH1=0;
TL1=0;/**/
}
}
//测周
void t0(void) interrupt 1 using 0 //计数2次
{
TR1=1; //开定时
T0count++;
if(T0count==2)
{
//TR0=0;
TR1=0; //关定时
count1=TH1;
count2=TL1;
TH1=0;
TL1=0;
T0count=0;
change=1;
TR0=0;
}
}
//*** 主程序 *** //////
main()
{
unsigned long wait_cnter;
unsigned char f_zh=0; //1--定时计数已初始化
led8bit_disp();
while (1)
{
if(take==0)
{
wait_cnter++;
if(ch_way==0)
{ //测周
if(wait_cnter==100)
{
take=1;
wait_cnter=0;
if(f_zh==0) //定时初始化
{
cezhou_init();
f_zh=1;
}
TR0=1; //开外部计数计脉冲
}
else
{
take=0; //TR1=0;
TR0=0; //关外部计数计脉冲
f_zh=0;
} /**/
}
else
{ //测频
if(wait_cnter==100)
{
take=1;
wait_cnter=0;
if(f_zh==0)
{
cepin_init();
f_zh=1;
}
TR1=1;
TR0=1;
}
else
{
take=0;
TR1=0;
TR0=0;
f_zh=0;
}
}
led8bit_disp();
}
else
{
if(ch_way==0)
{ //测周
if(change==1)
{
freq=count*65536+count1*256+count2;
freq=1000000000/freq;
if(freq<1000000)
Conversion_1(freq); //转换
else
ch_way=1;
change=0;
take=0;
count=0;
} /* */
}
else
{ //测频法 1000HZ以上采用
if(count==20)
{
TR0=0; //停止计数
count1=TH0;
count2=TL0;
TH0=0;
TL0=0;
count=0;
freq=count1*256+count2;
if(freq>=1000)
Conversion(freq); //转换
else
ch_way=0;
take=0;
}
}
}
//////////////////////
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -