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

📄 aa.lst

📁 我做的波形发生器
💻 LST
字号:
C51 COMPILER V7.06   AA                                                                    12/22/2008 18:10:55 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 BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <string.h>
   2          #include<reg51.h>
   3          #include <stdio.h>
   4          #include <absacc.h>
   5          
   6          #define uchar unsigned char 
   7          #define uint unsigned int 
   8          #define DA0832 P2
   9          uchar  TAB[]={0,1,2,3,4,5,6,7,8,9};
  10          uchar  disp[6]={' ',' ',' ',' ','H','Z'};
  11          uint freq=0;//频率变量
  12          uchar  code table1[]="Sinusoidal Wave";     //正弦波
  13          uchar  code table2[]="Pyramidal Wave";     //三角波
  14          uchar  code table3[]="Sawtooth Wave";      //锯齿波
  15          uchar  code table4[]="Square Wave";                //方波
  16          uchar  code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,  //正弦波列表
  17                      0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,
  18                                  0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,
  19                                  0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,
  20                                  0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
  21                                  0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
  22                                  0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,
  23                                  0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,
  24                                  0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,
  25                                  0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,
  26                                  0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,
  27                                  0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,
  28                                  0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,
  29                                  0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,
  30                                  0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,
  31                                  0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,
  32                                  0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,
  33                                  0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  34                                  0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
  35                                  0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,
  36                                  0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,
  37                                  0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,
  38                                  0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,
  39                                  0x72,0x76,0x79,0x7c,0x80 };
  40           /*------------------------位定义--------------------------------*/
  41          /*sbit PB0=P1^0;
  42          sbit PB1=P1^1;
  43          sbit PB2=P1^2;
  44          sbit PB3=P1^3;
  45          sbit PB4=P1^4;
  46          sbit PB5=P1^5;
  47          sbit PB6=P1^6;
  48          sbit PB7=P1^7;
  49          /*----------------------*/
  50          /*sbit Pc0=P2^0;
  51          sbit Pc1=P2^1;
  52          sbit Pc2=P2^2;
  53          sbit Pc3=P2^3;
  54          sbit Pc4=P2^4;
  55          sbit Pc5=P2^5;
C51 COMPILER V7.06   AA                                                                    12/22/2008 18:10:55 PAGE 2   

  56          sbit Pc6=P2^6;
  57          sbit Pc7=P2^7;*/
  58          /*---------------------------*/
  59          sfr16 DPTR=0x82;//声明DPTR
  60          
  61          sbit RS=P3^0;
  62          sbit RW=P3^1;
  63          sbit E=P3^2;
  64          sbit busy=P0^7;
  65          uchar fun=0,b=0,c=0,d=0,e=0,tl,th;
  66          /*-------------函数声明-------------------*/
  67          int  keyscan();
  68          void key1(void);
  69          void key2(void);
  70          void key3(void);
  71          void key4(void);
  72          void delay_ms(int ms);
  73          void write_cmd(uchar cmd) ;
  74          void write_data(uchar d) ;
  75          void init_lcd();
  76          void lcd_display_xy(char *string , uchar x, uchar y);
  77          void inter_int();
  78          /*******主程序**********/
  79          main()
  80          {
  81   1       inter_int();
  82   1       init_lcd();
  83   1       P2=0xff;
  84   1       while(1)
  85   1         {          
  86   2      
  87   2          keyscan();
  88   2         }
  89   1      }
  90          /*----------定时器初始---------------*/
  91          void inter_int()
  92          {
  93   1          TMOD=0X01;
  94   1          TR0=1;
  95   1          th=0xff;
  96   1          tl=0xd0;
  97   1          TH0=th;
  98   1          TL0=tl;
  99   1          ET0=1;
 100   1          EA=1;
 101   1      }
 102          /*******延时**********/
 103          void delay_ms(int ms)
 104          {
 105   1       uchar i;
 106   1       uint  j;
 107   1       for(j=2*ms;j>0;j--) 
 108   1        for(i=250;i>0;i--); 
 109   1      }
 110          
 111          /******扫描*********/
 112          int keyscan()
 113          {
 114   1        uchar key_value;
 115   1        uchar key_temp;
 116   1        do
 117   1          {
C51 COMPILER V7.06   AA                                                                    12/22/2008 18:10:55 PAGE 3   

 118   2            P1=0xff;
 119   2            key_temp=P1;
 120   2            delay_ms(5);
 121   2            P1=0xff;
 122   2            key_value=P1;
 123   2           }
 124   1         while(key_value!=key_temp);
 125   1         if(key_value==0xfe)key1();
 126   1         if(key_value==0xfd)key2();
 127   1         if(key_value==0xfb)key3();
 128   1         if(key_value==0xf7)key4(); 
 129   1      }
 130          
 131          /*-------------1602-------------------*/
 132          
 133          void write_cmd(uchar cmd)
 134          
 135          {
 136   1      
 137   1         RS=0;
 138   1         RW=0;
 139   1         E=0;
 140   1         P0=cmd;
 141   1         delay_ms(2);
 142   1         E=1;
 143   1         delay_ms(2);
 144   1         E=0;
 145   1      }
 146          
 147          void write_data(uchar d)
 148          
 149          {
 150   1      
 151   1         RS=1;
 152   1         RW=0;
 153   1         E=0;
 154   1         P0=d;
 155   1         delay_ms(2);
 156   1         E=1;
 157   1         delay_ms(2);
 158   1         E=0;
 159   1      }
 160          
 161           void lcd_display_xy(char *string , uchar x, uchar y)
 162          { uchar i;
 163   1        
 164   1        write_cmd(0x80+0x40*y+x);
 165   1        for (i=0;i<strlen(string);i++)
 166   1        write_data(string[i]);
 167   1      }
 168          
 169          
 170          void init_lcd()
 171          {
 172   1          write_cmd(0x3f);
 173   1              write_cmd(0x0c);//不显示光标
 174   1              write_cmd(0x06);//指针自加一,整屏显示不移动
 175   1              write_cmd(0x01);//清屏
 176   1      //      lcd_display_xy(table2,2,0);
 177   1      }
 178          
 179          
C51 COMPILER V7.06   AA                                                                    12/22/2008 18:10:55 PAGE 4   

 180           /*-------------波形设置---------------------*/
 181          void key1(void)             //1键选择发波类型,1为正弦波,2为三角波,3为方波,4为锯齿波
 182          {
 183   1       fun++;
 184   1       if(fun==5)fun=0x00;
 185   1       
 186   1      }
 187          
 188           void key2(void)            //2键加大频率
 189          {
 190   1       tl++;
 191   1       if(tl==0x1f)th++;
 192   1      }
 193          
 194          void key3(void)           //3键减小频率
 195          {
 196   1       tl--;
 197   1       if(tl==0x00)th--;
 198   1      }
 199          
 200          void key4(void)                        //4键显示频率
 201          {
 202   1          TR0=0;                                //关闭T0
 203   1          DPL=TL0;
 204   1          DPH=TH0;
 205   1          freq=DPTR;                             //计数量放入freq
 206   1          if(freq>=10000)                       //超过10KHZ
 207   1              {
 208   2                disp[4]=TAB[freq/1000];            // 十位
 209   2                disp[3]=TAB[(freq/1000)%10];       //个位
 210   2                disp[2]='K';
 211   2              }
 212   1          else                                    //低于10KHZ
 213   1              {
 214   2               disp[5]=TAB[(freq/1000)%10];        //千位
 215   2               disp[4]=TAB[(freq/100)%10];         //百
 216   2               disp[3]=TAB[(freq/10)%10];          //十位
 217   2               disp[2]=TAB[freq%10];               //个位
 218   2             }
 219   1         
 220   1          lcd_display_xy(disp,2,0);
 221   1           TR0=1;
 222   1      }
 223          
 224          
 225          /*-----------------中断服务程序---------------------------*/
 226          void time0_int(void) interrupt 1   
 227          {
 228   1          TR0=0;
 229   1       if(fun==1)
 230   1          {
 231   2              DA0832=tosin[b];             //正弦波
 232   2          b++;
 233   2              }
 234   1       else if(fun==2)                //三角波
 235   1            {
 236   2                 if(c<128)
 237   2                         DA0832=c;
 238   2               else 
 239   2                            DA0832=255-c;
 240   2                    c++;
 241   2                       }
C51 COMPILER V7.06   AA                                                                    12/22/2008 18:10:55 PAGE 5   

 242   1       else if(fun==3)                // 方波
 243   1            {
 244   2                 d++;
 245   2                 if(d<=128)
 246   2                      DA0832=0x00;
 247   2             else 
 248   2                      DA0832=0xff;
 249   2           }
 250   1      else if(fun==4)        //锯齿波
 251   1            {
 252   2                 if(e<255)
 253   2                         DA0832=e;
 254   2               else 
 255   2                            DA0832=0;
 256   2                    e++;
 257   2               }
 258   1                 
 259   1       TH0=th;
 260   1       TL0=tl;
 261   1       TR0=1;
 262   1      }
 263          
 264          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    550    ----
   CONSTANT SIZE    =    313    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     25       7
   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 + -