📄 main.c
字号:
mput(DiagnosisCode7[8]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[1]) //580
{
mput(DiagnosisCode7[9]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[10]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[2]) //581
{
mput(DiagnosisCode7[11]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[12]);
setwfc(7);
mput(" 等待 3 秒");
TR0 = 1;
for(i=2;i!=0xff;i--)
{
while(TimingFlag == 0) ;
TimingFlag = 0;
mput("\r\t"); mputchar(i+0x30);
watchdog();
}
TR0 = 0;
Count = 28;
watchdog();
if(Sw[Page45Sel][7]&Mask[2]) //581
{
mput(DiagnosisCode7[11]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[13]);
setwfc(7);
}
}
if(Sw[Page45Sel][8]&Mask[4]) //687
{
mput(DiagnosisCode7[14]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[15]);
setwfc(7);
mput(" 等待 3 秒");
TR0 = 1;
for(i=2;i!=0xff;i--)
{
while(TimingFlag == 0) ;
TimingFlag = 0;
mput("\r\t"); mputchar(i+0x30);
watchdog();
}
TR0 = 0;
Count = 28;
watchdog();
if(Sw[Page45Sel][8]&Mask[4]) //687
{
mput(DiagnosisCode7[14]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[16]);
setwfc(7);
}
}
if(Sw[Page45Sel][7]&Mask[5]) //591
{
mput(DiagnosisCode7[17]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[18]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[6]) //592
{
mput(DiagnosisCode7[19]);
}
else
{
setwfc(9);
mput(DiagnosisCode7[20]);
setwfc(7);
}
watchdog();
mput(DiagnosisEnd);
}
check_process8()
{
uchar i;
if(Sw[Page45Sel][6]&Mask[4])//568
mput(DiagnosisCode8[0]);
else
{
setwfc(9);
mput(DiagnosisCode8[1]);
setwfc(7);
}
if(Sw[Page45Sel][4]&Mask[6])//577
mput(DiagnosisCode8[2]);
else
{
setwfc(9);
mput(DiagnosisCode8[3]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[4])//590
mput(DiagnosisCode8[4]);
else
{
setwfc(9);
mput(DiagnosisCode8[5]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[3])//589
mput(DiagnosisCode8[6]);
else
{
setwfc(9);
mput(DiagnosisCode8[7]);
setwfc(7);
}
if(Sw[Page45Sel][7]&Mask[7])//593
mput(DiagnosisCode8[8]);
else
{
setwfc(9);
mput(DiagnosisCode8[9]);
setwfc(7);
}
watchdog();
if(Sw[Page45Sel][8]&Mask[0])//594
mput(DiagnosisCode8[10]);
else
{
setwfc(9);
mput(DiagnosisCode8[11]);
setwfc(7);
mput(" 等待 3 秒");
TR0 = 1;
for(i=2;i!=0xff;i--)
{
while(TimingFlag == 0) ;
TimingFlag = 0;
mput("\r\t"); mputchar(i+0x30);
watchdog();
}
TR0 = 0;
Count = 28;
watchdog();
if(Sw[Page45Sel][8]&Mask[0])
mput(DiagnosisCode8[10]);
else
{
setwfc(9);
mput(DiagnosisCode8[12]);
setwfc(7);
}
}
if(Sw[Page45Sel][8]&Mask[1])//597
mput(DiagnosisCode8[13]);
else
{
setwfc(9);
mput(DiagnosisCode8[14]);
setwfc(7);
}
if(Sw[Page45Sel][8]&Mask[2])//599
mput(DiagnosisCode8[15]);
else
{
setwfc(9);
mput(DiagnosisCode8[16]);
setwfc(7);
}
mput(DiagnosisEnd);
}
check_process9()
{
uchar i;
if(Sw[Page45Sel][1]&Mask[7])//433
{
mput(DiagnosisCode9[0]);
if(Sw[Page45Sel][4]&Mask[7])//1780
{
mput(DiagnosisCode9[2]);
if((Analog[Page45Sel][0]*20/0xfff) > 12)//1701
{
mput(DiagnosisCode9[4]);
mput(" 还有 10 秒");
TR0 = 1;
for(i=9;i!=0xff;i--)
{
while(TimingFlag == 0)
if(Sw[Page45Sel][1]&Mask[1])//415
{
TR0 = 0;
Count = 28;
TimingFlag = 0;
mput("\r\t"); mput("00");
watchdog();
mput(DiagnosisCode9[6]);
if(Sw[Page45Sel][3]&Mask[0])//501
{
mput(DiagnosisCode9[8]);
if((Sw[Page45Sel][5]&(Mask[3]|Mask[4]|Mask[5]|Mask[6]))==(Mask[3]|Mask[4]|Mask[5]|Mask[6]))//471#,472#,473#,474#
{
mput(DiagnosisCode9[10]);
if(((AnalogFactor[i]*Analog[Page45Sel][5]*20/0xfff)>15) &&
((AnalogFactor[i]*Analog[Page45Sel][6]*20/0xfff)>15) &&
((AnalogFactor[i]*Analog[Page45Sel][7]*20/0xfff)>15) &&
((AnalogFactor[i]*Analog[Page45Sel][8]*20/0xfff)>15))//1781#,1782#,1783#,1784
mput(DiagnosisCode9[12]);
else
{
setwfc(9);
mput(DiagnosisCode9[13]);
setwfc(7);
}
}
else
{
setwfc(9);
mput(DiagnosisCode9[11]);
setwfc(7);
}
}
else
{
setwfc(9);
mput(DiagnosisCode9[9]);
setwfc(7);
}
mput(DiagnosisEnd);
return;
}
mput("\r\t"); mputchar(0x30); mputchar(i+0x30);
watchdog();
TimingFlag = 0;
}
TR0 = 0;
Count = 28;
setwfc(9);
mput(DiagnosisCode9[7]);
setwfc(7);
}
else
{
setwfc(9);
mput(DiagnosisCode9[5]);
setwfc(7);
}
}
else
{
setwfc(9);
mput(DiagnosisCode9[3]);
setwfc(7);
}
}
else
{
setwfc(9);
mput(DiagnosisCode9[1]);
setwfc(7);
}
mput(DiagnosisEnd);
}
void check_item(uchar i) // i = 0 -> 7
{
clear_screen();
CurrentPage = Check1 + i;
cursor(CheckTitleOffset[i], 1);
mput(CheckItem[0+i]+4);
watchdog();
switch(i)
{
case 0:
check_process1();
break;
case 1:
check_process2();
break;
case 2:
check_process3();
break;
case 3:
check_process4();
break;
case 4:
check_process5();
break;
case 5:
check_process6();
break;
case 6:
check_process7();
break;
case 7:
check_process8();
break;
case 8:
check_process9();
break;
default: ;
}
watchdog();
}
//****************************************************************************
// Key Process
//****************************************************************************
void key_process()
{
if(NewKey)
{
watchdog();
switch(Key)
{
case 0x41: // 确定
switch(CurrentPage)
{
case MenuPage:
switch(MenuItem)
{
case 0:
init_page12(0);
sort_sw();
refresh_page12(0);
break;
case 1:
init_page12(1);
sort_sw();
refresh_page12(1);
break;
case 2:
init_page3();
NewSelfCheck = 1;
refresh_page3();
break;
case 3:
Page45Sel = 0;
init_page45();
refresh_page45();
break;
case 4:
Page45Sel = 1;
init_page45();
refresh_page45();
break;
default: ;
}
break;
case Page4:
case Page5:
check_item(Page45Item[Page45Sel]);
break;
default: ;
}
break;
case 0x42: // 取消
switch(CurrentPage)
{
case Check1:
case Check2:
case Check3:
case Check4:
case Check5:
case Check6:
case Check7:
case Check8:
case Check9:
init_page45();
refresh_page45();
break;
default: ;
}
break;
case 0x43: // 上翻
switch(CurrentPage)
{
case MenuPage:
OldMenuItem = MenuItem;
if(--MenuItem == 0xff)
MenuItem = 0x04;
watchdog();
refresh_menu();
break;
case Page4:
case Page5:
Page45OldItem[Page45Sel] = Page45Item[Page45Sel];
if(--Page45Item[Page45Sel] == 0xff)
Page45Item[Page45Sel] = 0x08;
watchdog();
refresh_page45();
break;
default: ;
}
break;
case 0x44: // 下翻
switch(CurrentPage)
{
case MenuPage:
OldMenuItem = MenuItem;
if(++MenuItem == 0x05)
MenuItem = 0x00;
watchdog();
refresh_menu();
break;
case Page4:
case Page5:
Page45OldItem[Page45Sel] = Page45Item[Page45Sel];
if(++Page45Item[Page45Sel] == 0x09)
Page45Item[Page45Sel] = 0x00;
watchdog();
refresh_page45();
break;
default: ;
}
break;
case 0x40:
case 0x45: // 功能
init_menu();
refresh_menu();
break;
default: ;
}
watchdog();
NewKey = 0;
}
}
//****************************************************************************
// Main
//****************************************************************************
void main()
{
init_timer();
init_serial();
init_8279();
init_can_controller();
init_irq();
delay500ms();
watchdog();
// AUXR1 |= 0x10;
init_page12(0);
sort_sw();
refresh_page12(0);
watchdog();
while(1)
{
switch(CurrentPage)
{
case Page1:
if(NewSw)
{
sort_sw();
refresh_page12(0);
NewSw = 0;
}
break;
case Page2:
if(NewSw)
{
sort_sw();
refresh_page12(1);
NewSw = 0;
}
break;
case Page3:
if(NewAnalog)
{
refresh_page3();
NewAnalog = 0;
}
break;
default: ;
}
watchdog();
key_process();
}
}
/*************************************************************/
/***************** 定时器中断服务程序 *******************/
/*************************************************************/
void timer_isr() interrupt 1 using 0
{
watchdog();
TH0 = 0; TL0 = 0;
if((--Count) == 0)
{
Count = 28;
TimingFlag = 1;
}
}
/*************************************************************/
/***************** 键盘中断服务程序 *******************/
/*************************************************************/
void key_isr() interrupt 2 using 2
{
COM8279=0x40;
Key=DAT8279;
NewKey=1;
}
/************************************************************************/
/******************** CAN接收中断子程序 ******************/
/************************************************************************/
void RX_Service() interrupt 13 using 3
{
uchar idata i, length;
uchar idata ReceiveMessage[13] = {0};
CANADR=RBF;
ReceiveMessage[0] = CANDAT;
length = ReceiveMessage[0]&0x0F;
if(length > 0x08)
length = 0x08;
for(i=0;i<4+length;i++)
ReceiveMessage[i+1] = CANDAT;
watchdog();
if((ReceiveMessage[2] == 0x04) || (ReceiveMessage[2] == 0x24))
{
for(i=0;i<4;i++)
if((ReceiveMessage[3] < 0x03) || ((ReceiveMessage[3] == 0x03) && (i < 2)))
Analog[ReceiveMessage[2]>>5][(ReceiveMessage[3]-1)*4+i] =
ReceiveMessage[5+2*i]+(((uint)ReceiveMessage[6+2*i])<<8);
NewAnalog = 1;
}
else if((ReceiveMessage[2] == 0x05) || (ReceiveMessage[2] == 0x06) ||
(ReceiveMessage[2] == 0x25) || (ReceiveMessage[2] == 0x26))
{
if(ReceiveMessage[3] == 0x10)
{
for(i=0;i<4+(ReceiveMessage[2]&0x01);i++)
Sw[ReceiveMessage[2]>>5][(!(ReceiveMessage[2]&0x01))*5+i] = ReceiveMessage[5+i];
NewSw = 1;
}
else if(ReceiveMessage[3] == 0x01 || ReceiveMessage[3] == 0x00)
{
switch(ReceiveMessage[2])
{
case 0x05:
SelfCheck[0] = ReceiveMessage[3];
break;
case 0x06:
SelfCheck[1] = ReceiveMessage[3];
break;
case 0x25:
SelfCheck[2] = ReceiveMessage[3];
break;
case 0x26:
SelfCheck[3] = ReceiveMessage[3];
break;
default: ;
}
NewSelfCheck = 1;
}
}
else if(ReceiveMessage[2] == 0x01)
{
Sw[0][9] = ReceiveMessage[5];
Sw[1][9] = ReceiveMessage[7];
}
watchdog();
CANCON=0x04;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -