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

📄 init_sys.lst

📁 c8051f020实现4个 产UART 口
💻 LST
📖 第 1 页 / 共 3 页
字号:
 190   1      }
 191          
 192          
 193          /**********************************************************************
 194          **函数原型:   void Attand_485(void)
 195          **入口参数:   Xin_485_b=1
 196          **出口参数:   无
 197          **返 回 值:   无
 198          **说    明:  T4定时中断子程序INIT
 199          ************************************************************************/
 200          
 201          
 202          void Timer4_Init (int counts)
 203          {
 204   1         CKCON&=0xbf;      //tm4=0    12 scale
 205   1         TH4=(65536-counts)/256;
 206   1         TL4=(65536-counts)%256;
 207   1         T4CON|=0x4;    //START
 208   1         RCAP4=65536-counts*SYSCLK/12000 ;   //65536-T*1000*SYSCLK/Scale /1000000       T(ms)
 209   1          
 210   1                    //TF4   EXF4    RCLK1     TCLK1         EXEN4     TR4       C/T4          CP/RL4 00000000
 211   1              //  位7      位6    位 5       位 4       位 3       位 2       位 1        位0
 212   1                  //  0         0       0            0                0               1             0           
             -   0                  
 213   1         
 214   1          T4CON|=0x4;    //START   TR4
 215   1          EIE2|=4;         // IE4=1
 216   1          
 217   1      }
 218          
 219          
 220          
 221          void Tpca_Init ()
 222          {
 223   1      
 224   1              // 配置PCA
 225   1              PCA0MD = 0x40; // 禁止CF中断
 226   1              // PCA时基= SYSCLK
 227   1              PCA0CPL0 = PWM; // 初始化PCA的PWM
 228   1              PCA0CPH0 = PWM;
 229   1              PCA0CPM0 = 0x42; // CCM0为8位PWM方
 230   1              DIS_PWM ;
 231   1              PCA0CN = 0x40; // 允许PCA计数器
 232   1      
 233   1      
 234   1      /*
 235   1           // PCA0CN = 0x40;               // BIT7 CF    BIT6 CR      Clear TF3; 
 236   1            PCA0MD=0X00;  //0X01;              //  scale 12         BIT0: ECF
 237   1                                             // use SYSCLK as timebase
 238   1           PCA0H=0X00;
 239   1           PCA0L=0X00;
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 5   

 240   1        
 241   1           //EIEP1.3
 242   1          EIP1=EIP1|0X08;   // PCA0 INT HGIH
 243   1      
 244   1              
 245   1          PCA0CPM0=0X46; 
 246   1         //。通过置位PCA0CPMn寄存器中ECOMn、TOGn和PWMn位来使能频率输
 247   1        //出方式。
 248   1        
 249   1          PCA0CPH0=120;
 250   1          PCA0CPL0=190;
 251   1         
 252   1           PCA0CN = 0x40;               // BIT7 CF    BIT6 CR      Clear TF3;   start Timer 
 253   1      */
 254   1      }
 255          
 256          
 257          
 258          uint  CWFTT=0;
 259          uint rr45,rr56;
 260          void Tpca_ISR (void) interrupt  9  using 2    //250uS  ONCE
 261          {
 262   1      
 263   1             PCA0CN &= 0x7F;               //CLR   BIT7 CF  
 264   1           //  PCA0H=0XFE;             //65536-461
 265   1            // PCA0L=0X33;
 266   1      
 267   1              PCA0H=0XFC;             //65536-461
 268   1             PCA0L=0X66;
 269   1                 
 270   1               /*
 271   1             CWFTT++;
 272   1                if(  CWFTT>4000)  {
 273   1                             CWFTT=0;
 274   1                             if(++rr45>=10)   {
 275   1                                          rr45=0;
 276   1                             if(++rr56>=20) 
 277   1                                              rr56=0;
 278   1                      }
 279   1               }
 280   1               */
 281   1              //Rf_2262();
 282   1      }
 283          
 284          
 285          
 286          
 287          
 288          
 289          
 290          
 291          
 292          /******************************************************************
 293          ;       提供50ms延时子程序
 294          ;       函数原型: void wait_50ms(void)
 295          *******************************************************************/
 296          void Wait_50ms(void)
 297          {
 298   1              os_wait2(K_TMO, 25);
 299   1      }
 300          
 301          //如是第一次上电则初始化EEPROM
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 6   

 302          // ttt 为1 时正常初始化,0时强行恢复出厂数据
 303          void  FLASH_INIT(uchar ttt )   {
 304   1              uchar *Poitc;
 305   1               uchar *Poitt11;
 306   1               uchar *Poitt22;
 307   1               xdata uint mmk;
 308   1                uchar Summ,timee;
 309   1      
 310   1                
 311   1      Looppp0:
 312   1                      timee=0;
 313   1                    // read_fm_memory(0,iic_data_buf,12);
 314   1                          while (1) {    // wait for EEProm is free
 315   2                                                                            if (EETask == 0xff) break;
 316   2                                                                            os_wait2(K_TMO, 2);
 317   2                            }
 318   1                            EECmd = FM_MEMORY_RD;                                                  
 319   1                            FM_addr=0;
 320   1                            FM_num=12;
 321   1                        
 322   1                            EETask = os_running_task_id();
 323   1                            os_send_signal(FMROM);
 324   1                            os_wait2(K_SIG, 0);
 325   1                            EETask = 0xff;   //EEProm read =================sample
 326   1                                 
 327   1                      if(iic_data_buf[8]!= MM0xa5||ttt==0)  {    
 328   2                                      Nessst44888:    
 329   2                                         Poitt11=(uchar *)&Para_all_True.Apn[0];
 330   2                                         Clr_MeM(Poitt11,(sizeof(Para_all_True)));
 331   2                                         
 332   2                                        Poitt11=(uchar *)&Para_all_True.Apn[0];
 333   2                                         Poitt22=(uchar *)&struct_Para_all_IniteValue.Apn[0];
 334   2                                         for(mmk=0;mmk<sizeof(Para_all_True);mmk++)  {
 335   3                                                        *Poitt11++= *Poitt22++;              
 336   3                                         }
 337   2      
 338   2                                         
 339   2                                      //清除所有报警 记录
 340   2                                        Clr_BaoJingJiLu_All() ;
 341   2                                      
 342   2                                        
 343   2                       }
 344   1                         else {
 345   2                              Nessst:
 346   2                                   Poitc=&Para_all_True.Apn[0];
 347   2                                       //read_fm_memory(0,Poitc,128);
 348   2                                           while (1) {    // wait for EEProm is free
 349   3                                                                            if (EETask == 0xff) break;
 350   3                                                                            os_wait2(K_TMO, 2);
 351   3                                                }
 352   2                                            EECmd = FM_MEMORY_RD;                                                  
 353   2                                            FM_addr=0;
 354   2                                            FM_num=253;
 355   2                                        
 356   2                                            EETask = os_running_task_id();
 357   2                                            os_send_signal(FMROM);
 358   2                                            os_wait2(K_SIG, 0);
 359   2                                                
 360   2                                         Summ=0;
 361   2                                               for(mmk=0;mmk<252;mmk++)
 362   2                                                       Summ+=iic_data_buf[mmk]; 
 363   2                                               
C51 COMPILER V7.50   INIT_SYS                                                              06/10/2007 23:11:21 PAGE 7   

 364   2                                              if(Summ!= iic_data_buf[mmk])  {
 365   3                                                        if(++ timee>9)  {
 366   4                                                                        EETask = 0xff;   //EEProm read =================sample
 367   4                                       
 368   4                                                                goto Nessst44888;    //连续记取6次不成功则恢复出
             -厂设置
 369   4                                                        }
 370   3                                                        else  {
 371   4                                                                 EETask = 0xff;   //EEProm read ================
             -=sample
 372   4                                       
 373   4                                                                        goto Nessst;
 374   4                                                              }
 375   3                                              }
 376   2      
 377   2                                                
 378   2                                            EETask = 0xff;   //EEProm read =================sample
 379   2                                            for(mmk=0;mmk<253;mmk++)
 380   2                                                       *Poitc++=iic_data_buf[mmk];
 381   2                                      
 382   2      
 383   2                                       
 384   2                               //**说    明:   读报警记录到内存
 385   2                            #if (Is_JiLuRecIn2416 == 1 )  

⌨️ 快捷键说明

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