?? stru.c
字號:
#include <stru.h>
/*****************************************************************************************************/
// 初始化函數(shù)
/*****************************************************************************************************/
extern uchar xdata loop_now[32],loop_last[32];
void init(void)
{
uchar i,j;
uint k;
D12887A=0x2f; /*對時鐘中斷進(jìn)行設(shè)置 */
D12887B=0x4e;
XBYTE[0XC083]=0X8b; //CPU板內(nèi)8255設(shè)置,綠燈電源為輸出,遙控為輸入
XBYTE[0XC080]=0X81; //輸出綠燈電源
XBYTE[0Xc103]=0x80; //燈輸出板設(shè)置,都設(shè)為輸出
XBYTE[0Xc183]=0x80;
XBYTE[0XC203]=0X9b; //燈檢測輸入板設(shè)置,都設(shè)為輸入
XBYTE[0XC283]=0X9b;
XBYTE[0XC303]=0X93; //車輛檢測輸入板設(shè)置
XBYTE[0XC383]=0X93;
XBYTE[0X6D28]=0; //強(qiáng)制標(biāo)志為0
force_flag=0;
XBYTE[0X6D29]=0;
EA=0;
TMOD=0X21; /*定時器0工作在方式1,定時器1工作在方式2*/
TH0=-(18432/256); /*10毫秒定時 9216*/
TL0=-(18432%256);
TH1=0XFd;
TL1=0XFd;
PCON=0X00;
SCON=0X50; /*串行口初始化*/
IE=0X96; /*允許串口中斷,外部事件1中斷,定時器0中斷*/
IP=0X10;
IT1=1; /*下降沿觸發(fā)方式 */
TR0=1; /*允許T0計數(shù)*/
TR1=1;
ET0=1; /*T0中斷開*/
EX1=1;
PX1=1;
PS=1;
ES=1;
IP=0X10;
user_count=0;
for(k=0;k<512;k++){
RX_BUF[k]=0xee;
}
for(i=0;i<32;i++){
loop_now[i]=0;
loop_last[i]=0; }
for(i=0;i<41;i++){
period_sch[i]=0;
}
for(i=0;i<6;i++){
XBYTE[0XA030+i*5]=0x87; //發(fā)送寄存器
}
XBYTE[0XA021]=0X00;
XBYTE[0XA022]=0X80;
XBYTE[0XA023]=0;
XBYTE[0XA024]=0;
for(i=0; i<32; i++)
{
loop_error[i] = 0;
forsense[i] = 0;
liul[i] = 0;
send_liul[i] = 0;
// send_occ[i]=0;
no_vehicle_step[i]=0;
}
//初始化協(xié)調(diào)路口數(shù)據(jù)
//zone_count[5][60]; //5個路口,沒個路口60個備用變化,每個階段提供60秒的變化范圍
//zone_step_time[5][60];//對應(yīng)的階段時間
// zone_now_step_key[5][60];//對應(yīng)的階段歷時
EA=0;
for(i=0;i<5;i++){
WatchDog = !WatchDog;
for(j=0;j<60;j++){
zone_count[i][j]=0;
zone_step_time[i][j]=0;
zone_now_step_key[i][j]=0;
}
}
//start_counter = 0;
period_update = 0;
fuctioncounter=0;
remote_state=0;
hand_state=0;
force_state=0;
for(i=0;i<32;i++){ //mei
for(j=0;j<70;j++){
per[i][j]=0;
}
}
EA=1;
}
void updatanv()
{
unsigned int i ;
updatanvram=0;
EA=0;
for(i=0;i<0x1d1d;i++){
WatchDog = !WatchDog;
XBYTE[0X5000+i]=XBYTE[0X8050+i];
}
EA=1;
}
/*****************************************************************************************************/
// 主函數(shù)
/*****************************************************************************************************/
void main (void) using 1
{
unsigned char i,j;
unsigned int addr_w,addr_r,addr_day;
unsigned char cal_flag,day;
unsigned char day_code;
cal_flag=0x01;
init();
EA=1;
IP=0X10;
while(1)
{
XBYTE[0XC083]=0X8b; //CPU板內(nèi)8255設(shè)置,綠燈電源為輸出,遙控為輸入
XBYTE[0XC080]=0X81; //輸出綠燈電源
InternalLed = !InternalLed;
WatchDog = !WatchDog;
if(selcal_flag==0x01)tran_psh();
if((start_counter==7)&&(cal_flag==0x01)){
last_recetimeid=timeid;
cal_flag=0;
//根據(jù)方案表中內(nèi)容對,自學(xué)習(xí)優(yōu)化結(jié)果進(jìn)行重新初始化
day = XBYTE[0XC006]; /*星期*/
if(day>7)day=3;
addr_w=0x3f00+(day-1)*384+(timeid-1)*16;
addr_r=0x5e8b+(day-1)*1312+(timeid-1)*41;
for(j=0;j<7;j++){
addr_day=0x6ce7+6*j;
day_code=XBYTE[addr_day]; //日計劃
addr_day=0x63a6+day_code*74;
day_code=XBYTE[addr_day]; //日計劃中對應(yīng)的方案
addr_day=0x5e8b+day_code*41;
addr_r=addr_day;
for(i=0;i<16;i++){
XBYTE[addr_w+i]=XBYTE[addr_r+i];
}
}
}
h_address=XBYTE[0X8000];
l_address=XBYTE[0X8001];
// EA=0;
deal_fpgadram();
// deal_lcddram();
// EA=1;
if(tran_count>=15){
bid_flag();
tran_count=0;
}
read_time();
if(updatanvram==1)updatanv();
if(start_counter>=3)
{
nowforce=XBYTE[0X6D29];
if(nowforce!=lastforce){
hand_counter=0;
}
lastforce=nowforce;
now_schemeid = search_scheme_yellow();
cljc(); //車輛檢測
phase_loop(); //相位流量檢測
jude_looperror();
if((last_schemeid!=now_schemeid)&&(last_schemeid==0x21))period_update=1; //黃閃時段進(jìn)入正常時段
if(period_update) //周期結(jié)束時算一次
{
alt_change=1;
period_update = 0;
g_error1=g_load1; /*驅(qū)而不亮的綠燈組*/
y_error1=y_load1; /*驅(qū)而不亮的黃燈組*/
r_error1=r_load1; /*驅(qū)而不亮的紅燈組*/
g_error2=g_load2; /*不驅(qū)而亮的綠燈組*/
y_error2=y_load2; /*不驅(qū)而亮的黃燈組*/
r_error2=r_load2; /*不驅(qū)而亮的紅燈組*/
// g_load1=0;y_load1=0;r_load1=0;
// g_load2=0;y_load2=0;r_load2=0;
if(now_day_planid==0)now_day_planid=0;
search_sch();
// max_clear_time();
// trans_volum(); //周期更迭時傳送流量信息
// tran_psh(); //周期更迭時傳送方案信息
last_schemeid=now_schemeid;
soft_greenconflic(); //判定軟件綠沖突
}
deal_fpgadram();
if((comm_state==head)&&(head!=tail)){
crc_main();
}
comm_state=head;
deal_lcddram();
if(run_state==0x01){
judge_lamp();
judge_lamp_error(); //判別燈組故障
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -