?? remote.c
字號:
#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=0;
unsigned char re_first;
unsigned char last_door;
extern unsigned char c080;
bit re_control;
extern uchar xdata remote_state,force_flag,hand_state;
extern bit period_update; /*周期更迭標志*/
//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,max_green_flash;
extern unsigned char error_type;
extern uchar now_uncount;
extern unsigned char xdata door,door_front,door_back;
extern void read_time();
extern void search_sch();
extern void cacu_dif();
extern void save_to_error();
extern uchar xdata step_counter; //階段號
unsigned char data old_key;
unsigned char xdata hand_step_count,hand_step,user_count;
bit hand_step_flag;
unsigned char xdata hand_lase_state,hand_now_state;
/*秒中斷,燈色分配之前執行*/
/*秒中斷,燈色分配之后執行*/
re_ye_allred() using 1
{
unsigned char data kkk=0;
unsigned int toto;
if((reph_number==10)||(XBYTE[0X6D28]==0X02)){ /*黃閃*/
remote_state=5;
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==11)||(XBYTE[0X6D28]==0X03)){ /*全紅*/
remote_state=5;
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;
}
}
}
far_detect() using 1
{
unsigned char data loop_var;
unsigned char data i;
XBYTE[0XC083]=0X8B;
remote_phase=XBYTE[0XC082];
remote_other=XBYTE[0XC081];
hand_lase_state=hand_now_state;
if(remote_other&0x04)door_front++;
else door_front=0;
if(door_front>200)door_front=200;
if(door_front==50)door=0xc0;
if(remote_other&0x08)door_back++;
else door_back=0;
if(door_back>200)door_back=200;
if(door_back==50)door=0x03;
if(door!=last_door){
error_type=0x04;
save_to_error();
}
last_door=door;
if(remote_other&0x01) //手動標志
{
hand_step_flag=1; //手動標志
//檢測到手動標志的一瞬間,獲得當前手動階段號
if(user_count==0)hand_step=step_counter+1;
user_count++;
if(user_count>20)user_count=20;
if(remote_other&0x02)hand_step_count++; //點動計數開始
else{
hand_step_count=0;
hand_now_state=0;
}
if(hand_step_count>10)
{
hand_step_count=10;
hand_now_state=1;
}
}
else //解除手動控制
{
hand_step_flag=0; //手動標志
if(hand_state==2)
hand_state=3;
/* if(hand_state==5)
{
period_update = 1;
step_counter=1;
hand_state=0;
}
*/
}
if(hand_lase_state==1&&hand_now_state==0)
{
hand_step++;
if(hand_step>step_num)
hand_step=1;
if(hand_state!=2&&hand_state!=4)
hand_state=1;
}
//else if(remote_other&0x01)
//hand_step=step_counter;
//讀取遙控器控制結果,確認遙控的位置1-12
XBYTE[0XC080]=c080;
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 + -