亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dram.c

?? ASC 信號機控制程序,國內最先進的信號機控制程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <absacc.h>
#include <reg51.h>
unsigned char comm_number;
unsigned int now_addr;
unsigned char centrl_flag,s_buffer;
unsigned int begin_addr,end_addr;
unsigned int now_saddr;
unsigned int tos_length,s_min_addr;
unsigned int s_max_addr,s_useaddr;
unsigned int xdata nram_addr;
unsigned char xdata commu,temp3;        /*定義了一個位 */
extern unsigned char xdata key;
extern unsigned int xdata sch_plan[32];
unsigned int temp_addr;
extern  unsigned int  xdata usingloop_h,usingloop_l;
extern unsigned char now_day;  /*星期*/
extern unsigned char now_hour; /*小時*/
extern unsigned char now_min;  /*分鐘*/
extern unsigned char now_sec;  /*秒*/
extern unsigned char now_year; /*年份*/
extern unsigned char now_month;/*月份*/
extern unsigned char now_date; /*日子*/
extern char  wirte28c64(length,addr_ram,addr_eeprom);

sch_update()
{
  unsigned char i,temp1,temp2;
  unsigned int  temp;

   key=XBYTE[0X7003];
   temp=0X7004;
  for(i=0;i<32;i++){
     temp1=XBYTE[temp+i];
     temp++;
     temp2=XBYTE[temp+i];
     sch_plan[i]=temp2+temp1*256;
            }

}
/***************************************************************/
/*          將NVRAM中來自雙口RAM中的數據寫入EEPROM             */
/*    調用本函數前請將地址單元0x7f98、0x7f99設定為被讀數據的   */
/*起始地址,其中,0x7f98為高位地址單元,0x7f99為低位地址單元。 */
/*數據被寫入的EEPROM地址嚴格遵照通信協議。                     */
/***************************************************************/


meeprom()
{
   unsigned int addr;
   unsigned char mflag,load;
   unsigned char xdata *nv_addr;
   addr=XBYTE[0X7F98]*256+XBYTE[0X7F99];
   nv_addr=addr;
   mflag=XBYTE[addr];
   addr=addr+3;
   switch(mflag){
           case 0x01:break;
           case 0x02:load=wirte28c64(   7,addr,0x8009);
                      XBYTE[0XC000]=XBYTE[0X800e];
                      XBYTE[0XC002]=XBYTE[0X800d];
                      XBYTE[0XC004]=XBYTE[0X800c];
                      XBYTE[0XC007]=XBYTE[0X800b];
                      XBYTE[0XC008]=XBYTE[0X800a];
                      XBYTE[0XC009]=XBYTE[0X8009];
                      XBYTE[0XC006]=XBYTE[0X800f];     break;/*標識為02H的數據體內容存儲在以800AH為起始地址的EEPROM空間*/
           case 0x03:load=wirte28c64(   0,addr,0x8000);break;/*標識為03H的數據體內容存儲在以800AH為起始地址的EEPROM空間*/
           case 0x04:load=wirte28c64(   3,addr,0x8010);break;/*標識為04H的數據體內容存儲在以8010H為起始地址的EEPROM空間*/
           case 0x05:load=wirte28c64(   2,addr,0x8014);break;/*標識為05H的數據體內容存儲在以8014H為起始地址的EEPROM空間*/
           case 0x06:load=wirte28c64(   6,addr,0x8016);break;/*標識為06H的數據體內容存儲在以8016H為起始地址的EEPROM空間*/
           case 0x07:load=wirte28c64(  32,addr,0x8020);break;/*標識為07H的數據體內容存儲在以8020H為起始地址的EEPROM空間*/
           case 0x08:load=wirte28c64(  32,addr,0x8040);break;/*標識為08H的數據體內容存儲在以8040H為起始地址的EEPROM空間*/
           case 0x09:load=wirte28c64(  32,addr,0x8060);break;/*標識為09H的數據體內容存儲在以8060H為起始地址的EEPROM空間*/
           case 0x0a:load=wirte28c64(  64,addr,0x8080);break;/*標識為0aH的數據體內容存儲在以8080H為起始地址的EEPROM空間*/
           case 0x0b:load=wirte28c64(   8,addr,0x80c0);break;/*標識為0bH的數據體內容存儲在以80c0H為起始地址的EEPROM空間*/
           case 0x0c:load=wirte28c64(  14,addr,0x80c8);break;/*標識為0cH的數據體內容存儲在以80c8H為起始地址的EEPROM空間*/
           case 0x0d:load=wirte28c64(   1,addr,0x80e0);break;/*標識為0dH的數據體內容存儲在以80e0H為起始地址的EEPROM空間*/
           case 0x0e:load=wirte28c64(   1,addr,0x80ef);break;/*標識為0eH的數據體內容存儲在以80efH為起始地址的EEPROM空間*/
           case 0x0f:load=wirte28c64(  48,addr,0x8130);break;/*標識為0fH的數據體內容存儲在以8130H為起始地址的EEPROM空間*/
           case 0x10:load=wirte28c64(  48,addr,0x8160);break;/*標識為10H的數據體內容存儲在以8160H為起始地址的EEPROM空間*/
           case 0x11:load=wirte28c64(  100,addr,0x8110);break;/*標識為11H的數據體內容存儲在以8190H為起始地址的EEPROM空間*/
           case 0x12:load=wirte28c64(  2,addr,0x81D5);break;/*標識為12H的數據體內容存儲在以81ceH為起始地址的EEPROM空間*/
           case 0x13:load=wirte28c64(1560,addr,0x8200);break;/*標識為13H的數據體內容存儲在以8200H為起始地址的EEPROM空間*/
           case 0x14:load=wirte28c64(1560,addr,0x8900);break;/*標識為14H的數據體內容存儲在以8900H為起始地址的EEPROM空間*/
           case 0x15:load=wirte28c64(  128,addr,0x8230);break;/*標識為15H的數據體內容存儲在以81e0H為起始地址的EEPROM空間*/
           case 0x16:load=wirte28c64(  12,addr,0x80E1);break;/*標識為16H的數據體內容存儲在以80E1H為起始地址的EEPROM空間*/
           case 0x17:load=wirte28c64(   2,addr,0x7E29);break;/*標識為17H的數據體內容存儲在以7e29H為起始地址的EEPROM空間*/
           case 0x18:load=wirte28c64(  64,addr,0x8f40);break;/*標識為18H的數據體內容存儲在以8f40H為起始地址的EEPROM空間*/
           case 0x19:load=wirte28c64(  20,addr,0x8f1e);break;/*標識為19H的數據體內容存儲在以8f1eH為起始地址的EEPROM空間*/
           case 0x1a:load=wirte28c64(   2,addr,0x8f32);break;/*標識為1aH的數據體內容存儲在以8f32H為起始地址的EEPROM空間*/
           case 0x1b:load=wirte28c64(   1,addr,0x8f34);break;/*標識為1bH的數據體內容存儲在以8f34H為起始地址的EEPROM空間*/
           case 0x1c:load=wirte28c64(  98,addr,(XBYTE[addr]-1)*98+0x9200);
                                                       break;/*保存多方案*/
           case 0x1d:load=wirte28c64(  72,addr,0x9FB0);break;/*標識為1dH的數據體內容存儲在以9EF0H為起始地址的EEPROM空間*/
           case 0x1e:load=wirte28c64( 504,addr,0x9000);break;/*標識為1eH的數據體內容存儲在以9000H為起始地址的EEPROM空間*/
           case 0x1f:load=wirte28c64(  72,addr,0x8fb0);break;/*標識為1fH的數據體內容存儲在以8fb0H為起始地址的EEPROM空間*/
           case 0x25:load=wirte28c64(   2,addr,0x7F87);break;/*標識為1fH的數據體內容存儲在以7F87H為起始地址的EEPROM空間*/
           case 0x20:load=wirte28c64(  65,addr,0x6780);break;/*標識為20H的數據體內容存儲在以7F87H為起始地址的EEPROM空間*/
           case 0x30:load=wirte28c64(  24,addr,0x9ee8);break;/*標識為30H的數據體是每時段的相位差*/
           case 0x35:sch_update();break;                     /*接收到上位機的配時計劃*/

           default  :break;                                  /*標識為30H的數據體是每時段的相位差*/
           }
}

read_dram()
{
  unsigned int flag_addr;
  unsigned char xdata *wr;
  unsigned char modi_va,i;
  unsigned int lai,length;
  unsigned int temp;
  unsigned int b_addr,e_addr;
  unsigned char MODI_FLAG;
  flag_addr=XBYTE[now_addr+1]*256+XBYTE[now_addr+2];
  XBYTE[0X7F98]=0x70;
  XBYTE[0X7F99]=0x00;
  flag_addr=flag_addr&0xafff; /*標識存儲位置*/
  centrl_flag=XBYTE[flag_addr];  //數據標識
  begin_addr=flag_addr;          /*接收數據開始地址*/
  end_addr=XBYTE[now_addr+3]*256+XBYTE[now_addr+4];
  end_addr=end_addr&0xafff;      /*接收數據結束地址*/
  length=XBYTE[flag_addr+1]*256+XBYTE[flag_addr+2];
  wr=0x7000;
  for(lai=0;lai<length+3;lai++){  /*雙口RAM數據 寫入NVRAM*/
           temp=flag_addr+lai;
           *wr=XBYTE[temp];
           wr++;
                 }
  meeprom();       /* NVRAM數據寫入28C64*/
  commu=1;
  XBYTE[now_addr]=0; /*對數據接收標志進行清零操作*/
  for(i=0;i<30;i++){
          modi_va=XBYTE[0XA024];
          if(modi_va==0)break;
                     }
  modi_va=XBYTE[0XA024];
  if(modi_va==1){
        XBYTE[0XA023]=1;
        for(i=0;i<30;i++){}
        if(XBYTE[0XA023]==1){
                b_addr=(XBYTE[0XA01F]&0XAF)*256+XBYTE[0XA020];
                e_addr=(XBYTE[0XA021]&0XAF)*256+XBYTE[0XA022];
                MODI_FLAG=0x0f;
                if(begin_addr==b_addr){
                     XBYTE[0XA01F]=end_addr/256;
                     XBYTE[0XA020]=end_addr%256;
                     MODI_FLAG=0;
                                       }else{
                                 if(end_addr==e_addr){
                                      XBYTE[0XA021]=begin_addr/256;
                                      XBYTE[0XA022]=begin_addr%256;
                                      if(MODI_FLAG==0){
                                            XBYTE[0XA01F]=0XA0;
                                            XBYTE[0XA020]=0X80;
                                            XBYTE[0XA021]=0XA0;
                                            XBYTE[0XA022]=0X80;
                                                   }
                                                      }
                                        }
                             }
                 }
  XBYTE[0XA023]=0;

}

/*
unsigned char drsend(unsigned int length,unsigned int nv_addr,unsigned int du_addr)
{

return 0;
} */



/****************************************************************************
;向雙口RAM發送數據地址計算子程序DRSEND
;入口:7E00~7E01H---發送字節的長度,
;出口:7E02~7E03H---發送數據寫入雙口RAM的首地址(NVRAM中)
;      7E04~7E05H---存放所使用的發送數據存儲區的首地址(在雙口RAM中)
******************************************************************************/

drsend(unsigned int  length)   //
{
 unsigned int xdata temp,startaddr;
 unsigned char xdata i,j;
         s_buffer=XBYTE[0X7f9e];
         s_buffer=0;
         XBYTE[0X7E00]=0X00;
         XBYTE[0X7E01]=length+3;    //E00~7E01H---發送字節的長度


         i=0;
         do{
            temp=0xa030+i*5;
            now_saddr=temp;
            i=i+1;
            }
                     while(XBYTE[temp]>0&&XBYTE[temp]<=4&&i<=5);
         if(i==5){
                  //s_buffer.0=1,發送數據標志存儲區已滿
                  s_buffer=s_buffer&0x07;
                  s_buffer=s_buffer|0x01;
                  XBYTE[0XA023]=0;
                  }
          else
               {
                 XBYTE[temp]=0X87;
                 XBYTE[0X7E04]=now_saddr/256;
                 XBYTE[0X7E05]=now_saddr%256; //7E04~7E05H---使用的發送數據存儲區的首地址(在雙口RAM中)

                 s_buffer=(s_buffer&0x06);//*發送標志緩沖區不滿 s_buffer.0=0
                 XBYTE[0XA023]=1;   // CPU板修改數據區頭尾標志
                 for(i=0;i<10;i++){}
                 if(XBYTE[0XA023]!=1){
                                        XBYTE[0XA023]=1;
                                        for(i=0;i<10;i++){}
                                        if(XBYTE[0XA023]!=1)
                                                      {XBYTE[0XA023]=0;
                                                       s_buffer=s_buffer|0x04;     //通訊板修改數據區頭尾
                                                       }
                                        }
                 else //if(XBYTE[0XA023]==1) //判斷通訊板是否修改數據區頭尾,A024H=1
                      {
                       i=30;
                       do{
                          for(j=0;j<10;j++){}
                          i=i-1;
                          }
                       while(i!=0&&XBYTE[0XA024]!=0);

                        if(i==0){
                                 XBYTE[0XA023]=0;
                                 s_buffer=s_buffer|0x04;     //通訊板修改數據區頭尾
                                 }
                        else
                                { //XBYTE[0XA023]=1; XBYTE[0XA024]=0
                                  s_useaddr=XBYTE[0XA021]*256+XBYTE[0XA022];
                                    if(s_useaddr>0xa700||s_useaddr<0xa080)
                                    {
                                    XBYTE[0XA021]=0xa0;           //R3,R4
                                    XBYTE[0XA022]=0x80;
                                    }
                                   tos_length=XBYTE[0X7E00]*256+XBYTE[0X7E01];      //R1R2
                                   s_min_addr=XBYTE[0Xa01f]*256+XBYTE[0Xa020];      //R5R6
                                   s_min_addr=s_min_addr&0xa7ff;
                                   s_max_addr=XBYTE[0Xa021]*256+XBYTE[0Xa022];   //R7R0
                                   s_max_addr=s_max_addr&0xa7ff;
                                   s_useaddr=(s_max_addr-s_min_addr);           //R3R4
                                   if(s_max_addr>=s_min_addr)
                                                            s_useaddr=0x0780-s_useaddr;
                                   else {
                                        s_useaddr=s_min_addr-s_max_addr;       //R3R4
                                        s_useaddr=0x0780-s_useaddr;
                                        }
                                   if(s_useaddr>=tos_length)       //R3R4>R1R2
                                      {//*數據區有空間
                                       s_buffer=(s_buffer&0X05);
                                       temp_addr=XBYTE[0Xa021]*256+XBYTE[0Xa022];//*R5,R6*
                                       temp_addr=(temp_addr&0xa7ff);
                                       s_useaddr=temp_addr+tos_length;    //*R3R4=R5R6+R1R2*
                                       if(s_useaddr>=0xa7ff)
                                       s_useaddr=s_useaddr-0x0780;  //*超過界限*
                                       temp=s_useaddr;
                                       XBYTE[0XA021]=temp/256;           //R3,R4
                                       XBYTE[0XA022]=temp%256;
                                      // XBYTE[0XA021]=temp/256;           //R3,R4
                                      // XBYTE[0XA022]=temp%256;
                                       temp=temp_addr+1;
                                       XBYTE[0X7E02]=(temp)/256;            // /*R5,R6+1*
                                       XBYTE[0X7E03]=(temp)%256;

                                       startaddr=XBYTE[0X7E04]*256+XBYTE[0X7E05];
                                       temp=startaddr;
                                       temp_addr=temp_addr+1;
                                       XBYTE[temp+1]=(temp_addr)/256;          //*R5,R6*
                                       XBYTE[temp+2]=(temp_addr)%256;

                                       XBYTE[temp+3]=s_useaddr/256;          //R3,R4
                                       XBYTE[temp+4]=s_useaddr%256;
                                       //temp=temp_addr;

                                      }
                                    else
                                      {//*數據區空間不夠
                                       s_buffer=s_buffer|0x02;
                                       XBYTE[now_saddr]=0;//*發送標志清零
                                       }
                              }
                      }
               }

         XBYTE[0XA023]=0;
}
/*****************************************************************
NRAM數據傳送到DRAM且dram數據發送 子程序
入口:源地址R3R4中,目的地址R1R2中,數據長度R6R7中
出口:修改后目的地址R1R2中
*****************************************************************/

dramsend(nram_addr)
{  unsigned char xdata j;
   unsigned int  data startaddr;
                                    temp_addr=XBYTE[0x7e02]*256+XBYTE[0X7e03];   //R1R2
                                    tos_length=XBYTE[0X7E00]*256+XBYTE[0X7E01];
                                    temp_addr=temp_addr;
                                    for(j=0;j<tos_length;j++){
                                                      if(temp_addr+j==0xf7ff)XBYTE[temp_addr+j]=0xf07f;
                                                      XBYTE[temp_addr+j]=XBYTE[nram_addr+j];
                                                       }
                                   XBYTE[0xa02f]++;
                                   XBYTE[0Xa004]=0;
                                   XBYTE[0Xa01B]=0;
                                   startaddr=XBYTE[0X7E04]*256+XBYTE[0X7E05];
                                   XBYTE[startaddr]=1;
                                   XBYTE[0X7E07]=1;
                                   /*if(XBYTE[startaddr]!=XBYTE[0X7E07])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级.com| 自拍偷在线精品自拍偷无码专区| 久久一区二区三区四区| 亚洲男女一区二区三区| 久久 天天综合| 色诱视频网站一区| 久久综合精品国产一区二区三区| 亚洲精品免费在线播放| 国产成人免费视频一区| 欧美电视剧在线看免费| 亚洲小说春色综合另类电影| 国产成人精品免费看| 91麻豆精品91久久久久久清纯 | 97se亚洲国产综合自在线观| 欧美一二三区在线观看| 亚洲一区二区3| 91色.com| 亚洲欧美福利一区二区| 成人黄色免费短视频| 久久久综合视频| 蜜臀av在线播放一区二区三区| 日本韩国一区二区三区视频| 中文字幕av一区二区三区高| 国产麻豆精品在线| 欧美精品一区二区三| 免费在线成人网| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲欧美一区二区视频| 国产大陆亚洲精品国产| 久久久久久**毛片大全| 国产精品综合二区| www国产精品av| 国产剧情一区在线| 久久婷婷一区二区三区| 国产伦精一区二区三区| 久久综合久久综合九色| 国产一区二区网址| 国产日韩欧美综合在线| 岛国精品在线观看| 自拍偷拍欧美精品| 色久综合一二码| 亚洲国产婷婷综合在线精品| 欧美色老头old∨ideo| 日韩在线观看一区二区| 日韩情涩欧美日韩视频| 国产精品99久久久| 亚洲国产精品ⅴa在线观看| www.欧美亚洲| 亚洲高清免费在线| 欧美一级一区二区| 粉嫩av一区二区三区在线播放| 成人欧美一区二区三区视频网页| 91美女蜜桃在线| 午夜伦欧美伦电影理论片| 日韩欧美亚洲一区二区| 懂色av中文一区二区三区 | 在线看国产日韩| 日本不卡一二三| 久久九九全国免费| 色综合网色综合| 国产精品自拍av| 国产精品二三区| 欧美日产国产精品| 国产专区综合网| 亚洲精品伦理在线| 精品少妇一区二区三区日产乱码| 国产乱码一区二区三区| 亚洲欧洲制服丝袜| 欧美一级高清片| 9色porny自拍视频一区二区| 亚洲成a人v欧美综合天堂下载| 精品日韩在线一区| 日本韩国欧美一区二区三区| 久久99精品久久只有精品| 日韩毛片高清在线播放| 日韩一级在线观看| 91高清在线观看| 国产精品99久久久久久宅男| 天天色 色综合| 亚洲欧美日韩久久| www国产成人| 日韩一级片在线播放| 99久久精品久久久久久清纯| 久久99热国产| 亚洲成av人影院| 国产精品美女久久福利网站| 日韩一二三区不卡| 色噜噜久久综合| 99国产精品久久久久| 国产一区二三区| 日本人妖一区二区| 一区二区三区av电影| 亚洲国产高清不卡| www国产精品av| 日韩午夜激情视频| 欧美专区在线观看一区| va亚洲va日韩不卡在线观看| 国产剧情一区在线| 久久99在线观看| 日本亚洲天堂网| 亚洲成人黄色影院| 亚洲影院久久精品| 亚洲另类在线制服丝袜| 国产精品盗摄一区二区三区| 精品99999| 精品国产髙清在线看国产毛片| 91精品在线观看入口| 欧美日韩精品免费| 欧美性三三影院| 欧美日韩视频专区在线播放| 91麻豆成人久久精品二区三区| 不卡在线视频中文字幕| 国产a区久久久| 大美女一区二区三区| 国产精品一区二区久久不卡| 国产精品一区在线观看乱码| 久久成人羞羞网站| 国模娜娜一区二区三区| 国产一区欧美一区| 成人精品视频一区二区三区| av一区二区三区四区| 99精品视频免费在线观看| 91色婷婷久久久久合中文| 91久久精品网| 欧美久久高跟鞋激| 日韩欧美国产1| 欧美精品一区二区三区四区| 国产欧美日韩另类一区| 日本一区二区免费在线| 亚洲色图第一区| 亚洲成人激情社区| 国产资源在线一区| 99久久99久久精品国产片果冻| 日本韩国精品一区二区在线观看| 欧美色网一区二区| 日韩一级免费观看| 国产精品美女视频| 亚洲一区精品在线| 久久狠狠亚洲综合| 不卡视频在线看| 欧美私人免费视频| 日韩欧美中文一区二区| 国产精品嫩草99a| 午夜伊人狠狠久久| 国产九九视频一区二区三区| 99国产精品久久久久| 91麻豆精品国产91| 国产精品久久久久久久久快鸭| 亚洲午夜久久久久久久久电影院 | 久久免费电影网| 1区2区3区欧美| 男男视频亚洲欧美| fc2成人免费人成在线观看播放| 欧美亚男人的天堂| 国产午夜精品久久| 夜夜嗨av一区二区三区中文字幕| 久久99精品视频| 91久久奴性调教| 国产精品丝袜一区| 免费国产亚洲视频| 色综合色综合色综合| 久久久亚洲高清| 天天影视涩香欲综合网| 成人99免费视频| 久久久蜜臀国产一区二区| 亚洲免费在线播放| 国产成人在线免费观看| 777久久久精品| 亚洲一区成人在线| 91一区在线观看| 国产欧美一区二区在线观看| 日韩电影网1区2区| 欧美色老头old∨ideo| 国产精品不卡在线| 国产成人午夜高潮毛片| 精品少妇一区二区三区视频免付费| 一区二区三区中文字幕电影 | 国产精品美女视频| 激情久久五月天| 日韩免费福利电影在线观看| 亚洲综合一区二区| av影院午夜一区| 欧美激情在线免费观看| 国产一区二区视频在线| 91麻豆精品91久久久久同性| 亚洲香肠在线观看| 色就色 综合激情| 一区二区三区国产| 91黄色免费网站| 亚洲国产日韩在线一区模特| 91在线精品一区二区三区| 国产精品丝袜一区| av日韩在线网站| 亚洲欧美激情在线| 色偷偷88欧美精品久久久| 综合色中文字幕| 91在线国产观看| 亚洲精品视频在线观看网站| 色综合天天性综合| 一区二区三区毛片|