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

📄 386.lst

📁 C开发的报警程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 251          }
 252          
 253          */
 254          
 255          void MT8880_StatusRegister_READ()
 256          {
 257   1        
 258   1        MT8880_CP2=0; 
 259   1        MT8880_RW=1;      //读状态寄存器
 260   1        MT8880_RS0=1;
 261   1        MT8880_CS=0;
 262   1        MT8880_D0=1;         
 263   1        MT8880_D1=1;        
 264   1        MT8880_D2=1;  
 265   1        MT8880_D3=1;  
 266   1        MT8880_CP2=1; 
 267   1       
 268   1      }
 269          
 270          void MT8880_DataRegister_READ()
 271          {
 272   1        MT8880_CP2=0;      
 273   1        MT8880_RW=1;      //读接收数据寄存器
 274   1        MT8880_RS0=0;
 275   1        MT8880_CS=0;    //给时钟信号
 276   1        MT8880_D0=1;         
 277   1        MT8880_D1=1;        
 278   1        MT8880_D2=1;  
 279   1        MT8880_D3=1;
 280   1        MT8880_CP2=1;  //读状态寄存器值到D0-D3口
 281   1        
 282   1      }
 283          
 284          void MT8880_ControlRegister_Initialize()
 285          { 
 286   1        MT8880_CP2=0;
 287   1       
 288   1        MT8880_RS0=1;   //du 1  
 289   1        MT8880_RW=1;
 290   1        MT8880_CS=0; 
 291   1        MT8880_D0=1;        
 292   1        MT8880_D1=1;       
 293   1        MT8880_D2=1;  
 294   1        MT8880_D3=1; 
 295   1        MT8880_CP2=1;
 296   1        MT8880_CP2=0;
 297   1        MT8880_CS=1;
 298   1      
 299   1        MT8880_RS0=1;  //xie 1
 300   1        MT8880_RW=0;
 301   1        MT8880_CS=0;
 302   1        MT8880_D0=0;         
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 6   

 303   1        MT8880_D1=0;        
 304   1        MT8880_D2=0;  
 305   1        MT8880_D3=0; 
 306   1        MT8880_CP2=1; 
 307   1        MT8880_CP2=0;
 308   1        MT8880_CS=1; 
 309   1      
 310   1        MT8880_RS0=1;  //xie2
 311   1        MT8880_RW=0; 
 312   1        MT8880_CS=0;     
 313   1        MT8880_D0=0;       
 314   1        MT8880_D1=0;        
 315   1        MT8880_D2=0;  
 316   1        MT8880_D3=0;
 317   1        MT8880_CP2=1; 
 318   1        MT8880_CP2=0;
 319   1        MT8880_CS=1;
 320   1      
 321   1        MT8880_RS0=1;  //xie3
 322   1        MT8880_RW=0; 
 323   1        MT8880_CS=0;     
 324   1        MT8880_D0=0;       
 325   1        MT8880_D1=0;        
 326   1        MT8880_D2=0;  
 327   1        MT8880_D3=1;
 328   1        MT8880_CP2=1; 
 329   1        MT8880_CP2=0;
 330   1        MT8880_CS=1;
 331   1      
 332   1      
 333   1        MT8880_RS0=1;  //xie4
 334   1        MT8880_RW=0; 
 335   1        MT8880_CS=0;     
 336   1        MT8880_D0=0;       
 337   1        MT8880_D1=0;        
 338   1        MT8880_D2=0;  
 339   1        MT8880_D3=0;
 340   1        MT8880_CP2=1; 
 341   1        MT8880_CP2=0;
 342   1        MT8880_CS=1;
 343   1      
 344   1        MT8880_RS0=1;  //du 2
 345   1        MT8880_RW=1; 
 346   1        MT8880_CS=0; 
 347   1        MT8880_D0=1;         
 348   1        MT8880_D1=1;        
 349   1        MT8880_D2=1;  
 350   1        MT8880_D3=1; 
 351   1        MT8880_CP2=1;
 352   1        MT8880_CP2=0;
 353   1        MT8880_CS=1;
 354   1        
 355   1        MT8880_D0=1;  //总线复位       
 356   1        MT8880_D1=1;        
 357   1        MT8880_D2=1;  
 358   1        MT8880_D3=1;
 359   1         
 360   1      }
 361          
 362          
 363          void MT8880_ControlRegister_Write()
 364          {
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 7   

 365   1        MT8880_CS=1;
 366   1      
 367   1        MT8880_RW=0;      //写控制寄存器
 368   1        MT8880_RS0=1;
 369   1        MT8880_D0=1;  //使能tone输出       
 370   1        MT8880_D1=0;  //选用双音多频方式,不用CP方式      
 371   1        MT8880_D2=0;  //此脚在实际电路中未接,不管
 372   1        MT8880_D3=1;  //本次操作CRA,下一个写操作选择CRB 
 373   1        MT8880_CS=0;
 374   1        MT8880_CP2=1;//给时钟信号,写D0-D3口值到控制寄存器   
 375   1        MT8880_CP2=0;    
 376   1        MT8880_CS=1;
 377   1        
 378   1        MT8880_RW=0;   //写控制寄存器
 379   1        MT8880_RS0=1;
 380   1        MT8880_D0=0;      
 381   1        MT8880_D1=0;        
 382   1        MT8880_D2=0;  
 383   1        MT8880_D3=0; 
 384   1        MT8880_CS=0;  
 385   1        MT8880_CP2=1;  //给时钟信号,写D0-D3口值到控制寄存器   
 386   1        MT8880_CP2=0;    
 387   1        MT8880_CS=1;
 388   1        
 389   1        MT8880_D0=1;  //总线复位       
 390   1        MT8880_D1=1;        
 391   1        MT8880_D2=1;  
 392   1        MT8880_D3=1;  
 393   1      }
 394          
 395          void MT8880_WriteOne(unsigned char SendData)  //使用入口参数,即要发送的数
 396          { 
 397   1         MT8880_CS=1;    
 398   1         MT8880_CP2=0;
 399   1         MT8880_RW=0;      //写传输数据寄存器
 400   1         MT8880_RS0=0;
 401   1      
 402   1        switch(SendData)
 403   1        {
 404   2         case 10: MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break; 
 405   2         case 1:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=0;break;
 406   2         case 2:  MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
 407   2         case 3:  MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
 408   2         case 4:  MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
 409   2         case 5:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
 410   2         case 6:  MT8880_D0=0; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
 411   2         case 7:  MT8880_D0=1; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
 412   2         case 8:  MT8880_D0=0; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
 413   2         case 9:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
 414   2         case 11: MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break;  // *
 415   2         case 12: MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=1;break;  // #
 416   2        }
 417   1         MT8880_CS=0;    //给时钟信号,写D0-D3口值到控制寄存器
 418   1         MT8880_CP2=1;
 419   1         
 420   1         MT8880_CP2=0;
 421   1         MT8880_CS=1;
 422   1          
 423   1         MT8880_D0=1;  //写操作完后一定要总线复位       
 424   1         MT8880_D1=1;        
 425   1         MT8880_D2=1;  
 426   1         MT8880_D3=1;
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 8   

 427   1       
 428   1      }
 429          
 430          
 431          void START24C02(void)     /////启动24c02
 432          {
 433   1        scl=0;sda=1;  //用“读”来开始准备启动24C02的工作,把数据线置高,为启动的“下跳”准备
 434   1        scl=1;sda=0;  //启动
 435   1        scl=0;        //为“写”周期做准备,即准备控制线上跳。
 436   1      }
 437          
 438          void STOP24C02(void)     /////停止24C02
 439          {
 440   1        sda=0;scl=1;
 441   1        sda=1;scl=0;            
 442   1      }
 443          
 444          bit Check24C02()    //应答位检查
 445          {
 446   1        bit Check=0;
 447   1        sda=1;scl=1;
 448   1        Check=sda;   //接收应答信号
 449   1        scl=0;  
 450   1        return(Check);
 451   1      }
 452          
 453          void MACK(void)    //发送应答
 454          {
 455   1       sda=0;scl=1;scl=0;sda=1;
 456   1      }
 457          
 458          void MNACK(void)   //发送非应答
 459          {
 460   1       sda=1;scl=1;scl=0;sda=0;
 461   1      }
 462          
 463          void WriteOneByte(unsigned char dd)     ///写一个字节,已经完善,不再修改-----------------------------
 464          {
 465   1        ACC=dd;
 466   1        sda=aa7;scl=1;scl=0;  //  数据在scl=0时才能改变
 467   1        sda=aa6;scl=1;scl=0;
 468   1        sda=aa5;scl=1;scl=0;
 469   1        sda=aa4;scl=1;scl=0;
 470   1        sda=aa3;scl=1;scl=0;
 471   1        sda=aa2;scl=1;scl=0;
 472   1        sda=aa1;scl=1;scl=0;
 473   1        sda=aa0;_nop_();scl=1;scl=0;
 474   1        sda=0;                  //令总线处于备用状态
 475   1      }
 476          
 477          unsigned char ReadOneByte(void)       /////读一个字节-------------------------------
 478          {
 479   1        sda=1;
 480   1        scl=1;aa7=sda;scl=0;sda=1;
 481   1        scl=1;aa6=sda;scl=0;sda=1;
 482   1        scl=1;aa5=sda;scl=0;sda=1;
 483   1        scl=1;aa4=sda;scl=0;sda=1;
 484   1        scl=1;aa3=sda;scl=0;sda=1;
 485   1        scl=1;aa2=sda;scl=0;sda=1;
 486   1        scl=1;aa1=sda;scl=0;sda=1;
 487   1        scl=1;aa0=sda;scl=0;
 488   1        return(ACC);
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 9   

 489   1      }
 490          //---------------------------------------写整个数组到24c02----------------------------------//
 491          
 492          void Write24C02_Array(Number NUMBERW)
 493                                           /////入口参数为待传送数组
 494          {
 495   1        unsigned char NUMSERIAL;  
 496   1        unsigned char NUMBYT=NUMBERW[1]+1;      //取组成员个数
 497   1        unsigned char i;
 498   1        bit Check_bit;
 499   1        NUMSERIAL=NUMBERW[0];   //取组的序号
 500   1      
 501   1        switch(NUMSERIAL)             //设定数组存放起始位置
 502   1        {
 503   2         case 1: NUMSERIAL=102; break;  //数组1的起始位置=0 长24位
 504   2         case 2: NUMSERIAL=124;break; //数组2的起始位置=21 长13位
 505   2         case 3: NUMSERIAL=144;break; //数组3的起始位置=34 长13位
 506   2         case 4: NUMSERIAL=164;break; //数组4的起始位置=47 长13位
 507   2         case 5: NUMSERIAL=184;break; //数组5的起始位置=60 长13位
 508   2         case 6: NUMSERIAL=204;break; //数组6的起始位置=73 长13位
 509   2         case 7: NUMSERIAL=224;break; //数组7的起始位置=86 长5 位
 510   2         case 8: NUMSERIAL=230;break; //数组8的起始位置=90 长2位

⌨️ 快捷键说明

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