⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distm.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   DISTM                                                                 06/20/2005 15:36:06 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DISTM
OBJECT MODULE PLACED IN .\out\distm.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE distm.c OPTIMIZE(6,SIZE) DEBUG OBJECTEXTEND PRINT(.\out\distm.lst) OBJECT(.
                    -\out\distm.obj)

stmt level    source

   1          /**--------------文件信息--------------------------------------------------------------------------------
   2          **文   件   名: distm.c
   3          **创   建   人: 曾银玲
   4          **最后修改日期: 2004年4月3日
   5          **描        述: distm源代码。
   6          **
   7          **--------------历史版本信息----------------------------------------------------------------------------
   8          ** 创建人: 曾银玲
   9          ** 版  本: V1。0
  10          ** 日 期: 2004年2月22日
  11          ** 描 述: 原始版本
  12          
  13          **------------------------------------------------------------------------------------------------------
  14          ** 修改人: 曾银玲
  15          ** 版  本: V1.0
  16          ** 日 期: 2004年7月2日
  17          ** 描 述: 根据新版本要求修改
  18          **
  19          **--------------当前版本修订------------------------------------------------------------------------------
  20          ** 修改人: 
  21          ** 日 期:
  22          ** 描 述:
  23          **
  24          **------------------------------------------------------------------------------------------------------
  25          ********************************************************************************************************/
  26          
  27          
  28          
  29          //#include <absacc.h>
  30          
  31          //#include <reg51.h>
  32          //#include <intrins.h>
  33          //#include <string.h>
  34          //#include <stdio.h>
  35          #define  IN_DISTM
  36          
  37          #include "config.h"       
  38          main()
  39          {
  40   1         init();
  41   1         
  42   1         TR0=1;
  43   1         TR1=1;
  44   1         OSStart();
  45   1      }
  46          void init(void)
  47          {uint8 k;
  48   1          init52();
  49   1              init_12887();
  50   1              //init_16550();
  51   1              selct_page_addr();
  52   1              sp=&ram0;
  53   1              sp0=&ram1;
  54   1              for(k=0;k<0x108;k++){
C51 COMPILER V7.06   DISTM                                                                 06/20/2005 15:36:06 PAGE 2   

  55   2                      *(sp+k)=0x00;}
  56   1              for(k=0;k<0x108;k++){
  57   2                      *(sp0+k)=0x00;}
  58   1                  
  59   1               head00_over=0;head01_over=0;head02_over=0;
  60   1      
  61   1      }
  62          /*********************************************************************************************************
  63          ** 函数名称: TaskPICK
  64          ** 功能描述: PICK
  65          ** 输 入:   无
  66          ** 输 出:   无
  67          ** 全局变量: AdBuf Cell 
  68          ** 调用模块: midst OSWait
  69          **
  70          ** 作 者: 曾银玲
  71          ** 日 期: 2004年4月28日
  72          **-------------------------------------------------------------------------------------------------------
  73          ** 修改人:
  74          ** 日 期:
  75          **-------------------------------------------------------------------------------------------------------
  76          *********************************************************************************************************/
  77          void TaskPick(void)
  78          {
  79   1      uint8 i,j,k;
  80   1              cj_50hz();
  81   1              cj_6k();
  82   1              anly_50hz(0);
  83   1              andata00=mdtra;
  84   1              anly_50hz(8);
  85   1              andata01=mdtra;
  86   1              anly_6k(16);
  87   1              out_xdata=mdtra;
  88   1              
  89   1              i=andata00^andata10;
  90   1              j=andata01^andata11;
  91   1              k=out_xdata^old_out;
  92   1              if(i!=0){
  93   2                      memdata[cjtemp]=andata00;
  94   2                      memdata[cjtemp+1]=0x66;
  95   2                      cjtemp+=2;
  96   2                      storage();
  97   2                      andata10=andata00;}
  98   1              if(j!=0){
  99   2                      memdata[cjtemp]=andata01;
 100   2                      memdata[cjtemp+1]=0x77;
 101   2                      cjtemp+=2;
 102   2                      storage();
 103   2                      andata11=andata01;}
 104   1              if(k!=0){
 105   2                      memdata[cjtemp]=out_xdata;
 106   2                      memdata[cjtemp+1]=0x88;
 107   2                      cjtemp+=2;
 108   2                      storage();}
 109   1                      //old_out=out_xdata;}
 110   1      }
 111          void TaskTrans_x1x2(void)
 112          {
 113   1      uint8 temp0,temp1,i,j,highbyte,lowbyte;
 114   1              uint16 condat0;
 115   1              temp0=out_xdata&0x03;
 116   1              temp1=old_out&0x03;
C51 COMPILER V7.06   DISTM                                                                 06/20/2005 15:36:06 PAGE 3   

 117   1              //temp2=out_xdata&0x30;//2004/10/9
 118   1              //temp3=out_xdata&0xc0;//2004/10/9
 119   1              i=temp0^temp1;
 120   1              if((i!=0)||(time_2s==1)){time_2s=0;
 121   2                    while(!trans_over){}
 122   2                    SBUF=0xfc;trans_over=0;
 123   2                    while(!trans_over){}
 124   2                    SBUF=0x33;trans_over=0;
 125   2      
 126   2                 if(((out_xdata&0x03)==0x01)&&((out_xdata&0xf0)==0x00)){//2004/10/09
 127   3                 //if((out_xdata&0x03)==0x01){
 128   3                      tx[0]=0x44;
 129   3                      tx[1]=0x55;
 130   3                      tx[2]=0x66;
 131   3                      pbuf=&tx[0];
 132   3                                      condat0=getcrccode(pbuf,3);
 133   3                                      lowbyte=condat0&0x00ff;
 134   3                                      highbyte=condat0>>8;
 135   3                                      tx[3]=lowbyte;
 136   3                                      tx[4]=highbyte;
 137   3                 for(j=0;j<5;j++){    
 138   4                      while(!trans_over){}
 139   4                      SBUF=tx[j];trans_over=0;}}
 140   2                 if(((out_xdata&0x03)==0x02)&&((out_xdata&0xf0)==0x00)){//2004/10/09
 141   3                 //if((out_xdata&0x03)==0x02){
 142   3                      tx[0]=0x77;
 143   3                      tx[1]=0x88;
 144   3                      tx[2]=0x99;
 145   3                      pbuf=&tx[0];
 146   3                      condat0=getcrccode(pbuf,3);
 147   3                      lowbyte=condat0&0x00ff;
 148   3                      highbyte=condat0>>8;
 149   3                      tx[3]=lowbyte;
 150   3                      tx[4]=highbyte;
 151   3                 for(j=0;j<5;j++){    
 152   4                      while(!trans_over){}
 153   4                      SBUF=tx[j];trans_over=0;}}
 154   2                 if((out_xdata&0x03)==0x00){
 155   3                      tx[0]=0xaa;
 156   3                      tx[1]=0xbb;
 157   3                      tx[2]=0xcc;
 158   3                      pbuf=&tx[0];
 159   3                      condat0=getcrccode(pbuf,3);
 160   3                      lowbyte=condat0&0x00ff;
 161   3                      highbyte=condat0>>8;
 162   3                      tx[3]=lowbyte;
 163   3                      tx[4]=highbyte;
 164   3                 for(j=0;j<5;j++){    
 165   4                      while(!trans_over){}
 166   4                      SBUF=tx[j];trans_over=0;}}
 167   2                 old_out=out_xdata;
 168   2                    while(!trans_over){}
 169   2                    SBUF=out_xdata;trans_over=0;
 170   2                 }              
 171   1                      
 172   1      
 173   1      }       
 174          
 175          void TaskD(void)
 176          {uint8 j;
 177   1          while (1)
 178   1          {
C51 COMPILER V7.06   DISTM                                                                 06/20/2005 15:36:06 PAGE 4   

 179   2                      if((out_xdata&0x30)==0x30){  //有问题040809,已修改041122
 180   3                              if((wave00==1)&&((out_xdata&0x01)==0x01)){alarm=1;}
 181   3                              else{alarm=0;}}
 182   2                      else if((out_xdata&0xc0)==0xc0){
 183   3                              if((wave01==1)&&((out_xdata&0x02)==0x02)){alarm=1;}
 184   3                              else{alarm=0;}}
 185   2                      j=clear;        
 186   2          }
 187   1      }
 188          void TaskE(void)
 189          {
 190   1          while (1)
 191   1          {
 192   2              OSWait(K_TMO,(50*OS_TICKS_PER_SEC)/1000);
 193   2          }
 194   1      }
 195          void TaskF(void)
 196          {
 197   1          while (1)
 198   1          {
 199   2              OSWait(K_TMO,(50*OS_TICKS_PER_SEC)/1000);
 200   2          }
 201   1      }
 202          /*void storage(void)
 203          {       uchar i,j;
 204                  //sp=&ram0;
 205                  j=cjtemp+6;
 206                  read_date();
 207                  read_time();
 208                       memdata[cjtemp]=date[0];
 209                       memdata[cjtemp+1]=date[1];
 210                       memdata[cjtemp+2]=date[2];
 211                       memdata[cjtemp+3]=date[3];
 212                       memdata[cjtemp+4]=date[4];
 213                       memdata[cjtemp+5]=date[5];
 214                       for(i=0;i<j;i++){
 215                          *(sp+num_in)=memdata[i];num_in++;
 216                          if(num_in>0xff){
 217                                   bytes_write(0xff);
 218                                   num_in=0;
 219                                   sp=&ram0;}
 220                             }
 221                       cjtemp=0;//variable=0;//04/10/18
 222          }       
 223          uint code crcCcittTable[16] =
 224          {
 225            0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
 226            0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
 227          };*/
 228          int16 getcrccode(uint8 *point0,uint8 lenth);
 229          int16 getcrccode(uint8 *p0,uint8 ilen)
 230          {   uint16 i,j,crc=0;
 231   1      
 232   1              for(i=0;i<ilen;i++)
 233   1              {   j=(crc>>8)^(*(p0+i));
 234   2                  crc=(crc<<8)^crcCcittTable[j];
 235   2              }
 236   1              return (crc);
 237   1      }
 238          
 239          void init_16550(void)
 240          {
C51 COMPILER V7.06   DISTM                                                                 06/20/2005 15:36:06 PAGE 5   

 241   1          //MR=1;
 242   1          MR=0;
 243   1          UARTLCR=0x80;                       //bound 80
 244   1          UARTRBR=tab[1];                     
 245   1          
 246   1          UARTIER=0;                          //0
 247   1          UARTLCR=0x0b;       //8,n,1    0x0b:odd,0x1b:even
 248   1          UARTIER=0x05;
 249   1      
 250   1          ACC=UARTLSR;
 251   1          ACC=UARTRBR;
 252   1          ACC=UARTRBR;
 253   1          
 254   1          re_start=0;
 255   1      }
 256          void init_12887(void)
 257          {
 258   1           uint8 i;
 259   1           //i=RTIMED;
 260   1           RTIMEA=0x20;//分频复位70h
 261   1           RTIMEB=0x8a;//停止更新,选BCD码,24小时制
 262   1          // RTIME0=30;
 263   1           RTIME1=0xff;//XBYTE[0XFF00]=0x24;
 264   1           //RTIME2=0x33;
 265   1           RTIME3=0xff;
 266   1           //RTIME4=0x10;
 267   1           RTIME5=0xff;
 268   1           //RTIME7=0x03;RTIME8=0x05;RTIME9=0x04;
 269   1           RTIMEA=0x29;//打开晶振并允许RTC计时
 270   1           RTIMEB=0x0a;//每秒计时走一次,24小时制
 271   1           i=RTIMEC;
 272   1           i=RTIMED;
 273   1      }
 274          void write_12887(void)
 275          {uint8 i;
 276   1            //P13=0;
 277   1            i=RTIMED;//0x80 formal 0x00 lithium battery use up
 278   1            RTIMEA=0x20; 
 279   1            RTIMEB=0x8a;
 280   1            RTIME0=date[5];
 281   1            RTIME2=date[4];
 282   1            RTIME4=date[3];
 283   1            RTIME7=date[2];
 284   1            RTIME8=date[1];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -