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

📄 dhbj.lst

📁 该电话报警器设计时,利用了电信局的交换机支持脉冲拨号方式来实现拨号报警,AT89C52控制报警.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   DHBJ                                                                  11/18/2005 19:59:14 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DHBJ
OBJECT MODULE PLACED IN dhbj.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE dhbj.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89x051.H>           //器件配置文件
   2          #define uchar unsigned char     //变量类型的宏定义
   3          #define uint unsigned int
   4          uchar code DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,
   5                              0x92,0x82,0xF8,0x80,0x90,};/*0-9数码管段码*/
   6          uchar DATA[20];                                 /* 存放电话号码的数组*/
   7          uchar X[3];                                                     /*存放时间t1数组*/
   8          uchar Y[3];                                                     /*存放时间t2数组*/
   9          uchar flag;                             /*RAM区防干扰标志*/
  10          uchar data_flag=0;      /*输入电话号码计数器(最长二十位)*/
  11          uchar set=0;            /*功能键值*/
  12          uchar m=0;              //全局变量
  13          uchar n=0;
  14          uint f;
  15          uchar t1_flag=0;        /*输入时间1计数器(最长三位)*/
  16          uchar t2_flag=0;        /*输入时间2计数器(最长三位)*/
  17          uchar cnt_1=0;          /*时间t1单元数学运算后暂存单元*/
  18          uchar cnt_2=0;          /*时间t2单元数学运算后暂存单元*/
  19          /*****************************************************/
  20          void delay(uint k);     /*延时子函数声明*/
  21          void stop();            /*关机子函数声明*/
  22          void bh();                      /*拨号子函数声明*/
  23          /***************************************************/
  24          /*定时器T0初始化*/
  25          void init_timer()
  26          {
  27   1      TMOD=0x01;
  28   1      TH0=-(50000/256);
  29   1      TL0=-(50000%256);
  30   1      IE=0x82;
  31   1      }
  32          /***************************************************/
  33          /*100mS定时中断服务子函数*/
  34           void zd0()interrupt 1 
  35          {
  36   1      P3_0=!P3_0;             //P3.0每100ms取反一次,送出脉冲
  37   1      P1_7=!P1_7;             //数码管小数点同步闪烁
  38   1      n++;
  39   1      TH0=-(50000/256);
  40   1      TL0=-(50000%256);
  41   1      }
  42          /***************************************************/
  43          /*INT0中断服务子函数*/
  44           void zd_int0()interrupt 0 
  45          {
  46   1      delay(10);
  47   1      if(P3_2==0)set++;               //功能键值递增
  48   1      if(set>=5)set=0;                //键值的范围0~4
  49   1      if(set==1)flag=0x55;    //向RAM区的标志flag写入55H
  50   1      PCON=0x00;f=8;
  51   1      again:if(P3_2==0)goto again;    //若按键未释放,则等待
  52   1      }
  53          /******************************************************/
  54          /*INT1中断服务子函数*/
  55           void zd_int1()interrupt 2 
C51 COMPILER V7.06   DHBJ                                                                  11/18/2005 19:59:14 PAGE 2   

  56          {uchar h;
  57   1      f=0;
  58   1      for(h=0;h<10;h++)                       /*检查磁性开关(P3_3状态)10次,共1秒*/
  59   1      {
  60   2      delay(100);
  61   2      if(P3_3==0)f++;
  62   2      }
  63   1      }
  64          /********************************************************/
  65          /*---关机---*/
  66          void stop()
  67          {if(flag==0x55)P1=0xfb;
  68   1              else P1=0x86;                   //数码管右下角显示"1"。
  69   1      delay(1);
  70   1      if(flag==0x55)PCON=0x01;        /*进入节电待机状态*/
  71   1      delay(1);
  72   1      }
  73          /********************************************************/
  74          /*延时1ms*K子函数*/
  75          void delay(uint k)
  76          {
  77   1      uint i,j;
  78   1      for(i=0;i<k;i++){
  79   2      for(j=0;j<60;j++)
  80   2      {;}}
  81   1      }
  82          /********************************************************/
  83          /*----输入时间t1----*/  
  84          void in_time1()
  85          {
  86   1      P1=0xf7;delay(1);                                       /*数码管显示"一"*/
  87   1      if(P3_5==0)
  88   1      {
  89   2              delay(10);                                              /*按下OK键确认并点亮小数点*/
  90   2              if(P3_5==0){P1=0x7f;m=0;t1_flag=0;delay(500);}
  91   2      while(t1_flag<3)
  92   2              {
  93   3              if(P3_4==0)
  94   3                      {delay(10);if(P3_4==0)          /*按下UP键数码管作0-9递增显示*/
  95   4                                              {m++;if(m==10)m=0;P1=DATA_7SEG[m];delay(300);}
  96   4                      }
  97   3                      P1=DATA_7SEG[m];delay(1);       /*若不按下UP键数码管也作0-9显示*/
  98   3                      if(P3_5==0)
  99   3                      {delay(10);if(P3_5==0)          /*按下OK键显示的数据存入数组X中*/
 100   4                              {X[t1_flag]=m;t1_flag++;P1=0x7f;delay(500);}
 101   4                      
 102   4                  }
 103   3              }
 104   2      }
 105   1      if(t1_flag>=3)t1_flag=0;                        /*时间1计数器>=3时归零*/
 106   1      }
 107          /***********************************************************************/
 108          /*----输入时间t2----*/  
 109          void in_time2()
 110          {
 111   1      P1=0xb7;delay(1);                                       /*数码管显示"二"*/                      
 112   1      if(P3_5==0)
 113   1      {
 114   2              delay(10);                                              /*按下OK键确认并点亮小数点*/
 115   2              if(P3_5==0){P1=0x7f;m=0;t2_flag=0;delay(500);}
 116   2      while(t2_flag<3)
 117   2              {
C51 COMPILER V7.06   DHBJ                                                                  11/18/2005 19:59:14 PAGE 3   

 118   3              if(P3_4==0)
 119   3                      {delay(10);if(P3_4==0)          /*按下UP键数码管作0-9递增显示*/
 120   4                                              {m++;if(m==10)m=0;P1=DATA_7SEG[m];delay(300);}
 121   4                      }
 122   3                      P1=DATA_7SEG[m];delay(1);       /*若不按下UP键数码管也作0-9显示*/
 123   3                      if(P3_5==0)
 124   3                      {delay(10);if(P3_5==0)          /*按下OK键显示的数据存入数组Y中*/
 125   4                              {Y[t2_flag]=m;t2_flag++;P1=0x7f;delay(500);}
 126   4                      
 127   4                  }
 128   3              }
 129   2      }
 130   1      if(t2_flag>=3)t2_flag=0;                        /*时间2计数器>=3时归零*/
 131   1      }
 132          /***********************************************************************/
 133          /*----输入电话号码----*/        
 134          void in_data()

⌨️ 快捷键说明

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