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

📄 main.lst

📁 此源码为商用的电力抄表系统的主机端源程序。通过电力载波模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
 202   4      
 203   4                                                case 0x08:{if(frame[AMR_OS_L] == 0)sync_sendchar(0x7e);}break;
 204   4                    }
 205   3                 }break;
 206   2      
 207   2               case 0x02:{ uart_tx_mode(frame);}break;//远程设置控制//发送到远方模块
 208   2      
 209   2               case 0x03:{;}break;
 210   2                   
 211   2              }setup_t4(40, timeout_t4);delay_tx = 1;                 
 212   1      }
 213           /*=============================================================================*/
 214          /*                                                 数据发送到PC                                                                    */
 215          /*=============================================================================*/
 216          
 217          void amr_send_frame(uchar ibuf[])
 218          {
 219   1       // idata uchar o_frame[26];
 220   1        uchar  i;
 221   1        uchar  En;
 222   1      
 223   1             En = ibuf[AMR_OS_L] + 11;  //串口返回    
 224   1      
 225   1              clr_wdt();
 226   1          // preamble
 227   1          for (i = 0; i < 5; i++) amr_frame[i] = mcu_pc[i];   //放入0xFE      68
 228   1           clr_wdt();  
 229   1              for (i = 0; i < ibuf[AMR_OS_L]+6; i++)amr_frame[5+i] = ibuf[i];  //从C开始存放          
 230   1      
 231   1          amr_frame[En] = 0x16;  //多补16h    
 232   1          uart_sendblock(amr_frame, En+1); //串口送至PC
 233   1          clr_wdt(); 
 234   1      }
 235          /*=============================================================================* /
 236                                                             信息返回
 237          /*=============================================================================*/
C51 COMPILER V7.09   MAIN                                                                  01/12/2007 09:30:14 PAGE 5   

 238          
 239          void return_inf(uchar frame,uchar inf_buf[],uchar dat)
 240          {       
 241   1          uchar con;
 242   1          uchar buf[18];
 243   1              clr_wdt();
 244   1              buf[0] = frame;
 245   1          buf[1] = ADSS[0];
 246   1              buf[2] = ADSS[1];
 247   1              buf[3] = ADSS[2];
 248   1              buf[4] = ADSS[3];
 249   1          buf[AMR_OS_L] = dat;
 250   1          for(con = 0;con < buf[AMR_OS_L];con ++)     
 251   1                  buf[6+con] = inf_buf[con];  //放入状态信息
 252   1      
 253   1              amr_send_frame(buf);//串口返回PC
 254   1      
 255   1      }
 256          /*=============================================================================* /
 257                                                          串口发到2200C
 258          /*=============================================================================*/
 259          
 260          void uart_tx_mode(uchar i_buf[])
 261          {  
 262   1           uchar i,tom;
 263   1              uchar no_all = 0;
 264   1              uchar o_buf[18];
 265   1           tom = i_buf[AMR_OS_L] + 6;
 266   1           for (i = 0; i < tom; i++) //C, A,A,A,A,L, DATA
 267   1                 o_buf[i]      =      i_buf[i];//放入DATA数据
 268   1      
 269   1               if(tom < 18){            //不够18个数据后补0
 270   2                 no_all = 18 - tom;
 271   2                 for (i = 0; i < no_all; i++)
 272   2                 o_buf[tom+i]  =      0x00; 
 273   2               }
 274   1      
 275   1               if(i_buf[AMR_OS_L] > 18)i_buf[AMR_OS_L] = 18;//超过18个数只认18个数
 276   1      
 277   1      
 278   1               write_txbuffer(o_buf); //写入2200c
 279   1               sync_sendchar(0x7e);
 280   1      }
 281          /*=============================================================================* /
 282                                                          接收数据重组
 283          /*=============================================================================*/
 284          
 285          void rx_return(bit y,uchar R_data[])
 286          {
 287   1       uchar i;
 288   1       uchar o_buf[26];
 289   1         if(y)
 290   1               o_buf[0] = 0x40 + 0x04; //本地上传收到的CRC正确数据  B7B6 =bit-01,B5~B0 = 0x04h
 291   1         else
 292   1           o_buf[0] = 0x40 + 0x05; //本地上传收到的CRC错误数据  B7B6 =bit-01,B5~B0 = 0x05h
 293   1      
 294   1              o_buf[1] = ADSS[0];
 295   1              o_buf[2] = ADSS[1];
 296   1              o_buf[3] = ADSS[2];
 297   1              o_buf[4] = ADSS[3];
 298   1      
 299   1         o_buf[AMR_OS_L] = 0x12;  // L=18
C51 COMPILER V7.09   MAIN                                                                  01/12/2007 09:30:14 PAGE 6   

 300   1      
 301   1         for (i = 0; i < 18; i++)
 302   1                 o_buf[6 + i]  =      R_data[i];
 303   1      
 304   1         amr_send_frame(o_buf);
 305   1      }
 306          
 307          /*=============================================================================*/
 308          void adss_crc(uchar buf[])
 309          {
 310   1       if((buf[1] == ADSS[0])&&(buf[2] == ADSS[1])&&(buf[3] == ADSS[2])&&(buf[4] == ADSS[3]))
 311   1          adss_ok = 1;
 312   1       else adss_ok = 0;
 313   1      }
 314          /*=============================================================================*/
 315          /*=============================================================================* /
 316          
 317          /*=============================================================================*/
 318          /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
 319          /*=============================================================================* /
 320             智能控制演示程序(根据UPLM2200 API协议设定)
 321          软件说明:
 322          
 323             1.更新的版本,支持电力线和PC通讯协议,
 324             2.可读写FLASH作为地址掉电保存,写时通过串口发地址数据,掉电后地址在片内保存.
 325             3.当写FLASH时,RXOK会闪动,之后返回一帧数据.表示已写入FLASH,
 326             4.该程序设有看门狗,添加新组件时注意时间差.
 327             5.如无接表时,可返回一帧仿真数据< *\   /* >
 328             6.该串口的波特率为9600,偶校验,      -
 329             7.可通过PC或电力线上改变速率寄存器的值,并写入 FLASH  ~
 330             
 331          更新项目表:
 332          ------------------------------------------------------------------------------------------
 333          |更新人   |   模块组件       |       更新时间   |    更新内容
 334          --------------------------------------------------------------------------------------
 335          | liangfq |     全部         | 2006-02-17       |    程序设计第一版
 336          |         |                  |                  |  
 337          --------------------------------------------------------------------------------------
 338          | liangfq |           |  | 
 339          |         |                  |                  |
 340          --------------------------------------------------------------------------------------
 341          | liangfq |            |  | 
 342          |         |                  |                  |
 343          --------------------------------------------------------------------------------------
 344          | liangfq |                  |                  |
 345          |         |                  |                  |
 346          --------------------------------------------------------------------------------------
 347          | liangfq |                  |                  |
 348          |         |                  |                  |
 349          --------------------------------------------------------------------------------------
 350          | liangfq |                  |                  |
 351          |         |                  |                  |
 352          --------------------------------------------------------------------------------------
 353          | liangfq |                  |                  |
 354          |         |                  |                  |
 355          --------------------------------------------------------------------------------------
 356          | liangfq |                  |                  |
 357          |         |                  |                  |
 358          --------------------------------------------------------------------------------------
 359          | liangfq |                  |                  |
 360          |         |                  |                  |
 361          --------------------------------------------------------------------------------------
C51 COMPILER V7.09   MAIN                                                                  01/12/2007 09:30:14 PAGE 7   

 362          
 363          !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!                  
 364          
 365          !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
 366                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 367          !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
 368                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 369          !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
 370                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 371          !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
 372                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 373          
 374          /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
 375          
 376          
 377          
 378          
 379          
 380          
 381          
 382          
 383                   
 384          
 385          
 386          
 387          
 388          
 389          
 390          
 391          
 392          
 393          
 394          
 395          
 396          
 397          
 398          
 399          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    978    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      86
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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