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

📄 main.lst

📁 单片机`方波发生器,可调频, 0-1000HZ
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /**********方波发生器*********/
   2          //作者:翰海光舟
   3          //日期:2005年12月26日
   4          
   5          /***********宏定义************/
   6          
   7          #include<AT89X52.H>
   8          
   9          /*******子函数声明************/
  10          void delay10ms(void);
  11          
  12          /****全局变量定义************/
  13          
  14          unsigned char i,j;                 //循环变量
  15          unsigned int frequency=0;          //从键盘输入的频率
  16          unsigned long pw;                  //脉冲宽度
  17          unsigned char multiple;            //脉宽比65536的倍数
  18          unsigned int rest;                 //脉宽比65536的余数
  19          unsigned char counter;             //计数变量
  20          unsigned char number=0;            //数组下标
  21          unsigned char buffer=0;            //位选标志
  22          unsigned char disbuf[4];           //缓冲数组
  23          bit flag=0;                        //第一次按下数字键的标志,0=第一次按下
  24          unsigned char code disp[]={0x3f,0x06,0x5b,0x4f,0x66,
  25                                      0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x79};      //0~9、(null)、E
  26                            
  27          sbit key0=P1^0;           //0~9数字键
  28          sbit key1=P1^1;
  29          sbit key2=P1^2;
  30          sbit key3=P1^3;
  31          sbit key4=P1^4;
  32          sbit key5=P1^5;
  33          sbit key6=P1^6;
  34          sbit key7=P1^7;
  35          sbit key8=P3^0;
  36          sbit key9=P3^1;
  37          
  38          sbit makesure=P3^2; //确认键
  39          sbit renew=P3^3; //重置键
  40          /**********************************主函数*****************************/
  41          
  42          void main(void)
  43          {
  44   1       TMOD=0x11;     //中断初始化
  45   1       EA=1;
  46   1       ET0=1;
  47   1       ET1=1;
  48   1       TR1=1;
  49   1       
  50   1       TH1=65036>>8;
  51   1       TL1=65036;
  52   1       P2_0=0;       //点亮电源指示灯
  53   1      
  54   1      /**************************按键查询**********************************/
  55   1       while(1)
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 2   

  56   1       {
  57   2      begin:
  58   2        if(key0==0)
  59   2        {
  60   3         delay10ms();                //软件消抖
  61   3         if(key0==0)
  62   3         {
  63   4          switch(number)
  64   4          {
  65   5               case 0:
  66   5                  disbuf[3]=10;      //10=无效零消隐
  67   5                  disbuf[2]=10;
  68   5                  disbuf[1]=10; 
  69   5                      disbuf[0]=0;       //数码管相应位显示的数字
  70   5                              break;
  71   5               case 1:
  72   5                  disbuf[3]=10;
  73   5                  disbuf[2]=10;
  74   5                      disbuf[1]=disbuf[0];
  75   5                      disbuf[0]=0;
  76   5                              break;
  77   5               case 2:
  78   5                  disbuf[3]=10;        
  79   5                      disbuf[2]=disbuf[1];
  80   5                      disbuf[1]=disbuf[0];
  81   5                      disbuf[0]=0;
  82   5                              break;
  83   5           case 3:
  84   5                      disbuf[3]=disbuf[2];
  85   5                      disbuf[2]=disbuf[1];
  86   5                      disbuf[1]=disbuf[0];
  87   5                      disbuf[0]=0;
  88   5                              break;          
  89   5            }
  90   4           number++;
  91   4               if(number==4)
  92   4               number=0;
  93   4      
  94   4      
  95   4          if(flag==0)
  96   4               flag=1;
  97   4          else
  98   4               {
  99   5            frequency=(int)(frequency*10);
 100   5                if(frequency>1000)               //输入的频率大于1000
 101   5                  {
 102   6                   disbuf[3]=11;
 103   6                       disbuf[2]=disbuf[1]=disbuf[0]=10;
 104   6                       frequency=0;
 105   6                       goto exception;               //异常处理       
 106   6               }
 107   5                 }
 108   4          
 109   4          while(key0==0);
 110   4          }
 111   3         }
 112   2      
 113   2        if(key1==0)
 114   2        {
 115   3         delay10ms();
 116   3         if(key1==0)
 117   3         {
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 3   

 118   4          switch(number)
 119   4          {
 120   5               case 0: 
 121   5                  disbuf[3]=10;
 122   5                  disbuf[2]=10;
 123   5                  disbuf[1]=10; 
 124   5                      disbuf[0]=1;
 125   5                              break;
 126   5               case 1:
 127   5                  disbuf[3]=10;
 128   5                  disbuf[2]=10;
 129   5                      disbuf[1]=disbuf[0];
 130   5                      disbuf[0]=1;
 131   5                              break;
 132   5               case 2:
 133   5                  disbuf[3]=10;        
 134   5                      disbuf[2]=disbuf[1];
 135   5                      disbuf[1]=disbuf[0];
 136   5                      disbuf[0]=1;
 137   5                              break;
 138   5           case 3:
 139   5                      disbuf[3]=disbuf[2];
 140   5                      disbuf[2]=disbuf[1];
 141   5                      disbuf[1]=disbuf[0];
 142   5                      disbuf[0]=1;
 143   5                              break;          
 144   5            }
 145   4           number++;
 146   4               if(number==4)
 147   4               number=0;
 148   4      
 149   4          if(flag==0)
 150   4               {
 151   5                flag=1;
 152   5                frequency=1;
 153   5                }
 154   4          else
 155   4              {
 156   5          frequency=(int)(frequency*10+1);
 157   5                        if(frequency>1000)
 158   5                  {
 159   6                   disbuf[3]=11;
 160   6                       disbuf[2]=disbuf[1]=disbuf[0]=10;
 161   6                       frequency=0;
 162   6                       goto exception;
 163   6               }
 164   5            }
 165   4          while(key1==0);
 166   4          }
 167   3         }
 168   2      
 169   2        if(key2==0)
 170   2        {
 171   3         delay10ms();
 172   3         if(key2==0)
 173   3         {
 174   4          switch(number)
 175   4          {
 176   5               case 0:
 177   5                  disbuf[3]=10;
 178   5                  disbuf[2]=10;
 179   5                  disbuf[1]=10; 
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 4   

 180   5                      disbuf[0]=2;
 181   5                              break;
 182   5               case 1:
 183   5                  disbuf[3]=10;
 184   5                  disbuf[2]=10;
 185   5                      disbuf[1]=disbuf[0];
 186   5                      disbuf[0]=2;
 187   5                              break;
 188   5               case 2:
 189   5                  disbuf[3]=10;
 190   5                      disbuf[2]=disbuf[1];
 191   5                      disbuf[1]=disbuf[0];
 192   5                      disbuf[0]=2;
 193   5                              break;
 194   5           case 3:
 195   5                      disbuf[3]=disbuf[2];
 196   5                      disbuf[2]=disbuf[1];
 197   5                      disbuf[1]=disbuf[0];
 198   5                      disbuf[0]=2;
 199   5                              break;          
 200   5            }
 201   4           number++;
 202   4               if(number==4)
 203   4               number=0;
 204   4      
 205   4           if(flag==0)
 206   4               {
 207   5                flag=1;
 208   5                frequency=2;
 209   5                }
 210   4          else
 211   4              {
 212   5          frequency=(int)(frequency*10+2);
 213   5                        if(frequency>1000)
 214   5                  {
 215   6                   disbuf[3]=11;
 216   6                       disbuf[2]=disbuf[1]=disbuf[0]=10;
 217   6                       frequency=0;
 218   6                       goto exception;
 219   6               }
 220   5            }
 221   4          while(key2==0);
 222   4          }
 223   3         }
 224   2      
 225   2        if(key3==0)
 226   2        {
 227   3         delay10ms();
 228   3         if(key3==0)
 229   3         {   
 230   4          switch(number)
 231   4          {
 232   5               case 0: 
 233   5                  disbuf[3]=10;
 234   5                  disbuf[2]=10;
 235   5                  disbuf[1]=10; 
 236   5                      disbuf[0]=3;
 237   5                              break;
 238   5               case 1:
 239   5                  disbuf[3]=10;
 240   5                  disbuf[2]=10;
 241   5                      disbuf[1]=disbuf[0];
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 5   

 242   5                      disbuf[0]=3;
 243   5                              break;
 244   5               case 2:
 245   5                  disbuf[3]=10;
 246   5                      disbuf[2]=disbuf[1];
 247   5                      disbuf[1]=disbuf[0];
 248   5                      disbuf[0]=3;
 249   5                              break;
 250   5           case 3:
 251   5                      disbuf[3]=disbuf[2];
 252   5                      disbuf[2]=disbuf[1];
 253   5                      disbuf[1]=disbuf[0];
 254   5                      disbuf[0]=3;
 255   5                              break;          
 256   5            }
 257   4           number++;
 258   4               if(number==4)
 259   4               number=0;
 260   4      
 261   4          if(flag==0)
 262   4               {
 263   5                flag=1;
 264   5                frequency=3;
 265   5                }
 266   4          else
 267   4              {
 268   5           frequency=(int)(frequency*10+3);
 269   5                        if(frequency>1000)
 270   5                  {
 271   6                   disbuf[3]=11;
 272   6                       disbuf[2]=disbuf[1]=disbuf[0]=10;
 273   6                       frequency=0;
 274   6                       goto exception;
 275   6               }
 276   5            }
 277   4          while(key3==0);
 278   4          }
 279   3         }
 280   2      
 281   2        if(key4==0)
 282   2        {
 283   3         delay10ms();
 284   3         if(key4==0)
 285   3         {    
 286   4          switch(number)
 287   4          {
 288   5               case 0: 
 289   5                  disbuf[3]=10;
 290   5                  disbuf[2]=10;
 291   5                  disbuf[1]=10; 
 292   5                      disbuf[0]=4;
 293   5                              break;
 294   5               case 1:
 295   5                  disbuf[3]=10;
 296   5                  disbuf[2]=10;
 297   5                      disbuf[1]=disbuf[0];
 298   5                      disbuf[0]=4;
 299   5                              break;
 300   5               case 2:
 301   5                  disbuf[3]=10;        
 302   5                      disbuf[2]=disbuf[1];
 303   5                      disbuf[1]=disbuf[0];
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 6   

 304   5                      disbuf[0]=4;
 305   5                              break;
 306   5           case 3:
 307   5                      disbuf[3]=disbuf[2];
 308   5                      disbuf[2]=disbuf[1];
 309   5                      disbuf[1]=disbuf[0];
 310   5                      disbuf[0]=4;
 311   5                              break;          
 312   5            }
 313   4           number++;
 314   4               if(number==4)
 315   4               number=0;
 316   4      
 317   4          if(flag==0)
 318   4               {
 319   5                flag=1;
 320   5                frequency=4;
 321   5                }
 322   4          else
 323   4              {
 324   5          frequency=(int)(frequency*10+4);
 325   5                        if(frequency>1000)
 326   5                  {
 327   6                   disbuf[3]=11;
 328   6                       disbuf[2]=disbuf[1]=disbuf[0]=10;
 329   6                       frequency=0;
 330   6                       goto exception;
 331   6               }
 332   5            }
 333   4          while(key4==0);
 334   4          }
 335   3         }
 336   2      
 337   2        if(key5==0)
 338   2        {
 339   3         delay10ms();
 340   3         if(key5==0)
 341   3         {
 342   4          switch(number)
 343   4          {
 344   5               case 0: 
 345   5                  disbuf[3]=10;
 346   5                  disbuf[2]=10;
 347   5                  disbuf[1]=10; 
 348   5                      disbuf[0]=5;
 349   5                              break;
 350   5               case 1:
 351   5                  disbuf[3]=10;
 352   5                  disbuf[2]=10;
 353   5                      disbuf[1]=disbuf[0];
 354   5                      disbuf[0]=5;
 355   5                              break;
 356   5               case 2:
 357   5                  disbuf[3]=10;
 358   5                      disbuf[2]=disbuf[1];
 359   5                      disbuf[1]=disbuf[0];
 360   5                      disbuf[0]=5;
 361   5                              break;
 362   5           case 3:
 363   5                      disbuf[3]=disbuf[2];
 364   5                      disbuf[2]=disbuf[1];
 365   5                      disbuf[1]=disbuf[0];
C51 COMPILER V7.06   MAIN                                                                  12/27/2008 11:09:59 PAGE 7   

 366   5                      disbuf[0]=5;
 367   5                              break;          
 368   5            }
 369   4           number++;
 370   4               if(number==4)
 371   4               number=0;
 372   4      

⌨️ 快捷键说明

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