📄 remote.c.bak
字号:
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char remote_number;
unsigned char remote_phase;
unsigned char remote_other;
unsigned char re_phase[8],re_other[4];
unsigned char re_message[12];
unsigned char reph_number;
unsigned char re_first;
bit re_control;
extern bit remote_start;
//bit force_flag;
extern unsigned int xdata use_lamp;
extern unsigned char xdata lamp_state[16]; //灯色状态
extern unsigned char xdata step_num;
extern uint xdata inuse_lamp_temp;
extern uint xdata now_phase_temp;
extern uint xdata now_phase_tempn;
extern uint xdata now_lamp_temp;
extern uint xdata now_lamp;
extern uint xdata inuse_phase[32]; //阶段用到的相位
extern uint xdata inuse_phasen[32]; //下阶段用到的相位
extern uint xdata baseaddr_now_phasesch;
extern uchar xdata max_yellow,max_red_clear;
extern uchar now_uncount;
extern void read_time();
extern void search_sch();
extern void cacu_dif();
unsigned char data old_key;
/*秒中断,灯色分配之前执行*/
remote_ph() using 1
{
unsigned char i,j;
unsigned int data toto,toto1;
//re_control=0;
reph_number=0;
for(i=0;i<8;i++){ /*确认当前被遥控的相位数*/
if(re_message[i]==20){
reph_number=(i+1);
remote_start=1;
}
}
for(i=8;i<12;i++){ /*确认当前被遥控的相位数*/
if(re_message[i]==20){
reph_number=(i+1);
}
}
if((reph_number>0)&&(reph_number<12)) {
re_control=1;
// old_key=key;
// force_flag=1;
}
if((re_control==1)&&(reph_number<=step_num))
{
///key=sch_plan[reph_number*2-1]-g_flash[now_step]/*XBYTE[0X80CA]*/-1;
//now_uncount = step_time-now_step_key; //阶段倒计时
now_uncount = max_yellow+max_red_clear; //查表的阶段时间与当前历时的倒计时
for(i=0; i<16; i++) //此循环用于查找当前阶段用到的相位
{
toto = 0x0001;
toto = toto<<i;
now_phase_temp = toto&inuse_phase[reph_number-1]; //当前阶段是否包含该相位
now_phase_tempn = toto&inuse_phasen[reph_number-1];
if(now_phase_temp!=0) //
{
now_lamp_temp = XBYTE[baseaddr_now_phasesch+18*i];
now_lamp_temp = now_lamp_temp<<8;
now_lamp = now_lamp_temp|XBYTE[baseaddr_now_phasesch+18*i+1];
}
for(j=0; j<16; j++) //此循环用于查找当前相位用到的灯组
{
toto1 = 0x0001;
toto1 = toto1<<j;
inuse_lamp_temp = toto1&now_lamp;
if(inuse_lamp_temp!=0)
lamp_state[j]=1; /*当前阶段用的灯组置成绿色*/
else
lamp_state[j]=4;
}
}
}
/* re_first=0;
if(re_control==1)re_first++;
if(re_first==1){
old_key=key-old_key;
period=period-old_key;
} */
}
/*秒中断,灯色分配之后执行*/
re_ye_allred()
{
unsigned char data kkk=0;
unsigned int toto;
if(reph_number==11){ /*黄闪*/
for(kkk=0;kkk<16;kkk++){
toto = 0x0001;
toto = toto<<kkk;
if((use_lamp&toto)==toto)
lamp_state[kkk]=4; /*使用的灯组置成黄闪先*/
else
lamp_state[kkk]=7;
}
}
if(reph_number==10){ /*全红*/
for(kkk=0;kkk<16;kkk++){
toto = 0x0001;
toto = toto<<kkk;
if((use_lamp&toto)==toto)
lamp_state[kkk]=5; /*使用的灯组置成红色先*/
else
lamp_state[kkk]=7;
}
}
if(reph_number==12){ /*解除*/
re_control=0;
}
}
/*本函数在毫秒中断中运行,只有遥控按键的状态保持20个毫秒中断才生效*/
far_detect() using 1
{
unsigned char data loop_var;
unsigned char data i;
XBYTE[0XC083]=0X8B;
remote_phase=XBYTE[0XC082];
remote_other=XBYTE[0XC081];
XBYTE[0XC080]=0X81;
for(i=0;i<8;i++){
loop_var=0x01;
loop_var=(loop_var<<i);
/* flag=loop_var%256; */
if((remote_phase&loop_var)==0)
re_phase[i]++;
else
re_phase[i]=0;
if(re_phase[i]>20)
re_phase[i]=20;
}
for(i=0;i<4;i++){
loop_var=0x10;
loop_var=(loop_var<<i);
/* flag=loop_var%256; */
if((remote_other&loop_var)==0)
re_other[i]++;
else
re_other[i]=0;
if(re_other[i]>20)
re_other[i]=20;
}
for(i=0;i<12;i++){
if(i<8)re_message[i]=re_phase[i];
else re_message[i]=re_other[i-8];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -