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

📄 mian.lst

📁 用于远程控制系统下位机的设置程序
💻 LST
字号:
C51 COMPILER V7.06   MIAN                                                                  09/18/2007 10:26:01 PAGE 1   


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

stmt level    source

   1          #include"AT89S8252.h"
   2          
   3          
   4          
   5          #define TRUE  1
   6          #define FALSE 0
   7          
   8          #define uchar unsigned char 
   9          #define uint  unsigned int 
  10          
  11          #define LCDCOM_R XBYTE[0x7f01]   /*液晶口地址定义*/
  12          #define LCDCOM_W XBYTE[0x7f00]
  13          #define LCDDATA_R XBYTE[0x7f03]
  14          #define LCDDATA_W XBYTE[0x7f02]
  15          
  16          sbit BF=ACC^7;  /*液晶忙标志位*/
  17          
  18          /*输入/输出引脚定义*/
  19          
  20          sbit  LED    =P1^6;
  21          sbit  MODEM  =P1^7;
  22          sbit  DIN7705=P3^4; /*数据输入输出为同一端口*/
  23          sbit  DOUT7705=P3^4;
  24          sbit  CLK7705=P3^5;
  25          sbit  AD7705_DRDY=P1^5;
  26          
  27          
  28          /*全局变量定义*/
  29          uchar ADH_1;
  30          uchar ADL_1;
  31          uchar ADH_2;
  32          uchar ADL_2;
  33          
  34          uchar k_stat;
  35          uchar mod_buff_head;
  36          uchar mod_buff_tail;
  37          uchar mod_buff[16];
  38          
  39          uchar  bdata  flag;
  40          sbit  ch_flag=flag^0;
  41          sbit  tx_f=flag^1;
  42          sbit  state=flag^3;
  43          
  44          
  45          /*发送命令,命令为ASC码形式,待发送命令串数据存放在str缓冲区中*/
  46          void mod_comd(uchar *str)
  47          {
  48   1        uchar i,k;
  49   1        do
  50   1        {
  51   2          if(*str!=0x00)     /*字符串结束符*/
  52   2               {
  53   3                SBUF=*str;
  54   3                 state=FALSE;
  55   3                 while(state==FALSE);
C51 COMPILER V7.06   MIAN                                                                  09/18/2007 10:26:01 PAGE 2   

  56   3                 str++;
  57   3                }
  58   2              else break;     /*字符串发送完成结束循环*/
  59   2        }while(1);
  60   1        SBUF=0x0d;     /*发送回车符,命令必须以回车符结尾*/
  61   1        state=FALSE;
  62   1        for(i=0;i<250;i++)
  63   1          for(k=0;k<16;k++);
  64   1      }
  65          
  66          /*发送数据函数,发送的数据存在缓冲区p中,字符数为n*/
  67          void mod_data(uchar *p,uchar n)
  68          {
  69   1        uchar i;
  70   1        for(i=0;i<n;i++)
  71   1        {
  72   2           SBUF=*p;
  73   2               state=FALSE;
  74   2               while(state==FALSE);
  75   2               p++;
  76   2         }
  77   1         state=FALSE;
  78   1      }
  79          
  80          /*检测四个开关输入量,检测后的状态存入变量k_stat中,以供显示和发送*/
  81          void test_kio(void)
  82          {
  83   1        P1=P1|0x0f;
  84   1        k_stat=P1;
  85   1        k_stat&=0x0f;
  86   1      }
  87          
  88          
  89          /*主函数*/
  90          
  91          void main (void)
  92          {
  93   1        uchar  i,j,k;
  94   1      
  95   1        MODEM=1;      /*关MODEM电源开关*/
  96   1        for(i=0;i<20;i++)
  97   1          for(j=0;j<150;j++)          /*总共延迟时间20*150*150=450000*0.2=90ms*/
  98   1                for(k=0;k<150;k++);   
  99   1      
 100   1        MODEM=0;
 101   1      
 102   1        WMCON|=PS0_;            /*看门狗周期2048ms*/
 103   1        WMCON|=PS1_;
 104   1        WMCON|=PS2_;
 105   1        WMCON|=WDTEN_;           /*使能片内看门狗*/
 106   1      
 107   1        ES=0;                  /*关串口中断以免干扰初始化*/
 108   1      
 109   1        WMCON|=WDTRST_;         /*喂狗*/
 110   1      
 111   1        tx_f=0;      /*清中断标志位,未发生中断*/
 112   1        init();
 113   1      
 114   1        for(i=0;i<50;i++)
 115   1          {
 116   2               for(j=0;j<150;j++)
 117   2                for(k=0;k<150;k++);
C51 COMPILER V7.06   MIAN                                                                  09/18/2007 10:26:01 PAGE 3   

 118   2                 
 119   2                 WMCON|=WDTRST_;         /*喂狗*/
 120   2               }
 121   1        init_lcd();
 122   1      
 123   1        test_kio();             /*A/D转换结果默认为零*/
 124   1      
 125   1        ADH_1=0;
 126   1        ADL_1=0;
 127   1        ADH_2=0;
 128   1        ADL_2=0;
 129   1      
 130   1      
 131   1      
 132   1        ES=1;
 133   1      
 134   1        modem_init();              /*MODEM初始化*/
 135   1      
 136   1        for(i=0;i<50;i++)
 137   1          for(j=0;j<250;j++);
 138   1      
 139   1        tx_f=0;               /*清通信标志(接收中断标志位)*/
 140   1      
 141   1        /*缓冲区尾指针必须清零,以便从头存放接收的数据*/
 142   1      
 143   1        mod_buff_tail=0;
 144   1        for(i=0;i<16;i++)
 145   1            mod_buff[i]=0;
 146   1      
 147   1        while(!tx_f)         /*接收中断发生,表示有振铃信号*/
 148   1        {
 149   2            WMCON|=WDTRST_;         /*喂狗*/
 150   2                ch_flag=0;
 151   2                AD7705_init(ch_flag);  /*通道0初始化*/
 152   2                readfromda7705(ch_flag);/*读取通道结果*/
 153   2      
 154   2                delay();
 155   2      
 156   2            ch_flag=1;
 157   2                AD7705_init(ch_flag);  /*通道1初始化*/
 158   2                readfromda7705(ch_flag);/*读取通道结果*/
 159   2       
 160   2                test_kio();        /*刷新显示*/
 161   2      
 162   2      
 163   2                LED=!LED;             /*工作灯闪亮*/
 164   2         }
 165   1      
 166   1         tx();
 167   1         while(1);
 168   1      }
 169          
 170          
 171             
 172          /*串行中断函数*/
 173          void SCON_int (void ) interrupt 4 using 2
 174          {
 175   1        if(RI==1)    /*如果可以接收*/
 176   1        {
 177   2          RI=0;        /*清除接收标志*/
 178   2              tx_f=1;        /*可以开始通信*/
 179   2      
C51 COMPILER V7.06   MIAN                                                                  09/18/2007 10:26:01 PAGE 4   

 180   2              mod_buff[mod_buff_tail]=SBUF;
 181   2              mod_buff_tail=(mod_buff_tail+1)%0x10; /*为什么%0x10???*/
 182   2         }
 183   1         if(TI==1)
 184   1         {
 185   2           TI=0;
 186   2               state=TRUE;          /*发送完成则志位完成标志*/
 187   2              }
 188   1       }
 189          
 190          
 191          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    369    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     23       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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