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

📄 main.lst

📁 该程序是远程电话控制系统程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  01/03/2009 12:35:54 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND CODE

stmt level    source

   1          /****************************************************************************
   2          * File:         MAIN.C                                                      *
   3          * Version:      1.0                                                                 *
   4          * Created:      21.06.2005                                                  *
   5          * Last Change:  22.06.2005                                                  *
   6          * Author:       yuanjun yin                                                 *
   7          * Compiler:     KEIL C51 uVision2 V2.23                                     *
   8          * Description:  89C54RD+-Firmware for MFRC500 Demo Serial Reader            *
   9          ****************************************************************************/
  10          
  11          #include <stc89c54rd+.h>
  12          #include "main.h"
  13          
  14          unsigned int key_time;
  15          uchar rxhead;
  16          uint txhead=0;
  17          uchar xdata receive_buf1[20];
  18          unsigned char xdata send_buf1[20];
  19          unsigned char data datalen;
  20          unsigned int senddatalen;
  21          unsigned char bell_sec;
  22          unsigned int timecounter;
  23          unsigned char callnumber=0;
  24          uchar idata phonecode[]={1,3,3,8,10,10,9,9,1,1,6,0};// 本人通信号码
  25          /////////////////////////////////////
  26          
  27          sbit            BELL=P4^1;
  28          sbit            CSE=P4^0;
  29          sbit            RSE=P2^1;
  30          sbit            WRE=P3^6;
  31          sbit            RDE=P3^7;
  32          //sbit          INT=P3^3;
  33          
  34          sbit            IRQ_PIN=P3^3;
  35          ///////////////////////////////////
  36          void init(void);
  37          unsigned char CMP_STRING(unsigned char *pt1,
  38                                   unsigned char *pt2,unsigned char len);
  39          
  40          unsigned char output(uchar hhh);
  41          void write_eeprom(unsigned int addrdata,unsigned char data2);
  42          void write_pagedata(unsigned char pagenumber);
  43          unsigned char read_eeprom(unsigned int addrdata);
  44          void erase_eeprom(unsigned char sectors);
  45          void bell1(unsigned char dd);
  46          void time2init(void);
  47          void command_press(void);
  48          uchar readsr(void);
  49          void writesr(uchar a);
  50          uchar readdata(void);
  51          void writedata(uchar a);
  52          void init_mt8888(void);
  53          void dtmfout(void);
  54          void delayms(uint n);
  55          void sendDTMFdata(uchar d);
C51 COMPILER V7.06   MAIN                                                                  01/03/2009 12:35:54 PAGE 2   

  56          uchar GetDTMFdata(void);
  57          void sendPhone(uchar *arr);     
  58          void open_power(void);
  59          
  60                  
  61          unsigned char bdata flag;
  62          //              sbit out_flag=flag^0;
  63          //              sbit up_flag=flag^1;             //上活门标志
  64          //              sbit down_flag=flag^2;           //下活门标志
  65          //              sbit life_flag=flag^3;           //生死门标志
  66          //              sbit second_flag=flag^4;         //输出二次标志
  67          //              sbit reset_flag=flag^5;
  68          //              sbit display_flag=flag^6;
  69          //              sbit desk_flag=flag^7;
  70          
  71          sbit  ACC0 = ACC^0;
  72          sbit  ACC7 = ACC^7;
  73          
  74          unsigned char bdata flag1;
  75          //              sbit M_FLAG=flag1^0;
  76          //              sbit HALF_FLAG=flag1^1;
  77          //              sbit SHORT_FLAG=flag1^2;
  78          //              sbit RCV_BIT=flag1^3;
  79          //              sbit M_DATA_FLAG=flag1^4;
  80                          sbit receive_flag=flag1^5;
  81          //              sbit R_MRC=flag1^6;
  82          
  83          
  84          unsigned char bdata flag2;
  85                          sbit phone_flag=flag2^0;
  86                          sbit off_flag=flag2^1;
  87                          sbit on1_flag=flag2^2;
  88                          sbit off1_flag=flag2^3;
  89          //              sbit st_a4=flag2^4;
  90          //              sbit st_a5=flag2^5;
  91          //              sbit st_a6=flag2^6;
  92          
  93          
  94          unsigned char bdata flag3;
  95          //              sbit st_e=flag3^0;
  96          //              sbit st_e1=flag3^1;
  97          //              sbit st_e2=flag3^2;
  98          //              sbit st_e3=flag3^3;
  99          //              sbit st_e4=flag3^4;
 100          //              sbit st_e5=flag3^5;
 101          //              sbit st_e6=flag3^6;
 102          //              sbit key_9=flag3^7;
 103          
 104          unsigned char bdata flag4;
 105          //              sbit X_BIT=flag4^0;
 106          //              sbit M_KPFLG=flag4^1;
 107                          sbit bell_flag=flag4^2;
 108          //              sbit sec4=flag4^3;
 109          //              sbit sec5=flag4^4;
 110          //              sbit sec6=flag4^5;
 111          //              sbit sec7=flag4^6;
 112          //              sbit c_bit=flag4^7;
 113          /****************************************************************************
 114          
 115          ****************************************************************************/
 116          void    main (void)
 117          {
C51 COMPILER V7.06   MAIN                                                                  01/03/2009 12:35:54 PAGE 3   

 118   1        unsigned char counter,counter2,ttt;
 119   1        unsigned char mfout=2;//readbuf[16];
 120   1        unsigned char tt1[2];
 121   1        unsigned char tt;
 122   1        unsigned int i;
 123   1        unsigned int count,yyjj;
 124   1      
 125   1        init();
 126   1      
 127   1              yyjj=12;
 128   1              bell1(1);
 129   1      //      yyjyj=0;
 130   1              ONTEL=0;
 131   1              OUT1=1;
 132   1              OUT2=1;
 133   1              delayms(500);
 134   1              init_mt8888();
 135   1              OUT1=1;                      //打开电源
 136   1              OUT2=1;
 137   1      
 138   1      //      sendPhone(phonecode);
 139   1      
 140   1      //      dtmfout();
 141   1              for(;;)
 142   1              {
 143   2                      if(phone_flag==1)
 144   2                      {
 145   3                              phone_flag=0;
 146   3                              open_power();
 147   3                              ONTEL=0;
 148   3                      }
 149   2      //              {
 150   2      //                      delayms(60);
 151   2      //                      i=GetDTMFdata();
 152   2      //                      i=i&0x0f;
 153   2      //                      if(i==5)
 154   2      //                      {
 155   2      //                              OUT1=!OUT1;
 156   2      //                              OUT2=!OUT2;
 157   2      ///                     }
 158   2      //              }
 159   2      //              i=10;   
 160   2              }
 161   1      }
*** WARNING C280 IN LINE 118 OF MAIN.C: 'counter': unreferenced local variable
*** WARNING C280 IN LINE 118 OF MAIN.C: 'counter2': unreferenced local variable
*** WARNING C280 IN LINE 118 OF MAIN.C: 'ttt': unreferenced local variable
*** WARNING C280 IN LINE 120 OF MAIN.C: 'tt1': unreferenced local variable
*** WARNING C280 IN LINE 121 OF MAIN.C: 'tt': unreferenced local variable
*** WARNING C280 IN LINE 122 OF MAIN.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 123 OF MAIN.C: 'count': unreferenced local variable
 162          void open_power(void)
 163          {
 164   1              unsigned int ii;
 165   1              OUT1=0;
 166   1              OUT2=0;
 167   1              for(ii=0;ii<65533;ii++);
 168   1              for(ii=0;ii<65533;ii++);
 169   1              OUT1=1;
 170   1              OUT2=1;
 171   1      
 172   1      }
C51 COMPILER V7.06   MAIN                                                                  01/03/2009 12:35:54 PAGE 4   

 173          /****************************************************************************
 174          
 175          ****************************************************************************/
 176          void    init (void)
 177          {
 178   1      
 179   1                       IP=0x00;
 180   1                       TCON=1;    
 181   1                       TMOD=0x21;     //定时器0为8位自动重装;定时器1为16位计数器工作方式
 182   1                       time2init();
 183   1                            //外部中断0的触发方式为边沿方式
 184   1                       SCON=0x50;
 185   1                       PCON|=0x80;           //dual 4800X2=9600
 186   1                       TH1=TL1=0xfa;        //TH1=TL1=256-(11059200/4800/32/12+0.5)
 187   1      //               TH1=0xf8;
 188   1      //               TL1=0xa3;
 189   1                       TH0=0xfc;
 190   1                       TL0=0x21;
 191   1      
 192   1                   ET0=1;
 193   1                   EX0=1;
 194   1                       TR1=1;
 195   1                       TR0=1;
 196   1                       PS=1;
 197   1                       PX0=1;
 198   1                       ES=1;
 199   1                       EA=1;
 200   1      }
 201          void time2init(void)
 202          {
 203   1              T2MOD &= 0xFC; /* T2OE=0;定时器2输出不允许 */
 204   1              T2MOD |= 0x01; /* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/ 
 205   1              EXF2=0; /* reset flag 定时器2外部标志位清除*/
 206   1              TCLK=0;
 207   1              RCLK=0; /* disable baud rate generator 不用于波特率发生器*/ 
 208   1              EXEN2=0; /* ignore events on T2EX 视T2EX(P1.1)端信号无效*/ 
 209   1              TH2=0xFd;//MSB_reload_value; /* Init msb_value 填入初始化值*/ 
 210   1              TL2=0x16;//LSB_reload_value; /* Init lsb_value */ 
 211   1              RCAP2H=0xfd;//MSB_reload_value; /* reload msb_value重载值 */ 
 212   1              RCAP2L=0x16;//LSB_reload_value; /* reload lsb_value */ 
 213   1              C_T2=0; /* timer mode 定时模式*/ 
 214   1              CP_RL2=0; /* reload mode 重载模式*/ 
 215   1      //      EA=1; /* interupt enable 中断允许*/ 
 216   1              ET2=1; /* enable timer2 interrupt 允许T2中断*/ 
 217   1              TR2=1; /* timer2 run 开始计时*/
 218   1      }
 219          ////////////////////////////////////////////////
 220          void bell1(unsigned char dd)
 221          {
 222   1              if(dd==0)return;
 223   1              else
 224   1              {
 225   2                      bell_flag=1;
 226   2                      BELL=0;
 227   2                      bell_sec=dd;
 228   2              }
 229   1      }
 230          
 231          ///////////////////////////////////////////////////////////////////////////
 232          void timer2(void) interrupt 5 using 3
 233          {
 234   1              key_time++;
C51 COMPILER V7.06   MAIN                                                                  01/03/2009 12:35:54 PAGE 5   

 235   1              timecounter++;
 236   1              if(key_time>30000){callnumber=0;ONTEL=0;}
 237   1              if(callnumber>200)
 238   1                      {
 239   2      //                      OUT1=0;
 240   2      //                      OUT2=0;
 241   2                              callnumber=0;
 242   2      //                      ONTEL=1;
 243   2                              phone_flag=1;
 244   2                      }
 245   1              TF2=0;
 246   1      }
 247          ///////////////////////////////////////
 248          void    delay_10ms (uint _10ms)
 249          {
 250   1       
 251   1         ET2 = 0;     // Disable timer2 interrupt
 252   1        T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
 253   1        while (_10ms--)
 254   1        {
 255   2              while (!TF2)
 256   2              {
 257   3      //        if (CmdValid || CmdReceived)

⌨️ 快捷键说明

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