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

📄 aa.lst

📁 ocmj4x8c显示的 c8051f021做为cpu的波形绘图功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AA
OBJECT MODULE PLACED IN aa.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe aa.c DB OE

stmt level    source

   1          #include "c8051f020.h"
   2          #include <math.h>
   3          
   4          
   5          sfr16 ADC0 = 0xBE;
   6          sfr16 DAC0 = 0xD2;
   7          sfr16 DAC1 = 0xD5;
   8          sfr16 RCAP2 = 0xCA;
   9          sfr16 T2   = 0xCC;
  10          sfr16 T0 = 0x8A;
  11          
  12          sbit LEDA = P1^2;
  13          sbit LCDRST = P1^1;
  14          sbit RW = P0^7;
  15          sbit LCDEN = P1^3;
  16          sbit LCDRS = P1^0;
  17          sbit DB0 = P3^0;
  18          sbit DB1 = P3^1;
  19          sbit DB2 = P3^2;
  20          sbit DB3 = P3^3;
  21          sbit DB4 = P3^4;
  22          sbit DB5 = P3^5;
  23          sbit DB6 = P3^6;
  24          sbit DB7 = P3^7;
  25          
  26          #define uchar unsigned char 
  27          #define uint  unsigned int
  28          #define x1    0x80
  29          #define x2    0x88
  30          #define y     0x80
  31          #define comm  0
  32          #define dat   1
  33          #define AD_VALUE_MAX  5035 // 5V
  34          #define AD_COUNT_MAX  20 // 20*4.9ms =1s
  35          #define DA_VALUE_MAX1 9990 // 10.02V
  36          #define DA_VALUE_MAX2 9940 // 9.97V
  37          #define DA_VALUE_ONE 4096/1000 //   DA_VALUE_MAX/10 
  38          #define PWM_VALUE_MAX1 10000 // 100%
  39          #define PWM_VALUE_MAX2 5000 // 5V
  40          #define LCD_COUNT_LEVEL1 1000   //
  41          #define LCD_COUNT_LEVEL2 1000   //
  42          #define N_Hz  128 //画图采样个数
  43          
  44          
  45          void config (void);
  46          void global_var(void);
  47          void show_init (void);
  48          void chk_busy (void);
  49          void init_lcd (void);
  50          void wr_lcd (uchar dat_comm,uchar content);
  51          void fys(uchar code *tab) ;
  52          void delay1 (uint ms);
  53          void delay (uint ms);
  54          void t0_init(void);
  55          void img_disp1 (uchar  *img);
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 2   

  56          void ad_convert1(void);
  57          
  58          void clrram (void);
  59          void lat_disp (uchar data1,uchar data2);
  60          void chn_disp1 (uchar code *chn);
  61          void DispConvert(void);
  62          void comparation(void);
  63          void t0_inter_handle(void);
  64          void cp0(void);
  65          
  66          uchar  xdata lcd_count;
  67          uchar  xdata key_num;
  68          uchar  xdata num;
  69          uint   xdata key_count;
  70          uchar  xdata key_flag;
  71          uchar  xdata states_flag;
  72          float  xdata ad_add;
  73          uchar  xdata ad_count;
  74          float xdata ad_until;
  75          uchar xdata ad_flag;
  76          float xdata  da_value1;
  77          float xdata da_value2;
  78          float  xdata da_count;
  79          int xdata pwm_count;
  80          uint xdata pwm1_save;
  81          uint xdata pwm2_save;
  82          uint xdata pwm_level; // 0x7FFF表示占空比为50%
  83          int xdata pwm_count_save1;
  84          int xdata pwm_count_save2;
  85          unsigned long xdata cp0_count;
  86          uchar xdata t0_count;
  87          int drawing_flag ;
  88          int low_freq;
  89          int xdata ad_init_flag;
  90          
  91          
  92          uint xdata N_Hz_Count = 0;
  93          
  94          
  95          uchar code tab0[]=
  96          {
  97          "吴耘要灭了风雨声"
  98          "                "
  99          "祁高瞻是煞笔    "
 100          "                "
 101          };
 102          
 103          uchar code tab2[]=
 104          {
 105          "周期为          "
 106          "电压有效值为    "
 107          };
 108          
 109          
 110          uchar xdata tab3[128];
 111          
 112          
 113          
 114          uchar xdata tab1[]=
 115          {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 116           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 117           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 3   

 118           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 119           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 120           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 121           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 122           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 123           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 124           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 125           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 126           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 127           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 128           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 129           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 130           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 131           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 132           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 133           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 134           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 135           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 136           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 137           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 138           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 139           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 140           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 141           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 142           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 143           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 144           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 145           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 146           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 147          
 148           };
 149          
 150          
 151          float n = 0.00;
 152          int x = 0x00;
 153          int yy = 0x00;
 154          
 155          /*void t0_inter(void) interrupt 1
 156          {
 157            
 158           
 159           {
 160            
 161            EA = 0;
 162           
 163            TH0 = 0xfc;
 164            TL0 = 0x17;
 165          
 166          
 167            
 168             
 169            
 170             }
 171             n++;
 172            EA = 1;
 173           
 174            TF0 = 0;
 175            }
 176            yy = 3;
 177          }
 178          */
 179          
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 4   

 180          void cp0_up_inter (void) interrupt 11
 181          {
 182   1         cp0_count ++ ;
 183   1         CPT0CN &=0xDF;  //清上升中断标志位CP0RIF
 184   1       
 185   1      }
 186          
 187          void ad_inter (void) interrupt 15
 188          {
 189   1      // float xdata m;
 190   1       uint xdata i;
 191   1      uint xdata b;
 192   1       float xdata m;
 193   1      // uchar xdata gew,shi,bai,qian;
 194   1      
 195   1       if(n == 128)          //////数据处理时关中断不会影响采样
 196   1          {n = 0;
 197   2               x = 0;
 198   2               }
 199   1      
 200   1       i = ADC0;
 201   1       m = i;
 202   1       m = m/4096.0;
 203   1       m *= 100;
 204   1      //////////////////////////////////
 205   1      
 206   1       if(N_Hz_Count <= 128)
 207   1        {
 208   2         b = (int)m;
 209   2         tab3[N_Hz_Count] = (int)m;
 210   2         N_Hz_Count++;
 211   2        }
 212   1      
 213   1      
 214   1      
 215   1      
 216   1      
 217   1      /////////////////////////////////
 218   1      /*
 219   1       m = (float)i;
 220   1       if (ad_flag==0)
 221   1       {
 222   1        ad_add = ad_add + m;
 223   1        if (ad_count==AD_COUNT_MAX) 
 224   1        {m=ad_add/AD_COUNT_MAX;
 225   1         ad_count= 0;
 226   1         ad_add= 0;
 227   1         ad_until=m;
 228   1         }
 229   1        else m=ad_until;
 230   1       }
 231   1       if (ad_flag==1)
 232   1       {
 233   1        ad_flag=0;
 234   1        ad_until=m;
 235   1       }
 236   1       m = m/4096.0;
 237   1       m *= AD_VALUE_MAX;
 238   1       i = (int)m;
 239   1       ad_count++;
 240   1        
 241   1       
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 5   

 242   1       qian = i/1000;
 243   1       bai = (i-qian*1000)/100;
 244   1       shi = (i-qian*1000-bai*100)/10;
 245   1       gew = i-qian*1000-bai*100-shi*10;
 246   1        if(x < 16)
 247   1        { int f;
 248   1         yy = 16-((float)(qian*10+bai))/50*16;
 249   1         f = (int)n%8;
 250   1         switch (f)
 251   1        {case 0: tab1[16*yy+x] += 0x80;break;
 252   1         case 1: tab1[16*yy+x] += 0x40;break;
 253   1         case 2: tab1[16*yy+x] += 0x20;break;
 254   1         case 3: tab1[16*yy+x] += 0x10;break;
 255   1         case 4: tab1[16*yy+x] += 0x08;break;
 256   1         case 5: tab1[16*yy+x] += 0x04;break;
 257   1         case 6: tab1[16*yy+x] += 0x02;break;
 258   1         case 7: tab1[16*yy+x] += 0x01;x++;break;
 259   1         }
 260   1        }
 261   1        n++;
 262   1        */
 263   1       /*if (gew >= 4 && gew <=9) 
 264   1       {
 265   1        gew=0;
 266   1        shi++;
 267   1        if shi=
 268   1        if (shi == 0) bai++;
 269   1        if (bai == 0) qian++;
 270   1      
 271   1       }*/
 272   1      /*
 273   1       qian += 0xB0; 
 274   1       bai += 0xB0;
 275   1       shi += 0xB0;
 276   1       gew += 0xB0;
 277   1      
 278   1       wr_lcd (comm,0x30);
 279   1       wr_lcd (comm,0x0C);
 280   1       wr_lcd (comm,0x89);
 281   1       wr_lcd (dat,0xA3);
 282   1       wr_lcd (dat,qian);
 283   1      
 284   1       wr_lcd (comm,0x8B);
 285   1       wr_lcd (dat,0xA3);
 286   1       wr_lcd (dat,bai);
 287   1       wr_lcd (dat,0xA3);
 288   1       wr_lcd (dat,shi);
 289   1       //wr_lcd (dat,gew);
 290   1      */
 291   1       AD0INT = 0;
 292   1       } 
 293            
 294           
 295            
 296            
 297            
 298            
 299            
 300          
 301          
 302          
 303          
C51 COMPILER V7.06   AA                                                                    06/25/2007 21:44:00 PAGE 6   

 304          void main(void)
 305          {int a,b;
 306   1      SP = 0x7f;
 307   1      config();
 308   1      init_lcd ();
 309   1      show_init();
 310   1      //t0_init();
 311   1      
 312   1      comparation();////开了t0和cp0
 313   1      drawing_flag = 0;   //画图或采样标志
 314   1      ad_init_flag = 1;   //判断要不要初始化AD,也就是说要不要调整采样周期
 315   1      
 316   1      while(1)
 317   1      { if(drawing_flag == 0)
 318   2         { cp0();                 ////////先采样,采样结束后关cp0和T0;注意此时TF0为1
 319   3          if(TF0 == 0)
 320   3             continue;
 321   3          if(TF0 == 1)
 322   3                  {drawing_flag = 1;
 323   4               TF0 = 0;              //////T0仍然未启动
 324   4                       }
 325   3          }
 326   2      
 327   2      if(cp0_count > 300)
 328   2         low_freq = 0;
 329   2      else
 330   2         low_freq = 1;
 331   2      
 332   2      if(ad_init_flag == 1)

⌨️ 快捷键说明

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