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

📄 de.lst

📁 本工程是PC透過RS232傳資料進開發版
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.04   DE                                                                    01/18/2008 13:01:19 PAGE 1   


C51 COMPILER V8.04, COMPILATION OF MODULE DE
OBJECT MODULE PLACED IN de.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE de.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************************
   2          /* 文件名称: de.C                                                                                                                                                      
   3          /* 文件标识: none
   4          /* 适用器件: C8051F120 
   5          /* 摘 要:本文件是按S1,S3,DA0输出(1V);按S2,S4,DA1有1.7V输出.每间隔1S,AIN0,AIN1通过串口分别显示输入电压.
   6          /* ;AIN0的电压由DA0提供,AIN1的电压由DA1提供;使用外部22.1184MHz晶振. 
   7          /* 当前版本:1.0
   8          /* 作 者:李国涛
   9          /* 完成日期:2007年12月4日
  10          /***********************************************************************/
  11          
  12          /**********************************************************************/
  13          //INCLUDE引用外部头文件 
  14          #include <c8051f120_VarantReg.h> 
  15          #include <ABSACC.H>             
  16          #include "da-i.c"
  17          #include <string.h> 
  18          #include <stdio.h> 
  19          /**********************************************************************/
  20          
  21          /**********************************************************************
  22          // 常量及全局变量定义
  23          ************************************************************************/
  24          long result[2];
  25          long mopt[2];
  26          unsigned long voltage;
  27          uchar key;           //key 是执行keyscan读取的值 
  28          long temp;           //为ADC转换后的值
  29          uchar temp1;         //temp是执行KeySPI1的结果
  30          uchar send_flag;
  31          uchar temp0;         //temp是执行KeySPI的结果;
  32          uchar rs232_send_size;
  33          uchar dat[20];
  34          uchar dac_value[4];
  35          uchar channel0_flag;
  36          uchar channel1_flag;
  37          /*      TIMER0 INI      */
  38          bit time_1ms_flag;
  39          bit time_10ms_flag;
  40          bit time_50ms_flag;
  41          bit time_100ms_flag;
  42          bit time_500ms_flag;
  43          bit time_1s_flag;
  44          bit time_60s_flag;
  45          uchar time_1ms;
  46          uchar time_10ms;
  47          uchar time_50ms;
  48          uchar time_100ms;
  49          uchar time_500ms;       
  50          uchar time_1s;
  51          uchar time_60s;
  52          /**********************************************************************
  53          * 函数名称:delay();
  54          *
  55          * 函数功能描述:是一个延时程序;
C51 COMPILER V8.04   DE                                                                    01/18/2008 13:01:19 PAGE 2   

  56          *              
  57          * 输入参数:x1
  58          *
  59          * 返回数据:none;
  60          ***********************************************************************/
  61          void delay(int x1)
  62          {
  63   1        unsigned int y1;
  64   1        for (y1=1;y1<x1;y1++);
  65   1      }
  66          
  67          /*********************************************************************
  68          * 函数名称:getkey();
  69          *
  70          * 函数功能描述:按键的扫描判断与取值  
  71          *          
  72          * 输入参数:none;
  73          *
  74          * 返回数据:none;
  75          *
  76          * 注    意:none;      
  77          **********************************************************************/
  78          
  79          unsigned char getkey(void)
  80          {
  81   1        uchar h;                            //行扫描值
  82   1        uchar l;                        //列扫描值
  83   1        SFRPAGE=0x0f ;
  84   1        P5=0xF0;                            //P5.0~P5.3       发全0.准备读列的状态
  85   1       if((P5&0xF0)!=0xF0)              //如果P5.4~P5.7不全为1,可能有键按下
  86   1       {
  87   2         delay(100);  
  88   2         delay(100);                           //延时去抖动
  89   2      
  90   2         if((P5&0xF0) != 0xF0)         //重读高4位,如果还是不全为1,有按键按下
  91   2         {
  92   3           h=0xFE;                     //P5.0置0,开始行扫描
  93   3       while((h&0x10)!=0xF0)           //判断是否为最后一行,若不是继续扫描=F0的时候表示没有到最后一行;
  94   3          {                                             //如果为F0,那么还没有到最后一行;如果不为F0那么就已经到最后一行;
  95   4             P5=h;
  96   4             delay(100);                       
  97   4             SFRPAGE=0x0f; 
  98   4            if((P5&0xF0) != 0xF0)          //如果P5.4~P5.7不全为1,可能有键按下
  99   4              {
 100   5                l=((P5&0xF0)|0x0F);    //保留P5口高四位.低四位变为1,作为列值
 101   5                        delay(100);
 102   5                return ((~h)+(~l));    //按键值=行扫描值+列扫描值                        
 103   5                       
 104   5              }
 105   4            else                                      //如果该行无键按下,行扫描值左移.扫描下一行
 106   4              
 107   4                    h=(h<<1)|0x01;        //这样做保证每一次就只有一位为"0"
 108   4                  
 109   4          }
 110   3         }
 111   2       }
 112   1        return 0;                    //无键按下,返回0
 113   1      } 
 114          
 115          /**********************************************************************
 116          * 函数名称:keyup();
 117          *
C51 COMPILER V8.04   DE                                                                    01/18/2008 13:01:19 PAGE 3   

 118          * 函数功能描述:按键的释放;
 119          *          
 120          * 输入参数:none;
 121          *
 122          * 返回数据:none;
 123          *
 124          * 注    意:none;
 125          **********************************************************************/
 126          
 127          uchar keyup(void)
 128          {
 129   1              unsigned char val=0xff;
 130   1              val=getkey();
 131   1           if(val != 0)
 132   1           {
 133   2                while(1)
 134   2                {
 135   3                      if(val!=getkey())break;
 136   3                }
 137   2           }
 138   1              return val;
 139   1      } 
 140          
 141          /*********************************************************************
 142          * DAC0_Init :
 143          *
 144          * 1V=0X06AAH ;1.7V =0X0B54H ; 电压值 ;
 145          *
 146          * Return Value : None
 147          *
 148          * Parameters   : None
 149          *
 150          * Configure DAC0 to update on write to
 151          *
 152          * REF0CN
 153          *********************************************************************/
 154          
 155          void DAC0_Init(void)
 156          {                                                                           
 157   1         SFRPAGE = DAC0_PAGE;                            //DAC_PAGE包含DAC0的初始化/. 
 158   1         DAC0L=dac_value[0];
 159   1         DAC0H=dac_value[1];                                         
 160   1      }
 161          
 162          /********************************************************************
 163          * DAC1_Init :
 164          *
 165          * Return Value : None
 166          *
 167          * Parameters   : None
 168          *
 169          * Configure DAC1 to update on write to
 170          ********************************************************************/
 171          
 172          void DAC1_Init(void)
 173          {
 174   1        SFRPAGE = DAC1_PAGE;  
 175   1        DAC1L=dac_value[2];        
 176   1        DAC1H=dac_value[3];                                                                                     
 177   1      }
 178          
 179          /*******************************************************************
C51 COMPILER V8.04   DE                                                                    01/18/2008 13:01:19 PAGE 4   

 180          * 函数名称:ADC0_Init
 181          *
 182          * 函数功能描述:ADC0 采样初始化,输入通道AIN0.0 
 183          *              
 184          * 输入参数:none;
 185          *
 186          * 返回数据:none;
 187          *
 188          * 注意:    none;
 189          *
 190          *******************************************************************/
 191          
 192          void ADC0_Init(void)
 193          {  
 194   1         char SFRPAGE_SAVE = SFRPAGE;           // Save Current SFR page
 195   1         SFRPAGE = ADC0_PAGE;
 196   1         ADC0CF |= 0x88;                        //ADC转换时钟= 2.45MHz 
 197   1         EIE2   |= 0x02;                        // 关闭ADC中断
 198   1         SFRPAGE = SFRPAGE_SAVE;                // Restore SFR page
 199   1      }
 200          
 201          /***************************************************************
 202          * 函数名称:ADC0_enable
 203          *
 204          * 函数功能描述:ADC0开关,1:打开;0:关闭
 205          *              
 206          * 输入参数:1:打开;0:关闭
 207          *
 208          * 返回数据:none;
 209          *
 210          * 注意:    none;
 211          ***************************************************************/
 212          
 213          void ADC0_enable(unsigned char flag)
 214          {
 215   1              char data SFRPAGE_SAVE = SFRPAGE;       // Save Current SFR page
 216   1      
 217   1              if(flag)
 218   1               {
 219   2                      AD0EN = 1;                          // 打开ADC
 220   2              EA    = 1;                          // 开启全局中断
 221   2               }
 222   1              else
 223   1               {
 224   2                      AD0EN = 0;                          // 关闭ADC
 225   2               }
 226   1      
 227   1              SFRPAGE   = SFRPAGE_SAVE;               // Restore SFR page
 228   1      }
 229          
 230          /****************************************************************
 231          * 函数名称:ADC0_Conver
 232          *
 233          * 函数功能描述:读取AD数据
 234          *              
 235          * 输入参数:none;
 236          *
 237          * 返回数据:none;
 238          *
 239          * 注意:    none;
 240          ******************************************************************/
 241          
C51 COMPILER V8.04   DE                                                                    01/18/2008 13:01:19 PAGE 5   

 242          void ADC0_Conver (void)
 243          {
 244   1         unsigned char i=0;                       // ADC mux 通道 (0-1)       
 245   1         char data SFRPAGE_SAVE = SFRPAGE;        // Save Current SFR page   
 246   1         SFRPAGE = ADC0_PAGE;                     // set SFR page F
 247   1         for (i=0;i<2;i++)
 248   1           {
 249   2                      AMX0SL = i;                                             // 设置mux到通道
 250   2                      delay(1000);
 251   2                      AD0INT  = 0;                        // 清除ADC转换完成标志
 252   2                      AD0BUSY = 1;
 253   2                      while (!AD0INT);
 254   2                      temp    = ADC0H;
 255   2                      temp    = temp*256 + ADC0L;
 256   2                      result[i] = temp;                   // 读ADC值
 257   2           }
 258   1         SFRPAGE = SFRPAGE_SAVE;                  // Restore SFR page
 259   1      }
 260           
 261          /*******************************************************************
 262          * 函数名称:Uart0_Enable;
 263          *
 264          * 函数功能描述:Uart0初始化;
 265          *              
 266          * 输入参数:,打开输入1;关闭输入0;
 267          *
 268          * 返回数据:none;
 269          *
 270          * 注意:    none;
 271          ********************************************************************/
 272          
 273          void Uart0_Enable( Flag)
 274          {
 275   1              char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 276   1              SFRPAGE   = UART0_PAGE;
 277   1              if(Flag)
 278   1               {
 279   2                 TR1=1;                             // 打开串口Uart0
 280   2               }
 281   1              else
 282   1               {
 283   2              TR1=0;                            // 关闭串口Uart0
 284   2               }
 285   1              SFRPAGE = SFRPAGE_SAVE;               // Restore SFR page
 286   1      }
 287          
 288          /*******************************************************************
 289          * TIMER0  
 290          *
 291          *定时器0;
 292          ********************************************************************/

⌨️ 快捷键说明

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