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

📄 7.1.lst

📁 ad 转换 51编程事例 值得学习以下对出学者有用
💻 LST
字号:
C51 COMPILER V7.09   7_1                                                                   08/23/2005 13:17:18 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 7_1
OBJECT MODULE PLACED IN 7.1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 7.1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #ifndef AT89C51_HEADER_FILE
   2          #define AT89C51_HEADER_FILE 1
   3          //Byte 寄存器
   4          sfr SP      = 0x81;
   5          sfr DPL     = 0x82;
   6          sfr DPH     = 0x83;
   7          sfr PCON    = 0x87;
   8          sfr TCON    = 0x88;
   9          sfr TMOD    = 0x89;
  10          sfr TL0     = 0x8A;
  11          sfr TL1     = 0x8B;
  12          sfr TH0     = 0x8C;
  13          sfr TH1     = 0x8D;
  14          sfr P1      = 0x90;
  15          sfr SCON    = 0x98;
  16          sfr SBUF    = 0x99;
  17          sfr IE      = 0xA8;
  18          sfr P3      = 0xB0;
  19          sfr IP      = 0xB8;
  20          sfr PSW     = 0xD0;
  21          sfr ACC     = 0xE0;
  22          sfr B       = 0xF0;
  23          //PCON 
  24          #define IDL_    0x01
  25          #define STOP_   0x02
  26          #define EWT_    0x04
  27          #define EPFW_   0x08
  28          #define WTR_    0x10
  29          #define PFW_    0x20
  30          #define POR_    0x40
  31          #define SMOD_   0x80
  32          
  33          //TCON 
  34          sbit IT0  = 0x88;
  35          sbit IE0  = 0x89;
  36          sbit IT1  = 0x8A;
  37          sbit IE1  = 0x8B;
  38          sbit TR0  = 0x8C;
  39          sbit TF0  = 0x8D;
  40          sbit TR1  = 0x8E;
  41          sbit TF1  = 0x8F;
  42          
  43          //TMOD值
  44          #define T0_M0_   0x01
  45          #define T0_M1_   0x02
  46          #define T0_CT_   0x04
  47          #define T0_GATE_ 0x08
  48          #define T1_M0_   0x10
  49          #define T1_M1_   0x20
  50          #define T1_CT_   0x40
  51          #define T1_GATE_ 0x80
  52          
  53          #define T1_MASK_ 0xF0
  54          #define T0_MASK_ 0x0F
  55          
C51 COMPILER V7.09   7_1                                                                   08/23/2005 13:17:18 PAGE 2   

  56          //P1 
  57          sbit P1_0 = 0x90;
  58          sbit P1_1 = 0x91;
  59          sbit P1_2 = 0x92;
  60          sbit P1_3 = 0x93;
  61          sbit P1_4 = 0x94;
  62          sbit P1_5 = 0x95;
  63          sbit P1_6 = 0x96;
  64          sbit P1_7 = 0x97;
  65          
  66          sbit AIN0 = 0x90;                  // + 输入 
  67          sbit AIN1 = 0x91;                  //- 输入 
  68          
  69          //SCON 
  70          sbit RI   = 0x98;
  71          sbit TI   = 0x99;
  72          sbit RB8  = 0x9A;
  73          sbit TB8  = 0x9B;
  74          sbit REN  = 0x9C;
  75          sbit SM2  = 0x9D;
  76          sbit SM1  = 0x9E;
  77          sbit SM0  = 0x9F;
  78          
  79          //IE
  80          sbit EX0  = 0xA8;         // 开INT0 
  81          sbit ET0  = 0xA9;         // 开ET0 
  82          sbit EX1  = 0xAA;         // 开INT1 
  83          sbit ET1  = 0xAB;         // Timer 1 
  84          sbit ES   = 0xAC;         // 开ES 
  85          sbit ET2  = 0xAD;         // Timer 2 
  86          
  87          sbit EA   = 0xAF;         // 关中断 
  88          
  89          //P3
  90          sbit P3_0 = 0xB0;
  91          sbit P3_1 = 0xB1;
  92          sbit P3_2 = 0xB2;
  93          sbit P3_3 = 0xB3;
  94          sbit P3_4 = 0xB4;
  95          sbit P3_5 = 0xB5;
  96          sbit P3_7 = 0xB7;
  97          
  98          sbit RXD  = 0xB0;                // 串行收中断 
  99          sbit TXD  = 0xB1;                //串行发中断
 100          sbit INT0 = 0xB2;                 // INT0 
 101          sbit INT1 = 0xB3;                 // INT11 
 102          sbit T0   = 0xB4;                 // Timer 0  
 103          sbit T1   = 0xB5;                 // Timer 1 
 104          sbit AOUT = 0xB6;                // 模拟输出
 105          
 106          //IP
 107          sbit PX0  = 0xB8;
 108          sbit PT0  = 0xB9;
 109          sbit PX1  = 0xBA;
 110          sbit PT1  = 0xBB;
 111          sbit PS   = 0xBC;
 112          
 113          //PSW 
 114          sbit P    = 0xD0;
 115          sbit FL   = 0xD1;
 116          sbit OV   = 0xD2;
 117          sbit RS0  = 0xD3;
C51 COMPILER V7.09   7_1                                                                   08/23/2005 13:17:18 PAGE 3   

 118          sbit RS1  = 0xD4;
 119          sbit F0   = 0xD5;
 120          sbit AC   = 0xD6;
 121          sbit CY   = 0xD7;
 122          
 123          //中断地址= (Number * 8) + 3
 124          #define IE0_VECTOR      0                    // 0x03 INT0 
 125          #define TF0_VECTOR      1                    // 0x0B Timer 0 
 126          #define IE1_VECTOR      2                    // 0x13 INT11 
 127          #define TF1_VECTOR      3                    // 0x1B Timer 1 
 128          #define SIO_VECTOR      4                    // 0x23 串行口 
 129          
 130          #endif
 131          
 132          // io分配:                                            
 133          /* OUTPUT:                             
 134           P1.0 ...... 模拟量输入                 
 135            P1.1 ...... DA输入比较基准电压        
 136          P1.2~7..... R-2R DA电阻网络              
 137          P3.7 ...... LED 模拟亮度输出             
 138          CPU CLOCK EQU 6M            */
 139          
 140          //#pragma src 
 141          
 142          
 143          #include <stdlib.h>
 144          #include<math.h>
 145          #include<intrins.h>
 146          
 147          //变量类型标识的宏定义
 148          #define Uchar unsigned char
 149          #define Uint unsigned int
 150          
 151          #define Ledlight() (P3 &= 0x7f)
 152          #define Leddark()  (P3 |= 0x80)
 153          
 154          sbit    P36     = P3^6;                   // 比较器内部判断脚
 155          sbit    LED     = P3^7;                   // 一个发光二级管观察亮度变化
 156          
 157          // 内部标志位定义
 158          bit     less;                                 // 比较是否大于 1.小于,0.大于
 159          
 160          // 全局变量定义
 161          Uchar   timer1,                   // 通用延时计数器
 162                  timer2,                       // 按键蜂鸣器反应定时器
 163                  adcdata,                              // ad转换变量
 164                  pwm1;                             // PWM输出比例
 165          
 166          // 函数列表
 167          void DelayMs(unsigned int number); // 毫秒延时
 168          void timers0();                           // 在定时器中断中做数码管的扫描显示(ct0)
 169          void Initall(void);                       // 系统初始化
 170          void timers1(void);                       // TC1定时器中断用于扫描显示与键盘
 171          Uchar adcread(void);                      // adc转换程序
 172          
 173          void main(void)  using 0
 174          {
 175   1              DelayMs(120);
 176   1              Initall();
 177   1              pwm1 = adcread();
 178   1              LED=1;
 179   1              while(1) 
C51 COMPILER V7.09   7_1                                                                   08/23/2005 13:17:18 PAGE 4   

 180   1              {
 181   2                      pwm1 = adcread();
 182   2                      timer2=10;
 183   2                      while (timer2);
 184   2              }
 185   1      }
 186          // 毫秒延时
 187          void DelayMs(unsigned int number) 
 188          {
 189   1              unsigned char temp;
 190   1      
 191   1              for(;number!=0;number--) 
 192   1                      for(temp=112;temp!=0;temp--);
 193   1      }
 194          
 195          //在定时器中断中做LED的PWM输出
 196          
 197          void timers0() interrupt 1 using 1 
 198          {
 199   1              TH0 = 0xff;
 200   1              TL0 = 0xd0;
 201   1              timer1--;
 202   1              if (timer1==pwm1)LED=0;
 203   1              if (timer1==0){
 204   2                      LED=1;
 205   2                      timer1=0x40;
 206   2                      timer2--;
 207   2                      };
 208   1      }
 209          
 210          //6位 ADC转换
 211          Uchar adcread(void)
 212          {
 213   1              Uchar i=0x3f,temp=0;
 214   1              P36 =1;
 215   1              P1 = 3; _nop_();_nop_();                     //从零开始
 216   1              while ((i--)&& (P36))
 217   1                      {
 218   2                      temp += 4;
 219   2                      P1 = temp|3;
 220   2                      _nop_(); 
 221   2                      }
 222   1              temp >>= 2;
 223   1              return temp;
 224   1      }
 225          
 226          //系统初始化
 227          void Initall(void)
 228          {
 229   1              TMOD = 0x11;              // 0001 0001 16进制计数器
 230   1              IP = 0x8;                         // 0000 1000 t1优先
 231   1              IE = 0x8A;                // 1000 1010 t0,t1中断允许
 232   1              TCON = 5;                     // 0000 0101 外部中断低电平触发
 233   1              TR0 = 1;                      // 打开定时器中断,IE中已经打开,在明示一下
 234   1              TR1 = 0;
 235   1              ET0 = 1;
 236   1              ET1 = 0;
 237   1              P1 = 0xff;
 238   1      }
 239           
 240          // TC1定时器中断用于扫描显示与键盘(ct1)
 241          void timers1(void) interrupt 3 using 2 
C51 COMPILER V7.09   7_1                                                                   08/23/2005 13:17:18 PAGE 5   

 242          {
 243   1      _nop_();                                   //实验中没有启用
 244   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    151    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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