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

📄 main.lst

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


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

line level    source

   1          #include"includes.h"
   2          
   3          
   4          unsigned char code  ce[]={0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
   5                                    0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00}
             -;//测
   6          
   7          unsigned char code  liang[]={0x40,0x40,0x40,0xDF,0x55,0x55,0x55,0xD5,0x55,0x55,0x55,0xDF,0x40,0x40,0x40,0x
             -00,
   8                                       0x40,0x40,0x40,0x57,0x55,0x55,0x55,0x7F,0x55,0x55,0x55,0x57,0x50,0x40,0x40,0x
             -00};//量
   9          
  10          unsigned char code  pin[]={0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00
             -,
  11                                     0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00
             -};//频
  12          
  13          unsigned char code  lv[]={0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
  14                                    0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00}
             -;//率
  15          
  16          
  17          unsigned char code mao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00}
             -;//:
  18          
  19          unsigned char code one[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}
             -;
  20          
  21          unsigned char code two[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00}
             -;
  22          
  23          unsigned char code three[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x0
             -0};
  24          
  25          unsigned char code four[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00
             -};
  26          
  27          unsigned char code five[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
             -};
  28          
  29          unsigned char code six[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00}
             -;
  30          
  31          unsigned char code seven[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0
             -0};
  32          
  33          unsigned char code eight[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x0
             -0};
  34          
  35          unsigned char code nine[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00
             -};
  36          
  37          unsigned char code zero[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00
             -};
  38          
C51 COMPILER V8.02   MAIN                                                                  08/26/2002 21:45:30 PAGE 2   

  39          unsigned char code point[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x0
             -0};//.
  40          
  41          unsigned char code k[]={0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00};/
             -/k
  42          
  43          unsigned char code H[]={0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20};/
             -/H
  44          
  45          unsigned char code z[]={0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00};/
             -/z
  46          
  47          unsigned char xdata res1[256];
  48          unsigned char xdata resmem[256];      //存储数组
  49          unsigned char memshow_flag;           //显示存储波形标志位
  50          unsigned char CTL_WORD[5];
  51          unsigned int L_num,R_num;         //左右移偏移量
  52          
  53          unsigned long freq_L,freq_H;     //读取的高低32位数值
  54          //unsigned char det_freq;                        //分频系数
  55          double freq;                      //测定的实际频率
  56          double setfreq;                  //设定的采样频率 
  57          double T;                                                //测定的时间
  58          bit zero_flag;                                   //输出直流标志
  59          unsigned char freq_flag;
  60          unsigned char Sh_0,Sh_1,Sh_2,Sh_3,Sh_4,Sh_5,Sh_6,Sh_7,Sh_8,Sh_9;
  61          unsigned long Sh_re;
  62          unsigned int tim_num;             //测量时间宽度
  63          unsigned long freq_plus;           //判断测量时间档位
  64          unsigned char cnv_flag;            //转换结束标志位
  65          unsigned int show_num;             //显示累计
  66          
  67          
  68          void main()
  69          {
  70   1        
  71   1          SYSCLK_Init();
  72   1              PORT_Init();
  73   1              DAC0_Init();
  74   1              DAC1_Init();              //系统初始化
  75   1              T2_Init();                  
  76   1               
  77   1              lcd_init();
  78   1              mydelay(10);
  79   1              lcd_clr();
  80   1              set_clr();
  81   1              fpag_clr();                   //lcd初始化,fpga清零
  82   1              
  83   1              ad9851_init();
  84   1      
  85   1      
  86   1              clr=0;
  87   1              recont=0;
  88   1              tim=0;
  89   1              Sh_0=Sh_1=Sh_2=Sh_3=Sh_4=Sh_5=Sh_6=Sh_7=Sh_8=Sh_9=0;
  90   1              tim_num=50;                            //测量时间宽度大约为50ms,数值初始化为零 
  91   1              memshow_flag=0;
  92   1              freq_flag=1;
  93   1              setfreq=0.1;
  94   1              L_num=R_num=0;
  95   1              memshow_flag=1;
  96   1              cnv_flag=0;
C51 COMPILER V8.02   MAIN                                                                  08/26/2002 21:45:30 PAGE 3   

  97   1              
  98   1      
  99   1              EA=0;
 100   1              EIE2|=0x08;                   //外部中断5允许  
 101   1              ET2=1;                   //定时器2中断允许
 102   1      
 103   1              PT2=1;                  //定时中断2设定为高优先级
 104   1              EIP2&=0xf7;             //外部中断5设定为低优先级
 105   1      
 106   1      
 107   1          lcd_drawhanzimo(0,0,ce);
 108   1              lcd_drawhanzimo(16,0,liang);
 109   1              lcd_drawhanzimo(32,0,pin);
 110   1              lcd_drawhanzimo(48,0,lv);
 111   1              lcd_drawnumber(64,0,mao);                        //第一行显示:测量频率:
 112   1      
 113   1      
 114   1          lcd_drawnumber(0,2,zero);
 115   1              lcd_drawnumber(8,2,zero);
 116   1              lcd_drawnumber(16,2,zero);
 117   1              lcd_drawnumber(24,2,zero);
 118   1              lcd_drawnumber(32,2,zero);
 119   1              lcd_drawnumber(40,2,point);
 120   1              lcd_drawnumber(48,2,zero);
 121   1              lcd_drawnumber(56,2,zero);
 122   1              lcd_drawnumber(64,2,zero);
 123   1              lcd_drawnumber(72,2,zero);
 124   1              lcd_drawnumber(80,2,zero);
 125   1              lcd_drawnumber(86,2,k);  
 126   1              lcd_drawnumber(94,2,H);
 127   1              lcd_drawnumber(102,2,z);          //第二行显示:00000.000KHz
 128   1              
 129   1              
 130   1              RCAP2H=0xff;
 131   1              RCAP2L=0xe0;
 132   1          TR2=1;       //定时器2允许
 133   1      //    ad9851_calfreq(0.2,0,CTL_WORD);   //计算9851数值
 134   1      //    ad9851_send(CTL_WORD);                              //向9851发送指令
 135   1      //       EA=1;  
 136   1              while(1)
 137   1              {
 138   2                    
 139   2              EA=0;
 140   2          set_clr();                   //测频清零 
 141   2              set_tim();                       //设定测频时间
 142   2          read_fpg();                  //读取fpga测频数值
 143   2      
 144   2      //      count_freq();            //计算测频值
 145   2              show_lcd();                      //显示测频值
 146   2      
 147   2              freq_set();       //计算频率            
 148   2              ad9851_calfreq(setfreq,0,CTL_WORD);   //计算9851数值
 149   2              
 150   2          ad9851_send(CTL_WORD);                                //向9851发送指令
 151   2      //      if(keyin)                             //判断按键命令    */       
 152   2          EA=1;                           
 153   2      //      key16();   
 154   2      //      delay_nms(1000);
 155   2              read_ready();             //读取ad采样准备

⌨️ 快捷键说明

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