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

📄 366.lst

📁 该程序可作为386的接警程序使用
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.10  366                                                                    01/16/2006 16:07:10 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE 366
OBJECT MODULE PLACED IN E:\董\文\安\366\程序\下\366.OBJ
COMPILER INVOKED BY: E:\董\软件\lope\kc51\bin\C51.exe E:\董\文\安\366\程序\下\366.c SMALL OT(0,SIZE) SB OR DB OE

stmt level    source

   1          //----------------------------------------晶振480K 波特率7500--------------------------------------------/
             -/
   2            //#include "stdio.h"
   3            #include "string.h"
   4            #include <reg52.h>
   5            #include <intrins.h>
   6            #include <math.h>
   7          //---------------------------------------定义部分----------------------------------------------
   8          //P1
   9          sbit MT8880_D0=       P1^4;  //OUT/IN  双向数据总线                                5脚
  10          sbit MT8880_D1=       P1^5;  //OUT/IN  双向数据总线                                6脚  
  11          sbit MT8880_D2=       P1^6;  //OUT/IN  双向数据总线                                7脚
  12          sbit MT8880_D3=       P1^7;  //OUT/IN  双向数据总线                                8脚 
  13          //P3
  14          sbit MT8880_RW=        P3^2;  //OUT      读写选择控制                                12脚  
  15          sbit MT8880_CP2=       P3^3;  //OUT     8880的系统时钟                               13脚 
  16          sbit MT8880_CS=       P3^4;  //OUT                                                 14脚 
  17          sbit MT8880_RS0=      P3^5;  //OUT     变低时,进入现场监听状态                    15脚
  18          sbit sda=             P3^6;  //OUT     I2C总线控制线  sda是24C02的5脚              16脚 
  19          sbit scl=             P3^7;  //OUT     I2C总线数据线  scl是24C02的6脚              17脚 
  20          
  21          //P0
  22          sbit KD9561_START=    P0^2;  //OUT     启动KD9561输出                               37脚
  23          //P2
  24          //sbit BJ=              P2^0;  //OUT     报警LED指示,并送给LM393                     21脚 
  25          sbit LINE_ALARM=      P2^1;  //IN      电话线路故障报警开关                         22脚 
  26          sbit ToneTest=        P2^2;  //IN      峰值为3.5V的铃流脉冲信号检测                 23脚
  27          sbit J_LineToPhone=   P2^3;  //OUT     报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机   24脚
  28          sbit ZJ_2=          P2^6;  //out          共同摘机                                   27脚 
  29          
  30          int JISHU; 
  31          unsigned char POINTER_24C02,i;
  32          typedef unsigned char Number[10];      //定义一个10字节长的数组类型,用来放6组电话,一组密码,次数振铃,报
             -警延迟时间
  33          typedef unsigned char Number_P[5];
  34          struct ReadArray 
  35           {
  36            unsigned char Number24[22];
  37           }READARRAY;  
  38          sbit aa7=ACC^7;
  39          sbit aa6=ACC^6;
  40          sbit aa5=ACC^5;
  41          sbit aa4=ACC^4;
  42          sbit aa3=ACC^3;
  43          sbit aa2=ACC^2;
  44          sbit aa1=ACC^1;
  45          sbit aa0=ACC^0;
  46          
  47          //--------------------------------------函数部分-----------------------------------------------
  48          
  49          void DELAY_50ms()
  50          {
  51   1       EA=0;
  52   1       TMOD=0; //13位不重装定时器方式
  53   1       TL0=48;
C51 COMPILER V6.10  366                                                                    01/16/2006 16:07:10 PAGE 2   

  54   1       TH0=24;
  55   1       TCON=0;
  56   1       TR0=1; //定时器0启动,定时器1不启动
  57   1       wait: if(TF0==0)
  58   1            {
  59   2             _nop_();
  60   2             goto wait;
  61   2            }   
  62   1       TCON=0;//停动定时器0
  63   1      }
  64          
  65          void MT8880_StatusRegister_READ()
  66          {
  67   1        
  68   1        MT8880_CP2=0; 
  69   1        MT8880_RW=1;      //读状态寄存器
  70   1        MT8880_RS0=1;
  71   1        MT8880_CS=0;
  72   1        MT8880_D0=1;         
  73   1        MT8880_D1=1;        
  74   1        MT8880_D2=1;  
  75   1        MT8880_D3=1;  
  76   1        MT8880_CP2=1; 
  77   1       
  78   1      }
  79          
  80          void MT8880_DataRegister_READ()
  81          {
  82   1        MT8880_CP2=0;      
  83   1        MT8880_RW=1;      //读接收数据寄存器
  84   1        MT8880_RS0=0;
  85   1        MT8880_CS=0;    //给时钟信号
  86   1        MT8880_D0=1;         
  87   1        MT8880_D1=1;        
  88   1        MT8880_D2=1;  
  89   1        MT8880_D3=1;
  90   1        MT8880_CP2=1;  //读状态寄存器值到D0-D3口
  91   1        
  92   1      }
  93          
  94          void MT8880_ControlRegister_Initialize()
  95          { 
  96   1        MT8880_CP2=0;
  97   1       
  98   1        MT8880_RS0=1;   //du 1  
  99   1        MT8880_RW=1;
 100   1        MT8880_CS=0; 
 101   1        MT8880_D0=1;        
 102   1        MT8880_D1=1;       
 103   1        MT8880_D2=1;  
 104   1        MT8880_D3=1; 
 105   1        MT8880_CP2=1;
 106   1        MT8880_CP2=0;
 107   1        MT8880_CS=1;
 108   1      
 109   1        MT8880_RS0=1;  //xie 1
 110   1        MT8880_RW=0;
 111   1        MT8880_CS=0;
 112   1        MT8880_D0=0;         
 113   1        MT8880_D1=0;        
 114   1        MT8880_D2=0;  
 115   1        MT8880_D3=0; 
C51 COMPILER V6.10  366                                                                    01/16/2006 16:07:10 PAGE 3   

 116   1        MT8880_CP2=1; 
 117   1        MT8880_CP2=0;
 118   1        MT8880_CS=1; 
 119   1      
 120   1        MT8880_RS0=1;  //xie2
 121   1        MT8880_RW=0; 
 122   1        MT8880_CS=0;     
 123   1        MT8880_D0=0;       
 124   1        MT8880_D1=0;        
 125   1        MT8880_D2=0;  
 126   1        MT8880_D3=0;
 127   1        MT8880_CP2=1; 
 128   1        MT8880_CP2=0;
 129   1        MT8880_CS=1;
 130   1      
 131   1        MT8880_RS0=1;  //xie3
 132   1        MT8880_RW=0; 
 133   1        MT8880_CS=0;     
 134   1        MT8880_D0=0;       
 135   1        MT8880_D1=0;        
 136   1        MT8880_D2=0;  
 137   1        MT8880_D3=1;
 138   1        MT8880_CP2=1; 
 139   1        MT8880_CP2=0;
 140   1        MT8880_CS=1;
 141   1      
 142   1      
 143   1        MT8880_RS0=1;  //xie4
 144   1        MT8880_RW=0; 
 145   1        MT8880_CS=0;     
 146   1        MT8880_D0=0;       
 147   1        MT8880_D1=0;        
 148   1        MT8880_D2=0;  
 149   1        MT8880_D3=0;
 150   1        MT8880_CP2=1; 
 151   1        MT8880_CP2=0;
 152   1        MT8880_CS=1;
 153   1      
 154   1        MT8880_RS0=1;  //du 2
 155   1        MT8880_RW=1; 
 156   1        MT8880_CS=0; 
 157   1        MT8880_D0=1;         
 158   1        MT8880_D1=1;        
 159   1        MT8880_D2=1;  
 160   1        MT8880_D3=1; 
 161   1        MT8880_CP2=1;
 162   1        MT8880_CP2=0;
 163   1        MT8880_CS=1;
 164   1        
 165   1        MT8880_D0=1;  //总线复位       
 166   1        MT8880_D1=1;        
 167   1        MT8880_D2=1;  
 168   1        MT8880_D3=1;
 169   1         
 170   1      }
 171          
 172          
 173          void MT8880_ControlRegister_Write()
 174          {
 175   1        MT8880_CS=1;
 176   1      
 177   1        MT8880_RW=0;      //写控制寄存器
C51 COMPILER V6.10  366                                                                    01/16/2006 16:07:10 PAGE 4   

 178   1        MT8880_RS0=1;
 179   1        MT8880_D0=1;  //使能tone输出       
 180   1        MT8880_D1=0;  //选用双音多频方式,不用CP方式      
 181   1        MT8880_D2=0;  //此脚在实际电路中未接,不管
 182   1        MT8880_D3=1;  //本次操作CRA,下一个写操作选择CRB 
 183   1        MT8880_CS=0;
 184   1        MT8880_CP2=1;//给时钟信号,写D0-D3口值到控制寄存器   
 185   1        MT8880_CP2=0;    
 186   1        MT8880_CS=1;
 187   1        
 188   1        MT8880_RW=0;   //写控制寄存器
 189   1        MT8880_RS0=1;
 190   1        MT8880_D0=0;      
 191   1        MT8880_D1=0;        
 192   1        MT8880_D2=0;  
 193   1        MT8880_D3=0; 
 194   1        MT8880_CS=0;  
 195   1        MT8880_CP2=1;  //给时钟信号,写D0-D3口值到控制寄存器   
 196   1        MT8880_CP2=0;    
 197   1        MT8880_CS=1;
 198   1        
 199   1        MT8880_D0=1;  //总线复位       
 200   1        MT8880_D1=1;        
 201   1        MT8880_D2=1;  
 202   1        MT8880_D3=1;  
 203   1      }
 204          
 205          void MT8880_WriteOne(unsigned char SendData)  //使用入口参数,即要发送的数
 206          { 
 207   1         MT8880_CS=1;    
 208   1         MT8880_CP2=0;
 209   1         MT8880_RW=0;      //写传输数据寄存器
 210   1         MT8880_RS0=0;
 211   1      
 212   1        switch(SendData)
 213   1        {
 214   2         case 10: MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break; 
 215   2         case 1:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=0;break;
 216   2         case 2:  MT8880_D0=0; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
 217   2         case 3:  MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=0;break;
 218   2         case 4:  MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
 219   2         case 5:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=1; MT8880_D3=0;break;
 220   2         case 6:  MT8880_D0=0; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
 221   2         case 7:  MT8880_D0=1; MT8880_D1=1; MT8880_D2=1; MT8880_D3=0;break;
 222   2         case 8:  MT8880_D0=0; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
 223   2         case 9:  MT8880_D0=1; MT8880_D1=0; MT8880_D2=0; MT8880_D3=1;break;
 224   2         case 11: MT8880_D0=1; MT8880_D1=1; MT8880_D2=0; MT8880_D3=1;break;  // *
 225   2         case 12: MT8880_D0=0; MT8880_D1=0; MT8880_D2=1; MT8880_D3=1;break;  // #
 226   2        }
 227   1         MT8880_CS=0;    //给时钟信号,写D0-D3口值到控制寄存器
 228   1         MT8880_CP2=1;
 229   1         
 230   1         MT8880_CP2=0;
 231   1         MT8880_CS=1;
 232   1          
 233   1         MT8880_D0=1;  //写操作完后一定要总线复位       
 234   1         MT8880_D1=1;        
 235   1         MT8880_D2=1;  
 236   1         MT8880_D3=1;
 237   1       
 238   1      }

⌨️ 快捷键说明

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