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

📄 main.lst

📁 利用NTC电阻实现温度测试,带详细文档和C语言代码,测试温度误差在0.5度.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 176   3                              {
 177   4                                      EEWrite(addr_card, RxBuf[13-m]);        //将12字节卡号参数写到FLASH中
 178   4                      }
C51 COMPILER V7.02a   MAIN                                                                 07/10/2006 12:05:33 PAGE 4   

 179   3                      }
 180   2                              EEWrite(config_addr, RxBuf[13]);//将配置参数写到FLASH中
 181   2                              EEWrite((config_addr+1), RxBuf[14]);//将时间参数写到FLASH中
 182   2              }
 183   1        //--------------------------------------------//
 184   1              //从FLASH中读出12字节的卡号以及配置参数
 185   1              for(m=1,addr_card=Addr_Cardno;m<13;m++,addr_card++)
 186   1              {
 187   2                      TxBuf[m]=EERead(addr_card);    //读取卡号
 188   2              }
 189   1              tconf.buf[13]=EERead(config_addr); //读取发送配置参数
 190   1              rconf.buf[13]=tconf.buf[13];      //读取接收配置参数
 191   1              TIME=EERead(config_addr+1);       //读取时间参数
 192   1      }
 193          
 194           /*************************************************
 195            Function:        Config
 196            Description:     参数配置
 197                                                  1,接收配置读卡器发送过来的卡号,收发功率,收发速率
 198                                                  2,返回上述参数给配置读卡器
 199            Calls:                void Init(void)
 200                                                  void Init_Receiver(void)
 201                                                  void Receiver(unsigned char *rxbuf)
 202                              void Transmitter(unsigned char *txbuf)
 203            Called By:        void main(void)                      
 204            Input:     
 205            Output:    
 206            Return:    
 207            Others:    
 208          *************************************************/ 
 209          unsigned char Config(void)
 210          {
 211   1              unsigned char s,Rnum,set_card_sign;
 212   1              Init();
 213   1              Init_Receiver(); //接收初始化
 214   1              set_card_sign=0;
 215   1              Rnum=0;
 216   1              do{
 217   2                      Rnum++;
 218   2                #ifdef DEBUG
                          LED3=0;
                        #endif
 221   2                  //Init_Receiver(); //接收初始化
 222   2                      for(s=0;s<RNUM;s++)
 223   2                      {
 224   3                       RxBuf[s]=0;    
 225   3                      } 
 226   2                  Receiver(RxBuf);
 227   2                      //判断是否是设置卡号命令
 228   2                      if((RxBuf[0]==SetCardNo)&&((RxBuf[1]^RxBuf[2]^RxBuf[3]^RxBuf[4]^RxBuf[5]^RxBuf[6]^RxBuf[7]
 229   2                      ^RxBuf[8]^RxBuf[9]^RxBuf[10]^RxBuf[11]^RxBuf[12]^RxBuf[13]^RxBuf[14])==RxBuf[15]))
 230   2                      {
 231   3                              Rnum=255;
 232   3                              set_card_sign=1;
 233   3                              /*
 234   3                         #ifdef DEBUG
 235   3                               LED3=1;
 236   3                         #endif
 237   3                         */
 238   3                      }       
 239   2                Delayms( Setdelaytime);       //延时1ms
 240   2                /*
C51 COMPILER V7.02a   MAIN                                                                 07/10/2006 12:05:33 PAGE 5   

 241   2              #ifdef DEBUG
 242   2                LED4=0;
 243   2              #endif
 244   2              */
 245   2          }while(Rnum<250);         //连续接受5秒数据
 246   1              /*
 247   1              #ifdef DEBUG
 248   1               LED4=1;
 249   1              #endif
 250   1              */
 251   1      //----------------------------------------------
 252   1          //将接收到的卡号和参数返回给设置读卡器
 253   1      //----------------------------------------------
 254   1              if(set_card_sign)
 255   1              {       TxBuf[0]=TransmitCardNo;
 256   2                  TxBuf[1]=RxBuf[1];
 257   2                      TxBuf[2]=RxBuf[2];
 258   2                      TxBuf[3]=RxBuf[3];
 259   2                      TxBuf[4]=RxBuf[4];
 260   2                      TxBuf[5]=RxBuf[5];
 261   2                  TxBuf[6]=RxBuf[6];
 262   2                      TxBuf[7]=RxBuf[7];
 263   2                      TxBuf[8]=RxBuf[8];
 264   2                      TxBuf[9]=RxBuf[9];
 265   2                      TxBuf[10]=RxBuf[10];
 266   2                      TxBuf[11]=RxBuf[11];
 267   2                      TxBuf[12]=RxBuf[12];
 268   2                      TxBuf[13]=RxBuf[15];
 269   2                      Delayms(5);
 270   2                      Rnum=0;
 271   2                      do{
 272   3                              Rnum++;
 273   3                              Transmitter(&TxBuf[0]);//发送接收到的数据
 274   3                              /*
 275   3                        #ifdef DEBUG
 276   3                              LED3=0;
 277   3                      Delayms(5);  
 278   3                              LED3=1;
 279   3                        #endif
 280   3                        */
 281   3                              Delay100us(RCdelaytime);
 282   3                         }while(Rnum<5);      //连续发送5次数据
 283   2              }
 284   1        return set_card_sign;
 285   1      }
 286          
 287          /*************************************************
 288            Function:        Init
 289            Description:     CPU的初始化
 290                                                  1,I/O口的方向初始化
 291                                                  2,I/O口的输出初始化
 292                                                  3,SPI初始化
 293                                                  3,串口初始化
 294                                                  4,发送接收缓冲区初始化
 295            Calls:           
 296            Called By:        void main(void);                     
 297            Input:     
 298            Output:    
 299            Return:    
 300            Others:    
 301          *************************************************/ 
 302           void Init(void)
C51 COMPILER V7.02a   MAIN                                                                 07/10/2006 12:05:33 PAGE 6   

 303           {
 304   1      
 305   1      //  Port ini
 306   1      
 307   1          P0_ALT = 0x06;  // Select alternate functions on pins P0.1 and P0.2,  TXD RXD 
 308   1         // P0_DIR = 0x09;                  // P0.0, P0.3 is input(S1, S2), the rest output
 309   1         // P0 = 0xF0;                      // P0.7-P0.4 = 1 for OFF LED1-LED4    
 310   1          P1_DIR = 0x03;                                      // P0.0, P0.3 is input(S3, S4),
 311   1      
 312   1      //      LED1=1;
 313   1      //      LED2=1;
 314   1      //      LED3=1;
 315   1      //      LED4=1;
 316   1      
 317   1          PWR_UP = 1;                     // Turn on Radio
 318   1          Delay100us(30);                 // Wait > 3ms 
 319   1          SPICLK = 0;                     // Max SPI clock (XTAL/8)
 320   1          SPI_CTRL = 0x02;                // Connect internal SPI controller to Radio
 321   1      
 322   1      //  serial communication ini
 323   1          TH1 = 230;      // 9600@16MHz (when T1M=1 and SMOD=1)
 324   1          CKCON |= 0x10;  // T1M=1 (/4 timer clock)
 325   1          PCON = 0x80;    // SMOD=1 (double baud rate)
 326   1          SCON = 0x52;    // Serial mode1, enable receiver
 327   1          TMOD = 0x20;    // Timer1 8bit auto reload 
 328   1          TCON = 0x40;    // Start timer1 
 329   1      /*
 330   1      //定时器0初始化
 331   1              TH0   = 2;      //192us   
 332   1              TL0   = TH0;
 333   1              TR0   = 1;      //允许定时器0计数            
 334   1              EA=1;          //打开总中断控制位 
 335   1              ET0=0;            //关闭定时中断
 336   1      
 337   1              TRCOUNT=0;
 338   1              RxBuf[0]=0;
 339   1              RxBuf[1]=0;
 340   1      */
 341   1       }   
 342          
 343          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    643    ----
   CONSTANT SIZE    =    106    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      19
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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