📄 pm01.c
字号:
#include <reg52.h>
#include <source7279.h>
#define uchar unsigned char
#define uint unsigned int
void dis_phase();
void dis_fre();
void transdata();
void key_process();
uint Afre;
uchar count_time2,count_phase,count_p,key_number;
bit readdata_flag,starttime_flag,cycle_flag,disp_flag,disfre_flag;
bit cycle_signal;
sbit test=P2^1;
sbit trans=P3^0;
sbit control=P3^1;
sbit P00=P3^7;
void Time2_initial()
{
T2CON=0x00;
RCAP2H=0x4c;
RCAP2L=0x00;
TR2=1;
TR0=1;
}
main()
{
TMOD=0x15;
TF1=0;
IE=0X00;
EA=1;
ET2=1;
EX0=0;
trans=0;
Time2_initial();
trans=0;
starttime_flag=0;
cycle_signal=0;
initial_7279();
while(1)
{
if(starttime_flag)
{
Time2_initial();
starttime_flag=0;
EX0=1;
}
if(readdata_flag)
{
transdata();
readdata_flag=0;
//P20=~P20;
}
if(cycle_signal)
{
if(disp_flag)
dis_phase();
cycle_signal=0;
}
if(disfre_flag)
{
if(!disp_flag)
dis_fre();
disfre_flag=0;
starttime_flag=1;
Afre=0;
//EX0=1;
}
if(control)
EX0=1;
if (!key) //如果有键按下
{
key_number=read7279(CMD_READ);
key_process();
while (!key); //等待按键放开
}
}
}
void keyprocess()
{
switch(key_number)
{
case 0x20:{disp_flag=1;};break;
case 0x22:{disp_flag=0;};break;
default:break;
}
}
void dis_phase()
{
uchar phase,data0,data1,data2,data3;
send_byte(CMD_RESET);
phase=count_p;
data0=phase%10;
phase=phase/10;
data1=phase%10;
phase=phase/10;
data2=phase%10;
data3=phase/10;
write7279(DECODE1,data0);
write7279(DECODE1+1,data1);
write7279(DECODE1+2,data2);
write7279(DECODE1+3,data3);
count_phase=0;
}
void dis_fre()
{
uchar data_fre0,data_fre1,data_fre2,data_fre3,data_fre4;
uint data_fre;
send_byte(CMD_RESET);
data_fre=Afre;
data_fre0=data_fre%10;
data_fre=data_fre/10;
data_fre1=data_fre%10;
data_fre=data_fre/10;
data_fre2=data_fre%10;
data_fre=data_fre/10;
data_fre3=data_fre%10;
data_fre4=data_fre/10;
write7279(DECODE1,data_fre0);
write7279(DECODE1+1,data_fre1);
write7279(DECODE1+2,data_fre2);
write7279(DECODE1+3,data_fre3);
write7279(DECODE1+4,data_fre4);
}
void transdata()
{
P2=TH0;
short_delay();
trans=1;
short_delay();
trans=0;
P2=TL0;
short_delay();
trans=1;
short_delay();
trans=0;
//T0=0;
P00=~P00;
}
void Time2() interrupt 5 using 0
{
TF2=0;
count_time2++;
if(count_time2==20)
{
TR0=0;
TR2=0;
Afre=TH0*256;//TH0;
//Afre=Afre<<8;//TL0;
Afre=Afre+TL0;
//Afre=Afre|14; */
TH0=0;
TL0=0;
disp_flag=~disp_flag;
readdata_flag=1;
disfre_flag=1;
starttime_flag=0;
count_time2=0;
}
}
void Int_ser() interrupt 0 using 0
{
count_phase++;
if(!control)
{
EX0=0;
cycle_signal=1;
count_p=count_phase;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -