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

📄 protocol.lst

📁 这是一个51单片机实现的控制器程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 188   2         	 {
 189   3         	 	case (0x20):
 190   3                       if(Rcv_Buf[Rcv_Rp+7]==Station
 191   3                          ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff)&&(!Key))
 192   3      
 193   3                         {
 194   4      
 195   4                           Trs_Comm=0xaa;
 196   4                           Trs_Comm_Bak=0xa0;
 197   4                           Trs_Flag=1;
 198   4      
 199   4                         }
 200   3         	 	break;
 201   3                     case (0x21):
 202   3                       if(!Key)
 203   3                         {
 204   4                          Station=Rcv_Buf[Rcv_Rp+7];
 205   4                          Write1B(Station,0,0);
 206   4                          Trs_Comm=0xaa;
 207   4                          Trs_Comm_Bak=0xa1;
 208   4                          Trs_Flag=1;
 209   4                         }
 210   3         	 	break;
 211   3                       case (0x31):
 212   3                      if(Rcv_Buf[Rcv_Rp+7]==Station)
 213   3                         {
 214   4                          House_R=Rcv_Buf[Rcv_Rp+9];
 215   4                          if(House_R!=0xff)
 216   4                            {
 217   5                                Yk_En=Read1B(15+(House_R-1)/8,0);
 218   5                                if (Rcv_Buf[Rcv_Rp+10]&0x80)
 219   5                                 {
 220   6                                  Yk_En|=(1<<((House_R-1)%8));
 221   6                                  YkStatus=0x81;
 222   6                                 }
 223   5                                 else
 224   5                                 {
 225   6                                  Yk_En&=~(1<<((House_R-1)%8));
 226   6                                  YkStatus=0x80;
 227   6                                 }
 228   5                                Write1B(Yk_En,15+(House_R-1)/8,0);
 229   5      
 230   5                              }
 231   4      
 232   4                           else   //0xff
 233   4                            {
 234   5                               if (Rcv_Buf[Rcv_Rp+10]&0x80)
 235   5                                 {
 236   6                                  YkStatus=0x81;
 237   6                                  for(i=0;i<5;i++)
 238   6                                  {
 239   7                                   Write1B(0xff,15+i,0);
 240   7                                  }
 241   6                                 }
C51 COMPILER V6.12  PROTOCOL                                                               10/22/2004 10:22:31 PAGE 5   

 242   5                               else
 243   5                                 {
 244   6                                  YkStatus=0x80;
 245   6                                  for(i=0;i<5;i++)
 246   6                                  {
 247   7                                   Write1B(0x0,15+i,0);
 248   7                                  }
 249   6                                 }
 250   5                              }
 251   4                          Trs_Comm=0xbb;
 252   4                          Trs_Comm_Bak=0xb1;
 253   4                          Trs_Flag=1;
 254   4                          Disp_Flag=1;
 255   4                         }
 256   3         	 	break;
 257   3      
 258   3                     case (0x36):        // TongDuan Status
 259   3                       if(Rcv_Buf[Rcv_Rp+7]==Station)
 260   3                         {
 261   4                          Trs_Comm=0xbb;
 262   4                          Trs_Comm_Bak=0xb6;
 263   4                          Trs_Flag=1;
 264   4                          House_R=Rcv_Buf[Rcv_Rp+9];
 265   4                          i=(House_R-1)/8;
 266   4                          Tmp=Read1B(15+i,0);
 267   4                          i=(House_R-1)%8;
 268   4                          Tmp=Tmp>>i;
 269   4                          if(Tmp&1)                //yk enable
 270   4                           {
 271   5                            i=(House_R-1)/8;
 272   5                            Tmp=Read1B(10+i,0);
 273   5                            i=(House_R-1)%8;
 274   5                            Tmp=Tmp>>i;
 275   5                            if(Tmp&1)
 276   5                             {
 277   6                              YkStatus=0xcc;
 278   6                             }
 279   5                             else
 280   5                             {
 281   6                              YkStatus=0x33;
 282   6                             }
 283   5                           }
 284   4                           else             //  yk disable
 285   4                           {
 286   5                              YkStatus=0x55;
 287   5                           }
 288   4                        }
 289   3                       break;
 290   3                     case (0x37):        //Yk TongDuan
 291   3      
 292   3                       if(Rcv_Buf[Rcv_Rp+7]==Station
 293   3                          ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
 294   3                         {
 295   4                          House_R=Rcv_Buf[Rcv_Rp+9];
 296   4                          YkNo=House_R-1;           //YkNo
 297   4                          YkHf=Rcv_Buf[Rcv_Rp+10];  //YkHf
 298   4                          if(House_R==0xff)
 299   4                           {
 300   5                            Yk_All=1;
 301   5                            YkNo=0;
 302   5                           }
 303   4                           else
C51 COMPILER V6.12  PROTOCOL                                                               10/22/2004 10:22:31 PAGE 6   

 304   4                           {
 305   5                            Yk_All=0;
 306   5                            i=YkNo/8;
 307   5                            Tmp=Read1B(15+i,0);
 308   5                            i=YkNo%8;
 309   5                            Tmp=(Tmp>>i)&1;
 310   5                              {
 311   6                               YkPro(YkNo,YkHf);
 312   6                               Trs_Comm=0xbb;
 313   6                               Trs_Comm_Bak=0xb7;
 314   6                               YkStatus=0xaa;
 315   6                               Trs_Flag=1;
 316   6                              }
 317   5                           }
 318   4                         }
 319   3      
 320   3                       break;
 321   3      
 322   3                    case (0x52):        //供电时段查询
 323   3      
 324   3                       if(Rcv_Buf[Rcv_Rp+7]==Station)
 325   3      
 326   3                         {
 327   4                          Week_Tmp=Rcv_Buf[Rcv_Rp+12];
 328   4                          No_Tmp=Rcv_Buf[Rcv_Rp+13];
 329   4                          Trs_Comm=0xD2;
 330   4                          Trs_Flag=1;
 331   4                         }
 332   3      
 333   3                       break;
 334   3                     case (0x53):        //供电时段设置
 335   3      
 336   3                       if(Rcv_Buf[Rcv_Rp+7]==Station
 337   3                          ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
 338   3                         {
 339   4                          i=Rcv_Buf[Rcv_Rp+12]-1;  //WEEK
 340   4                          Tmp=Rcv_Buf[Rcv_Rp+13]-1;   //序号
 341   4                          if(i<7 && Tmp<5)
 342   4                          {
 343   5                          Tmp1=Rcv_Buf[Rcv_Rp+14];
 344   5                          Write1B(Tmp1,20+10*i+2*Tmp,0);    //开始 时
 345   5                          Tmp1=Rcv_Buf[Rcv_Rp+15];
 346   5                          Write1B(Tmp1,20+10*i+2*Tmp+1,0);    //开始 分
 347   5      
 348   5                          Tmp1=Rcv_Buf[Rcv_Rp+16];
 349   5                          Write1B(Tmp1,90+10*i+2*Tmp,0);    //结束 时
 350   5                          Tmp1=Rcv_Buf[Rcv_Rp+17];
 351   5                          Write1B(Tmp1,90+10*i+2*Tmp+1,0);    //结束 分
 352   5                          Trs_Comm=0xaa;
 353   5                          Trs_Comm_Bak=0xD3;
 354   5                          Trs_Flag=1;
 355   5                          }
 356   4                         }
 357   3      
 358   3                       break;
 359   3      
 360   3                     case (0x58):        //查询时钟
 361   3      
 362   3                       if(Rcv_Buf[Rcv_Rp+7]==Station)
 363   3      
 364   3                         {
 365   4                          Trs_Comm=0xd8;
C51 COMPILER V6.12  PROTOCOL                                                               10/22/2004 10:22:31 PAGE 7   

 366   4                          Trs_Flag=1;
 367   4      
 368   4                         }
 369   3      
 370   3                       break;
 371   3      
 372   3                      case (0x59):        //对钟
 373   3      
 374   3                       if(Rcv_Buf[Rcv_Rp+7]==Station
 375   3                          ||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
 376   3                         {
 377   4                          Cs12887=0;
 378   4                          RegB|=0x80;
 379   4                          Year=Rcv_Buf[Rcv_Rp+9];
 380   4                          Month=Rcv_Buf[Rcv_Rp+10];
 381   4                          Day=Rcv_Buf[Rcv_Rp+11];
 382   4                          Hour=Rcv_Buf[Rcv_Rp+12];
 383   4                          Minute=Rcv_Buf[Rcv_Rp+13];

⌨️ 快捷键说明

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