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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
字号:
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 16:02:31 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //*********************************************************
   2          //File Name  :AD9850.c
   3          //Author     :GHL
   4          //Date       :2007/8/6
   5          //Desciption :AD9850的控制字串行加载程序
   6          //            加入键盘实现步进
   7          //*********************************************************
   8          
   9          #include<reg51.h>
  10          
  11          #define uchar unsigned char 
  12          #define uint  unsigned int 
  13          #define key_bus P1
  14          
  15          sbit load=P0^1;   //FQUD
  16          sbit sclk=P0^0;   //W_CLK
  17          sbit sdata=P0^2;  //DATA
  18          sbit reset=P0^3;   
  19          
  20          unsigned char code key_decode[]={'*',0,'#','D',7,8,9,'C',4,5,6,'B',1,2,3,'A'};
  21          /*************************延时子程序********************************/
  22          
  23          delay(uchar d)
  24          {
  25   1              while(--d);
  26   1      }
  27          
  28          /*************************AD9850初始化********************************/
  29          void  init()
  30          {
  31   1        reset=0;
  32   1        reset=1;
  33   1        reset=0;
  34   1        load=0;
  35   1      }
  36          
  37          /*************************AD9850显示正弦波********************************/
  38          AD9850(float freq)
  39          {
  40   1         float fw;
  41   1          uchar i,j,temp;
  42   1          uchar d[5];
  43   1         fw=freq*34.359738368;                       //d[4]中存放控制字最高位,即相位控制字
  44   1                                                     //Freq=MCLK*FW/2^32
  45   1         d[4]=0;
  46   1         d[0]=(unsigned long)fw;
  47   1         d[1]=(unsigned long)fw>>8;
  48   1         d[2]=(unsigned long)fw>>16;
  49   1         d[3]=(unsigned long)fw>>24;
  50   1        
  51   1         
  52   1          load=0; 
  53   1          sclk=0; 
  54   1          sclk=1;
  55   1          sclk=0;
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 16:02:31 PAGE 2   

  56   1          load=1;
  57   1          load=0;
  58   1          
  59   1          for(i=0;i<5;i++)
  60   1          {
  61   2              temp=d[i];
  62   2              for(j=0;j<8;j++)
  63   2              {
  64   3                  sclk=0;
  65   3                  if(temp&1) sdata=1;
  66   3                  else sdata=0;
  67   3                  sclk=1;
  68   3                  temp=temp>>1;
  69   3               }
  70   2            }
  71   1            load=1;
  72   1            load=0;
  73   1      
  74   1      }
  75          
  76          
  77          /************矩阵键盘读键程序*******************/
  78          
  79          unsigned char keytest()
  80          {
  81   1          unsigned char keycode=0xff,temp,i;
  82   1          key_bus=0x0f;
  83   1          temp=key_bus&0x0f; 
  84   1          if(temp!=0x0f)              //有键按下
  85   1          {
  86   2              key_bus=0x7f;
  87   2              for(i=0;i<4;i++)
  88   2              {
  89   3                  temp=key_bus&0x0f;
  90   3                  if(temp==0x07)   //输出端口示数
  91   3                  {    
  92   4                      keycode=i*4;
  93   4                      break;
  94   4                  }
  95   3                  else if(temp==0x0b)
  96   3                  {
  97   4                      keycode=i*4+1;
  98   4                      break;                                                                                    
  99   4                  }
 100   3                  else if(temp==0x0d)
 101   3                  {
 102   4                      keycode=i*4+2;
 103   4                      break;
 104   4                  }
 105   3                  else if(temp==0x0e)
 106   3                  {
 107   4                      keycode=i*4+3;
 108   4                      break;
 109   4                  }
 110   3                  key_bus=(key_bus>>1)|0x80;
 111   3              }
 112   2      
 113   2               while((key_bus&0x0f)!=0x0f)   //等待释放
 114   2               {
 115   3                   key_bus=0x0f; 
 116   3               }                                           
 117   2              
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 16:02:31 PAGE 3   

 118   2           }
 119   1           return keycode;
 120   1      }
 121          
 122          
 123          main()
 124          {
 125   1         
 126   1          long freq;
 127   1          unsigned char keycode;
 128   1       
 129   1          AD9850(500000);
 130   1          
 131   1          while(1)
 132   1          {
 133   2              keycode=keytest();
 134   2      
 135   2              if(keycode==0xff)
 136   2              {
 137   3                delay(10000);
 138   3                continue;
 139   3              }
 140   2      
 141   2              if(key_decode[keycode]==2)
 142   2               { 
 143   3                 freq=freq+100;
 144   3              
 145   3                  AD9850(freq);
 146   3                 
 147   3               }
 148   2              else if(key_decode[keycode]==1)
 149   2                 { 
 150   3                 freq=freq-100;
 151   3              
 152   3                  AD9850(freq);
 153   3                   
 154   3               }
 155   2          }
 156   1      }
 157                          
 158          
 159          
 160          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    380    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      18
   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 + -