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

📄 12-3.lst

📁 一些简单的c51程序
💻 LST
字号:
C51 COMPILER V7.09   12_3                                                                  08/11/2005 18:38:41 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 12_3
OBJECT MODULE PLACED IN 12-3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12-3.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   12_3                                                                  08/11/2005 18:38:41 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   12_3                                                                  08/11/2005 18:38:41 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          //#include "reg51.h"
 142          #include <stdlib.h>
 143          #include<math.h>
 144          #include<intrins.h>
 145          
 146          //变量类型标识的宏定义
 147          #define Uchar unsigned char
 148          #define Uint unsigned int
 149          
 150          #define Ledlight() (P3 &= 0x7f)
 151          #define Leddark()  (P3 |= 0x80)
 152          
 153          sbit    P36     = P3^6;                           // 比较器内部判断脚
 154          sbit    LED     = P3^7;                           // 一个发光二级管观察亮度变化
 155          
 156          // 内部标志位定义
 157          bit     less;                                         // 比较是否大于 1.小于,0.大于
 158          
 159          // 全局变量定义
 160          Uchar   timer1,                           // 通用延时计数器
 161                  timer2,                               // 按键蜂鸣器反应定时器
 162                  adcdata,                                      // ad转换变量
 163                  pwm1;                                     // PWM输出比例
 164          
 165          // 函数列表
 166          void DelayMs(unsigned int number);        // 毫秒延时
 167          void timers0();                                   // 在定时器中断中做数码管的扫描显示(ct0)
 168          void Initall(void);                               // 系统初始化
 169          void timers1(void);                               // TC1定时器中断用于扫描显示与键盘
 170          Uchar adcread(void);                              // adc转换程序
 171          
 172          void main(void)  using 0
 173          {
 174   1              DelayMs(120);
 175   1              Initall();
 176   1              pwm1 = adcread();
 177   1              LED=1;
 178   1              while(1) 
 179   1              {
C51 COMPILER V7.09   12_3                                                                  08/11/2005 18:38:41 PAGE 4   

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

 242   1      _nop_();                                        //实验中没有启用
 243   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 + -