📄 main.c
字号:
/*
*********************************************************************************************************
* File Name: Main.c
*
* Last Modified Data: 2006-08-10
*
* Last Version:V1.0
*
* Description:电桥测试主程序(大循环)
*
*********************************************************************************************************
*/
#define _MAIN_
#include "..\Inc\Include.h"
main()
{
InitSys(); //
// P0 = 0xA6; PLUS3; Delay(500);
// P0=0x38; PLUS1;
while(1)
{
if(OneMiao) OneMiaoDeal();
if(HaveKeyDown) { Key_deal(); HaveKeyDown = 0; }
if(Liang&&MenuID==0) {JianCeDianLiang();Liang=0;}
if(CanClose)
{
Beep(100);
CanClose = 0;
POWER_ON_OFF = OFF;
}
// CtrlDAOut_Test();
// CtrlDAOut(2000);
}
}
/*
********************************************************************************************************
* Function:Timer0
*
* Descriptions:
*
* Input:定时时间10ms
*
* OutPut:无
*******************************************************************************************************
*/
void Timer0 (void) interrupt 1
{
uchar i;
static TimeCnt=0;
static uint TimeDianLiang0=0;
//static uint TimeDianLiang1 = 0;
if(HaveKeyDown == 0)
{
i = P2 | 0x83;
if (i==Set||i==Lmove||i==Rmove||i==Lcdled)
{
if(++KeyTime >= 20)
{
KeyTime = 0;
HaveKeyDown=1;
KeyState = i;
}
}
else KeyTime=0;
}
if(off==0)//off=P3^2
{
if(OffTime++>20)
{
CanClose=1;
OffTime = 0;
}
}
else OffTime=0;
if (++TimeCnt>=100)
{
TimeCnt = 0;
OneMiao = 1;
}
if(MenuID==0)
{
if(++TimeDianLiang0>=6500)
{
TimeDianLiang0=0;
Liang=1;
}
}
TH0=TPH0; TL0=TPL0;
}
void IntTimer1() interrupt 3
{
TF0 = 0;
if(TestFlag==1) // 开始测试
{
TR1 = 0;
TR2 = 0;
TestFlag = 0;
TestOK = 1; // 555测试完毕
}
}
/*
********************************************************************************************************
* 函数名称:Timer2
*
* 功能描述:定时器 2 时钟源 (12.5 ms)
*
* 说明:
*
*******************************************************************************************************
*/
void Timer2(void)interrupt 5
{
TF2 = 0;
if(TestFlag==1) // 断线距离测试
{
TestCount += 1;
return;
}
}
void SaveOldData(void)
{
uchar i, j, dat;
uint tmp;
if(OldDataSum>=MAX_OLDDATA_SUN)//MAX_OLDDATA_SUN=20
{
for (i=1; i<MAX_OLDDATA_SUN; i++)
{
tmp = I2C_OLDDATA + (i * OLDDATA_BYTE) + 1;//OLDDATA_BYTE=12
for (j=0; j<OLDDATA_BYTE; j++)//OLDDATA_BYTE=12
{
dat = II3RD(AT24C256, tmp+j);
II3WR(AT24C256, tmp+j-OLDDATA_BYTE, dat);
}
}
}
else OldDataSum += 1;
tmp = I2C_OLDDATA + (OLDDATA_BYTE * (OldDataSum-1));
II3WR(AT24C256, I2C_OLDDATA, OldDataSum);
II3WR(AT24C256, ++tmp, JY/256);
II3WR(AT24C256, ++tmp, JY%256);
II3WR(AT24C256, ++tmp, HL/256);
II3WR(AT24C256, ++tmp, HL%256);
II3WR(AT24C256, ++tmp, per/256);
II3WR(AT24C256, ++tmp, per%256);
II3WR(AT24C256, ++tmp, Dist/256);
II3WR(AT24C256, ++tmp, Dist%256);
II3WR(AT24C256, ++tmp, TimeNow[1]);
II3WR(AT24C256, ++tmp, TimeNow[2]);
II3WR(AT24C256, ++tmp, TimeNow[3]);
II3WR(AT24C256, ++tmp, TimeNow[4]);
}
/*
********************************************************************************************************
* Function:DispOldData
*
* Descriptions:显示旧的数据
*
* Input:uchar no,uchar *p
*
* OutPut:
*******************************************************************************************************
*/
void DispOldData(uchar no,uchar *p)
{
uchar i;
float tmp;
WRI_CC_VALUE(14,4,no+1,2,0);
WRI_CC_VALUE(20,4,OldDataSum,2,0);
if(no>=OldDataSum) return;
tmp = (I2C_OLDDATA + 1) + (OLDDATA_BYTE * no);//OLDDATA_BYTE = 12
for(i=0; i<OLDDATA_BYTE; i++)
{
*(p+i) = II3RD(AT24C256, tmp + i);
}
// 1-绝缘
tmp = (p[0]*256+p[1]) / 100.0;
if(tmp!=1000000 )
{
WRI_CC_VALUE(14, 24, tmp,4,1);
WRI_CC(19,20,16,16,TestDianQiaoZimo[7]); // M
}
else WRI_CC(14, 20, 16, 16, table3[26]); // ∞
// 2-环阻
tmp = p[2]*256+p[3];
WRI_CC_VALUE(14, 40, tmp,5,0);
WRI_CC(19,36,16,16,table3[25]); // Ω
// 故障比
tmp= p[4]*256 + p[5];
WRI_CC_VALUE(14,56,tmp,3,1);
WRI_CC(19,56,8,8,Number[13]); // %
// 故障距离
tmp = p[6]*256+p[7];
WRI_CC_VALUE(14,72,tmp,4,0);
WRI_CC(19,72,8,8,Number[12]); // m
// 测试时间
WRI_CC(16,88,8,8,Number[14]); //-
WRI_CC(19,88,8,8,Blank);
WRI_CC(22,88,8,8,Number[15]); //:
for(i=0; i<4; i++)
{
WRI_CC(14+3*i, 88, 8,8,Number[p[8+i]/10]);
WRI_CC(15+3*i, 88, 8,8,Number[p[8+i]%10]);
}
}
/*
********************************************************************************************************
* Function:Delay
*
* Descriptions:延时
*
* Input:uint ms 延时时间(毫秒) = ms * 1
*
* OutPut:无
*******************************************************************************************************
*/
void Delay(uint ms)
{
uint i,j;
for(j=ms; j>0; j--)
{
for(i=0;i<200;i++)
;
}
}
/*--------------------------------------------------End-----------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -