📄 tenms.bak
字号:
#include <tenms.h>
/*****************************************************************************************************/
// 定时器0中断
/*****************************************************************************************************/
void timer0_ms() interrupt 1 using 2
{
TH0=-(9216/256); /*9216 10毫秒定时*/
TL0=-(9216%256);
lei++;
if(lei>50)
{
lei = 0;
FrontLed = !FrontLed;
}
read_state();
}
/*****************************************************************************************************/
// 输出灯组检测函数
/*****************************************************************************************************/
void read_state(void) using 2
{
uint lod;
uchar i;
gl_read=XBYTE[0XC200]; /*实际信息,来自硬件端口*/
yl_read=XBYTE[0XC201];
rl_read=XBYTE[0XC202];
gh_read=XBYTE[0XC280];
yh_read=XBYTE[0XC281];
rh_read=XBYTE[0XC282];
g_read=gh_read*256+gl_read; /*16位分别代表16个灯组的绿灯情况*/
y_read=yh_read*256+yl_read; /*16位分别代表16个灯组的黄灯情况*/
r_read=rh_read*256+rl_read; /*16位分别代表16个灯组的红灯情况*/
g_out=greenh*256+greenl; /*16位分别代表16个灯组的绿灯程序输出情况*/
y_out=yelh*256+yell; /*16位分别代表16个灯组的黄灯程序输出情况*/
r_out=redh*256+redl; /*16位分别代表16个灯组的红灯程序输出情况*/
for(i=0;i<16;i++)
{
lod=0x0001;
lod=(lod<<i);
if(((g_out&lod)==lod)&&((g_read&lod)!=lod)) //信号灯有输出,但没有读取到信号点亮状态
{
if(gtemp1[i]==10) gtemp1[i]=10;
else gtemp1[i]++;
}
else gtemp1[i]=0;
if(((y_out&lod)==lod)&&((y_read&lod)!=lod))
{
if(ytemp1[i]==10) ytemp1[i]=10;
else ytemp1[i]++;
}
else ytemp1[i]=0;
if(((r_out&lod)==lod)&&((r_read&lod)!=lod))
{
if(rtemp1[i]==10) rtemp1[i]=10;
else rtemp1[i]++;
}
else rtemp1[i]=0;
if(((g_read&lod)==lod)&&((g_out&lod)!=lod))
{
if(gtemp2[i]==70) gtemp2[i]=70;
else gtemp2[i]++;
}
else gtemp2[i]=0;
if(((y_read&lod)==lod)&&((y_out&lod)!=lod))
{
if(ytemp2[i]==70) ytemp2[i]=70;
else ytemp2[i]++;
}
else ytemp2[i]=0;
if(((r_read&lod)==lod)&&((r_out&lod)!=lod))
{
if(rtemp2[i]==70) rtemp2[i]=70;
else rtemp2[i]++;
}
else rtemp2[i]=0;
if(gtemp1[i]==10) g_load1=(g_load1|lod); /*程序输出但采样没有,驱而不亮*/
if(ytemp1[i]==10) y_load1=(y_load1|lod); /*程序输出但采样没有,驱而不亮*/
if(rtemp1[i]==10) r_load1=(r_load1|lod); /*程序输出但采样没有,驱而不亮*/
if(gtemp2[i]==70) g_load2=(g_load2|lod); /*程序没有输出但采样有,不驱而亮*/
if(ytemp2[i]==70) y_load2=(y_load2|lod); /*程序没有输出但采样有,不驱而亮*/
if(rtemp2[i]==70) r_load2=(r_load2|lod); /*程序没有输出但采样有,不驱而亮*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -