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

📄 serial.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 198   3                              // while((UARTLSR&0x60)==0){}
 199   3                              // UARTTHR=0x05;
 200   3                              // while((UARTLSR&0x60)==0){}
 201   3                              // UARTTHR=mon;
 202   3                          rcv_inf00=0;
 203   3                      }
 204   2                        if(rcv_inf00==0x06){//清零第0页
 205   3                              rcv_inf00=0;
 206   3                     //       pa=&lose;    //刘宝贵修 本条有语法错误   是不是这个样子:pa&=lose
 207   3                              for(k=0;k<0x108;k++){
 208   4                                  *(&pa+k)=0;}                        
 209   3                              sp=&pa; 
 210   3                              buffer1write(0x108,0);
 211   3                              delay(400);       
 212   3                          buffer1topageprogerase(0);  //pageaddr
 213   3                          delay(400);
 214   3                      }
 215   2          }
 216   1      }
 217          
 218          /*********************************************************************************************************
 219          ** 函数名称: comm
 220          ** 功能描述: 串口中断处理程序
 221          ** 输 入: 无
 222          ** 输 出: 无
 223          ** 全局变量: 无
 224          ** 调用模块: 无
 225          **
 226          ** 作 者: 曾银玲
 227          ** 日 期: 2004年11月25日
 228          **-------------------------------------------------------------------------------------------------------
 229          ** 修改人: 曾银玲
 230          ** 日 期: 2004年11月31日
 231          **------------------------------------------------------------------------------------------------------
 232          ********************************************************************************************************/
 233          #pragma disable                                        /* 除非最高优先级中断,否则,必须加上这一句        
             -         */
 234          /*              void comm(void) interrupt 4
 235          {
 236              uint8 data temp;
 237                  if (RI == 1)
 238                  {
 239                  OS_INT_ENTER();
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 5   

 240                          RI = 0;
 241                  OSQIntPost(SerialInData,SBUF);
 242                  OSIntExit();
 243                          return;
 244                  }
 245                  if (TI == 1)
 246                  {
 247                          TI = 0;
 248                          if (OSQAccept(&temp,SerialOutData) == OS_Q_OK)
 249                          {
 250                              SBUF = temp;
 251                          }
 252                          else
 253                          {
 254                              SerialCanSend = 1;
 255                          }
 256                  }
 257          }
 258          */
 259          void serial_INT(void) interrupt 4 using 2
 260          {
 261   1          uint8 i;
 262   1      
 263   1          if(TI){trans_over=1;TI=0;}
 264   1      
 265   1          if(RI){
 266   2              i=SBUF;
 267   2              if(!head00_over){
 268   3                  if(i==0xfc){ head00_over=1;}}
 269   2              //else if(!head01_over){if(i==0xfc){head01_over=1;}}    
 270   2              else if(!head02_over){ //re0_c=0;
 271   3                           if(i==0x33){rcv_inf00=7;head02_over=1;}
 272   3                           else if(i==0x01){head02_over=1;rcv_inf00=1;}
 273   3                           else if(i==0x02){rcv_inf00=2;head00_over=0;head01_over=0;head02_over=0;}
 274   3                           else if(i==0x03){head02_over=1;rcv_inf00=3;}
 275   3                           else if(i==0x04){head02_over=1;rcv_inf00=4;}
 276   3                           else if(i==0x05){rcv_inf00=5;head00_over=0;head01_over=0;head02_over=0;}
 277   3                           else{ if(i==0x06){rcv_inf00=6;head00_over=0;head01_over=0;head02_over=0;}}}
 278   2                                                      
 279   2              else{
 280   3                     if(rcv_inf00==0x07){
 281   4                                     rx[re0_c]=i;re0_c++;rcv_flag=0;noinf_4s=0;
 282   4                                     if(re0_c>=5){rcv_inf01=7;re0_c=0;
 283   5                                   head00_over=0;head01_over=0;head02_over=0;}}
 284   3                     else if(rcv_inf00==0x01){date[re0_c]=i;re0_c++;
 285   4                          if(re0_c==6){head00_over=0;head01_over=0;head02_over=0;
 286   5                               rcv_inf01=1;re0_c=0;}}
 287   3                     else if(rcv_inf00==0x03){lenth[re0_c]=i;re0_c++;
 288   4                           if(re0_c>=4){rcv_inf01=2;re0_c=0;
 289   5                                   head00_over=0;head01_over=0;head02_over=0;}}
 290   3                     else if(rcv_inf00==0x04){date[0]=i;rcv_inf01=3;head00_over=0;head01_over=0;head02_over=0;}}
 291   2              RI=0;
 292   2              }
 293   1      }
 294          /*********************************************************************************************************
 295          ** 函数名称: send_y_h
 296          ** 功能描述: 串口发送时间程序
 297          ** 输 入: 无
 298          ** 输 出: 无
 299          ** 全局变量: 无
 300          ** 调用模块: 无
 301          **
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 6   

 302          ** 作 者: 曾银玲
 303          ** 日 期: 2004年11月25日
 304          **********************************************************************************************************
             -**/
 305          
 306          void send_y_h(void)
 307          {uint8 i;
 308   1               read_date();read_time();
 309   1               if(rcv_inf00==0x02){
 310   2                      rcv_inf00=0;
 311   2               while(!trans_over){}
 312   2               SBUF=0xfc;trans_over=0;
 313   2               while(!trans_over){}
 314   2               SBUF=0x02;trans_over=0;
 315   2               
 316   2               for(i=0;i<6;i++){
 317   3               while(!trans_over){}
 318   3               SBUF=date[i];
 319   3               trans_over=0;}}
 320   1               if(rcv_inf10==0x02){
 321   2                      rcv_inf10=0;
 322   2                      while((UARTLSR&0x60)==0){}
 323   2                      UARTTHR=0xfc;
 324   2                      while((UARTLSR&0x60)==0){}
 325   2                      UARTTHR=0xfc;
 326   2                      for(i=0;i<6;i++){
 327   3      
 328   3                      while((UARTLSR&0x60)==0){}
 329   3                      UARTTHR=date[i];}}
 330   1               
 331   1      }
 332          /*********************************************************************************************************
 333          ** 函数名称: send_y_h
 334          ** 功能描述: 串口发送信息程序
 335          ** 输 入: 无
 336          ** 输 出: 无
 337          ** 全局变量: 无
 338          ** 调用模块: 无
 339          **
 340          ** 作 者: 曾银玲
 341          ** 日 期: 2004年11月25日
 342          **********************************************************************************************************
             -**/
 343          
 344          void send_inf(void)
 345          {
 346   1              uint16 i,j,start_octet,end_octet;
 347   1              lenth[2]=BCD_D(lenth[2]);
 348   1              lenth[3]=BCD_D(lenth[3]);
 349   1              start_octet=(lenth[0]<<8)+lenth[1];
 350   1              end_octet=start_octet+(lenth[2]<<8)+lenth[3];
 351   1              if(rcv_inf01==0x02){
 352   2                      rcv_inf01=0;
 353   2               while(!trans_over){}
 354   2               SBUF=0xfc;trans_over=0;
 355   2               while(!trans_over){}
 356   2               SBUF=0x03;trans_over=0;
 357   2      
 358   2              for(i=start_octet;i<end_octet;i++){
 359   3              page_buffer2_trans(i);
 360   3              delay(400);
 361   3              buffer2_read(0x107,0);
C51 COMPILER V7.06   SERIAL                                                                06/20/2005 15:36:06 PAGE 7   

 362   3            delay(400);//可修改
 363   3              for(j=0;j<0x107;j++){
 364   4                      while(!trans_over){}
 365   4                      SBUF=*(sp0+j);trans_over=0;
 366   4                      }}
 367   2              }
 368   1              if(rcv_inf11==0x02){
 369   2                      rcv_inf11=0;
 370   2                      while((UARTLSR&0x60)==0){}
 371   2                      UARTTHR=0xfc;
 372   2                      while((UARTLSR&0x60)==0){}
 373   2                      UARTTHR=0x03;
 374   2              for(i=start_octet;i<end_octet;i++){
 375   3              page_buffer2_trans(i);
 376   3              delay(400);
 377   3              buffer2_read(0x107,0);
 378   3            delay(400);//可修改
 379   3              for(j=0;j<0x107;j++){
 380   4                      while((UARTLSR&0x60)==0){}
 381   4                      UARTTHR=*(sp0+j);
 382   4                      }}
 383   2              }
 384   1              
 385   1      }         
 386                   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1049    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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