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

📄 386.lst

📁 C开发的报警程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 1   


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

stmt level    source

   1          //-----------------------2006年2月14日版,是目前可用的唯一版本-------------------------//
   2            //#include "stdio.h"
   3            #include "string.h"
   4            #include <reg52.h>
   5            #include <intrins.h>
   6            #include <math.h>
   7            //#include <absacc.h>
   8          
   9          
  10          #if 0
              #define p 9 
              #define l 10 
              #endif
  14          //---------------------------------------定义部分----------------------------------------------
  15          //P1
  16          sbit LS164_CP=        P1^0;  //触发OUT     时钟,上升沿 
  17          sbit LS164_AB=        P1^1;  //OUT     串行输入
  18          sbit ISD1420_RECLED=  P1^2;  //IN      录音状态监视,放音完状态监视
  19          sbit ISD1420_PLAYL=   P1^3;  //OUT     语音存储芯片的电平放音方式  单片机4脚
  20          sbit MT8880_D0=       P1^4;  //OUT/IN  双向数据总线
  21          sbit MT8880_D1=       P1^5;  //OUT/IN  双向数据总线
  22          sbit MT8880_D2=       P1^6;  //OUT/IN  双向数据总线
  23          sbit MT8880_D3=       P1^7;  //OUT/IN  双向数据总线
  24          
  25          //P3
  26          sbit MT8880_RW=       P3^0;  //OUT     读写选择控制
  27          sbit MT8880_CP2=      P3^1;  //OUT     8880的系统时钟
  28          sbit Sound_Du=        P3^2;  //OUT     发出嘟叫声
  29          sbit MT8880_CS=       P3^3;  //OUT     8880的片选
  30          sbit MT8880_RS0=      P3^4;  //OUT     8880的寄存器选择,配合读写脚,控制读/写控制/数据寄存器
  31          sbit Control_Listen=  P3^5;  //OUT     变低时,进入现场监听状态
  32          sbit scl=             P3^6;  //OUT     I2C总线控制线
  33          sbit sda=             P3^7;  //OUT     I2C总线数据线
  34          
  35          //P0
  36          sbit DY=              P0^0;  //OUT     电源LED指示
  37          sbit NOP1=            P0^1;  //NOP     空脚
  38          sbit KD9561_START=    P0^2;  //OUT     启动KD9561输出 
  39          sbit ISD1420_REC_ZJ=  P0^3;  //OUT/IN  录音按钮按下时,与REC脚相连,并监视编程模式下电话是否摘机
  40          sbit FQ4_NC_IN=       P0^4;  //IN      防区4常闭输入
  41          sbit FQ123_NC_IN=     P0^5;  //IN      防区1,2,3常闭输入
  42          sbit NOP2=            P0^6;  //NOP     空脚
  43          sbit HX2272_D3=       P0^7;  //IN      遥控解码器数据总线输入
  44          
  45          //P2
  46          sbit BJ=              P2^0;  //OUT     报警LED指示,并送给LM393    
  47          sbit LINE_ALARM=      P2^1;  //IN      电话线路故障报警开关
  48          sbit ToneTest=        P2^2;  //IN      峰值为3.5V的铃流脉冲信号检测
  49          sbit J_LineToPhone=   P2^3;  //OUT     报警时,驱动继电器切断本地电话和外线的联系,同时模拟摘机  
  50          sbit HX2272_VT=       P2^4;  //IN      平时为低,无线解码有效就变高
  51          sbit HX2272_D0=       P2^5;  //IN      遥控解码器数据总线输入 
  52          sbit HX2272_D1=       P2^6;  //IN      遥控解码器数据总线输入
  53          sbit HX2272_D2=       P2^7;  //IN      遥控解码器数据总线输入
  54          
  55          bit FLAG_BF;        //初始状态布防标志=0,不布防
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 2   

  56          bit FLAG_ZJ; 
  57          bit FLAG_BJ;
  58          bit FLAG_BF_YS;
  59          bit FLAG_YHZJ;    
  60          int Time_DU;
  61          int JISHUMORE; 
  62          unsigned char j,jj,k,ToneTime_XUNHUAN3,LOCK_JS;  
  63          bit FLAG_Tone;
  64          bit FLAG_BB;FLAG_COMMOND;
  65          bit FLAG_366; 
  66          bit Reset;
  67          unsigned char FLAG_LOCK,FLAG_FIRST;
  68          unsigned char FLASH_DY;
  69          typedef unsigned char Number[22];      //定义一个20字节长的数组类型,用来放6组电话,一组密码,次数振铃,报
             -警延迟时间
  70          typedef unsigned char Number_P[5];
  71          struct ReadArray 
  72           {
  73            unsigned char Number24[22];
  74           }READARRAY;  
  75          
  76          
  77          sbit aa7=ACC^7;
  78          sbit aa6=ACC^6;
  79          sbit aa5=ACC^5;
  80          sbit aa4=ACC^4;
  81          sbit aa3=ACC^3;
  82          sbit aa2=ACC^2;
  83          sbit aa1=ACC^1;
  84          sbit aa0=ACC^0;
  85          
  86          
  87          //--------------------------------------函数部分-----------------------------------------------
  88          void LED_DRIVER(bit D7,bit D6,bit D5,bit D4,bit D3,bit D2,bit D1,bit D0) 
  89          {
  90   1        LS164_AB=D7;  LS164_CP=1;  LS164_CP=0;
  91   1        LS164_AB=D6;  LS164_CP=1;  LS164_CP=0; 
  92   1        LS164_AB=D5;  LS164_CP=1;  LS164_CP=0;
  93   1        LS164_AB=D4;  LS164_CP=1;  LS164_CP=0;
  94   1        LS164_AB=D3;  LS164_CP=1;  LS164_CP=0;
  95   1        LS164_AB=D2;  LS164_CP=1;  LS164_CP=0;
  96   1        LS164_AB=D1;  LS164_CP=1;  LS164_CP=0;
  97   1        LS164_AB=D0;  LS164_CP=1;  LS164_CP=0;
  98   1      
  99   1      } 
 100          
 101          void DELAY(unsigned char time_delay)
 102          {
 103   1       unsigned char i;
 104   1       for(i=0;i<time_delay;i++)
 105   1       {
 106   2       TMOD=0; //13位不重装定时器方式
 107   2       TL0=4;
 108   2       TH0=6;
 109   2       TCON=0;
 110   2       TR0=1; //定时器0启动,定时器1不启动
 111   2       wait: if(TF0==0)
 112   2            {
 113   3             NOP2=0;
 114   3             goto wait;
 115   3            }   
 116   2       }
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 3   

 117   1       TCON=0;//停动定时器0
 118   1      }
 119          
 120          void DELAY_50ms()
 121          {
 122   1       EA=0;
 123   1       TMOD=0; //13位不重装定时器方式
 124   1       TL0=48;
 125   1       TH0=24;
 126   1       TCON=0;
 127   1       TR0=1; //定时器0启动,定时器1不启动
 128   1       wait: if(TF0==0)
 129   1            {
 130   2             NOP2=0;
 131   2             goto wait;
 132   2            }   
 133   1       TCON=0;//停动定时器0
 134   1      }
 135          
 136          void DELAY_20ms()
 137          {
 138   1       EA=0;
 139   1       TMOD=1; //16位不重装定时器方式
 140   1       TL0=246;
 141   1       TH0=252;
 142   1       TCON=0;
 143   1       TR0=1; //定时器0启动,定时器1不启动
 144   1       wait: if(TF0==0)
 145   1            {
 146   2             goto wait;
 147   2            }   
 148   1       TCON=0;//停动定时器0
 149   1      }
 150          
 151          void DELAY_025ms(unsigned char t_delay)
 152          {
 153   1       unsigned char ii;
 154   1       for(ii=0;ii<t_delay;ii++)
 155   1       {
 156   2       TMOD=1; //16位不重装定时器方式
 157   2       TL0=246;
 158   2       TH0=255;
 159   2       TCON=0; 
 160   2       TR0=1; //定时器0启动,定时器1不启动 
 161   2       wait: if(TF0==0)
 162   2            {
 163   3             NOP2=0;
 164   3             goto wait;
 165   3            } 
 166   2       TCON=0;
 167   2       TMOD=0;  
 168   2       }
 169   1       //TCON=0;//停动定时器0
 170   1       //TMOD=0;
 171   1      } 
 172          
 173          void LED_DISPLAY(void) 
 174          {
 175   1        LED_DRIVER(0,0,0,0,0,1,1,0); //显示“1”
 176   1        DELAY(2);
 177   1        LED_DRIVER(1,1,0,1,1,0,1,0); //显示“2”
 178   1        DELAY(2);
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 4   

 179   1        LED_DRIVER(1,1,0,0,1,1,1,0); //显示“3”
 180   1        DELAY(2);
 181   1        LED_DRIVER(1,0,0,0,0,1,1,1); //显示“4”
 182   1        DELAY(2);
 183   1        LED_DRIVER(1,1,0,0,1,1,0,1); //显示“5”
 184   1        DELAY(2);
 185   1        LED_DRIVER(1,1,0,1,1,1,0,1); //显示“6”
 186   1        DELAY(2);
 187   1        LED_DRIVER(0,1,0,0,0,1,1,0); //显示“7”
 188   1        DELAY(2);
 189   1        LED_DRIVER(1,1,0,1,1,1,1,1); //显示“8”
 190   1        DELAY(2);
 191   1        LED_DRIVER(1,1,0,0,1,1,1,1); //显示“9”
 192   1        DELAY(2);
 193   1        LED_DRIVER(0,1,0,1,1,1,1,1); //显示“0” 
 194   1        DELAY(2);  
 195   1        LED_DRIVER(1,1,0,1,0,1,1,1); //显示“A”
 196   1        DELAY(2); 
 197   1        LED_DRIVER(1,0,0,1,1,1,0,1); //显示“b”
 198   1        DELAY(2); 
 199   1        LED_DRIVER(0,1,0,1,1,0,0,1); //显示“C”
 200   1        DELAY(2); 
 201   1        LED_DRIVER(1,0,0,1,1,1,1,0); //显示“d” 
 202   1        DELAY(2);
 203   1        LED_DRIVER(0,0,0,0,0,0,0,0); //令所有数码管和BF灯全灭 
 204   1      }
 205          
 206          
 207          /* 
 208          
 209          void int_t0(void) interrupt 1  /////定时器0中断处理程序,用来处理40ms间隔,启动定时器1
 210          {
 211           if(ToneTest==0)  //过40ms再次检测到铃流,说明的确是铃流,启动定时器1
 212             {
 213              IE=0; //禁止所有中断
 214              EA=1;
 215              ET1=0;  //开定时器1中断允许
 216              TMOD=32;  //16位不重装定时器工作方式1
 217              TCON=0;
 218              TH1=99;
 219              TL1=192; //定时1s
 220              TR1=1;  //定时器1启动 
 221          
 222              }
 223           else FLAG_Tone=0;  //退出铃流检测状态
 224          }
 225           
 226          void int_t1(void) interrupt 3  /////定时器1中断处理程序,用来处理1s间隔
 227          {
 228           if(FLAG_TIME_ZD!=4)   //不足5秒间隔,再次启动定时器1
 229             {
 230               FLAG_TIME_ZD=FLAG_TIME_ZD+1;
 231               IE=0; //禁止所有中断
 232               EA=1;
 233               ET1=0;  //开定时器1中断允许
 234               TMOD=32;  //16位不重装定时器工作方式1
 235               TCON=0;
 236               TH1=99;
 237               TL1=192; //定时1s
 238               TR1=1;  //定时器1启动
 239          
 240             }
C51 COMPILER V6.10  386                                                                    03/14/2006 10:33:03 PAGE 5   

 241           else   //到下一个铃流周期(5秒后的)           
 242             {
 243               if(ToneTest==0)
 244                 {
 245                   FLAG_TONE_NUMBER=FLAG_TONE_NUMBER+1;  
 246                    //此值为已经检测到的确定的铃流个数,正在检测的不算在内
 247                   DELAY_40MS();//进入本个铃流检测处理流程
 248                 }
 249               else FLAG_Tone=0;
 250             } 

⌨️ 快捷键说明

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