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

📄 ad_fpga.lst

📁 单片机控制FPGA的程序,包括AD转换,频率输出,测试程序
💻 LST
字号:
C51 COMPILER V8.02   AD_FPGA                                                               08/26/2002 21:45:30 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE AD_FPGA
OBJECT MODULE PLACED IN ad_fpga.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad_fpga.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"includes.h"
   2          
   3          
   4          extern unsigned char xdata res1[256];
   5          extern unsigned char xdata resmem[256];      //存储数组
   6          extern unsigned char memshow_flag;           //显示存储波形标志位
   7          extern unsigned int L_num,R_num;    //左右移偏移量
   8          extern unsigned char cnv_flag;
   9          extern bit zero_flag;
  10          extern unsigned int show_num;             //显示累计
  11          
  12          void mydelay(unsigned int j)                 //延时
  13          {
  14   1              unsigned int i;
  15   1              for(i=0;i<j;i++);
  16   1      
  17   1      }
  18          
  19          void delay_1us(void)                     //延时1us子程序
  20          {
  21   1             _nop_();
  22   1                 _nop_();
  23   1                 _nop_();
  24   1                 _nop_();
  25   1                 _nop_();
  26   1                 _nop_();
  27   1                 _nop_();
  28   1                 
  29   1      }
  30          
  31          /*******************************************************************************/
  32          /*读取FPGA中ADS931z转换结果程序                                                */
  33          /*                                                                                                                                         */
  34          /*                                                                             */
  35          /*                                                                             */
  36          /*******************************************************************************/
  37          void fpag_clr()                                  //     读取fpga前清零
  38          {
  39   1           clr=0;
  40   1               clr=1;
  41   1               clr=0;
  42   1      
  43   1      }
  44          
  45          unsigned char read_data( )                     //从fpga中读出一次AD转换结果
  46          {
  47   1              unsigned int i;
  48   1              unsigned char ad_result;
  49   1              ad_result=0;
  50   1              read=0;
  51   1              read=1;
  52   1              clk=0;
  53   1              clk=1;
  54   1              clk=0;
  55   1              clk=1;
C51 COMPILER V8.02   AD_FPGA                                                               08/26/2002 21:45:30 PAGE 2   

  56   1              clk=0;
  57   1              read=0;
  58   1              for(i=0;i<8;i++)
  59   1              {
  60   2                      clk=0;
  61   2                      clk=1;
  62   2                      clk=0;
  63   2                      da=1;
  64   2                      if(da)
  65   2                      {
  66   3                         ad_result|=(0x01<<i);
  67   3                      }
  68   2              }
  69   1              return ad_result;
  70   1      
  71   1      }
  72          
  73          void read_result(unsigned char *da/*波形值储存数组*/)              //读出fpga中RAM中储存的数据
  74          {
  75   1          unsigned int i;
  76   1          
  77   1              for(i=0;i<256;i++)
  78   1              {
  79   2                      *da=read_data();
  80   2                 da++;
  81   2              }
  82   1      
  83   1      
  84   1      }
  85          
  86          void read_ready()                                         //读fpga准备,ads931转换结果
  87          {
  88   1              write=0;
  89   1              read=0;
  90   1              clk=0;
  91   1              clr=0;
  92   1              fpag_clr();
  93   1              write=0;
  94   1              write=1;
  95   1              write=0;
  96   1      }
  97          
  98          
  99          void cov_over() interrupt 17 using 0                            //中断判断fpga控制AD转换结束
 100          {
 101   1               EA=0;
 102   1               PRT1IF&=0xdf;
 103   1               cnv_flag=1;
 104   1               
 105   1               EA=1;  
 106   1                                                                     //下一次采样准备
 107   1                                                                         //读取采样结果
 108   1               
 109   1      //     if(memshow_flag==1)                                    //输出存储波形
 110   1      //       {
 111   1      //               if(L_num>=0)
 112   1              
 113   1      //               else if(R_num>0)
 114   1      //               show_wavright(resmem);
 115   1      //       }                                                                                          
 116   1      //       else if(memshow_flag==0)                                             //输出当前波形
 117   1      //       {
C51 COMPILER V8.02   AD_FPGA                                                               08/26/2002 21:45:30 PAGE 3   

 118   1      //               if(L_num>=0)
 119   1      //               show_wavleft(res1,L_num);
 120   1      //               else if(R_num>0)
 121   1      //               show_wavright(res1,R_num);
 122   1      //      }
 123   1            
 124   1      
 125   1      }
 126          
 127          
 128          
 129          
 130          
 131          
 132          /*******************************************************************************/
 133          /*双路AD输出程序                                                               */
 134          /*                                                                                                                                         */
 135          /*                                                                             */
 136          /*                                                                             */
 137          /*******************************************************************************/
 138          
 139          
 140          void set_dac0(unsigned char da)            //向dac0赋值
 141          {
 142   1          DAC0L=0x00;
 143   1              DAC0H=da;
 144   1      }
 145          
 146          void set_dac1(unsigned int da)             //向dac1赋值
 147          {
 148   1              DAC1L=da&0xff; 
 149   1              DAC1H = (da>>8)&0x0f;
 150   1      
 151   1      }
 152          
 153          void show_wavright(unsigned char *da/*波形储存数组*/)        //向右移动输出波形 ,unsigned int num/*显示数组

⌨️ 快捷键说明

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