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

📄 ss_sweep.lst

📁 DDS-320-func: 在采用 320x240 屏的设计实验箱上运行
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.06   SS_SWEEP                                                              02/25/2007 16:14:28 PAGE 1   


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

stmt level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          #include <stdlib.h>
   4          #include <math.h>
   5          #include <intrins.h>
   6          #include "display_drv.h"
   7          
   8          
   9          #define uchar unsigned char
  10          #define uint unsigned int
  11          
  12          /*定义开关中断*/
  13          #define DISABLE         EA=0
  14          #define ENABLE          EA=1
  15          #define ON              1
  16          #define OFF             0
  17          
  18          /*定义键盘*/
  19          #define key0            0
  20          #define key1            1
  21          #define key2            2
  22          #define key3            3
  23          #define key4            4
  24          #define key5            5
  25          #define key6            6
  26          #define key7            7
  27          #define key8            8
  28          #define key9            9
  29          #define key_mod         10
  30          #define key_clr         11
  31          #define key_enter       12
  32          #define key_tiao    13
  33          #define key_xuan1    14
  34          #define key_xuan2    15
  35          /*define Command*/
  36          
  37          #define Wsin            0
  38          #define Wtri            1
  39          #define Wpul            2
  40          #define Wclr            3
  41           
  42          /*定义端口,P2口用作控制线*/
  43          sbit WR_M=P2^4;                //回送M控制线
  44          sbit RESET_PHASEREG=P2^5;     //复位相位累加器
  45          
  46          /*P1口用作LED显示线*/
  47          sbit LED_CLK=P1^0;   //LED时钟线
  48          sbit LED_DAT=P1^1;   //LED数据线
  49          
  50          sbit Cmd_CS=P2^5;
  51          sbit DC=P2^6;
  52          sbit Mh=P2^7;
  53          sbit Int_wire=P3^2;
  54          
  55          
C51 COMPILER V7.06   SS_SWEEP                                                              02/25/2007 16:14:28 PAGE 2   

  56          uchar count=0;       //显示的位数
  57          bit flag=0;         //是否按了ENTER,为0表示没有按
  58          uchar idata value[5]={0,0,0,0,0};   //存储显示的数值
  59          uchar mh_data=0;                   //送给CPLD的频率步进值高位
  60          uchar ml_data=0;                   //送给CPLD的频率步进值低位
  61          
  62          uchar idata key_pressed;
  63          static uchar key_no;
  64          
  65          void led_display(uchar i);
  66          /*数字'1','2','3','4','5','6','7','8','9','0'的七段码字库*/
  67          const uchar code LED_FONT[11]={  //
  68                  0xFC, //0
  69                  0x60, //1
  70                  0xDA, //2
  71                  0xF2, //3
  72                  0x66, //4
  73                  0xB6, //5
  74                  0xBE, //6
  75                  0xE0, //7
  76                  0xFE, //8
  77                  0xF6, //9
  78                  0x00, //不显示
  79          };
  80          
  81          void init_port()
  82          {
  83   1              uchar i;
  84   1              P0 = 0xFF;
  85   1              P1 = 0xFF;
  86   1              RESET_PHASEREG=1;    //禁止相位累加器工作
  87   1              WR_M=1;              //回送M控制线初始为高电平
  88   1              Cmd_CS=1;
  89   1              P3 = 0xFF;
  90   1              for(i=0;i<6;i++)           
  91   1                  led_display(10); 
  92   1      }
  93          
  94          
  95          void init_interrupt()
  96          { 
  97   1      IE=0x81;     
  98   1      PX0=1;
  99   1      EX0=1;
 100   1      IE0=0;
 101   1      EA=1;
 102   1      IT0=1;        //外部中断0为跳变触发方式
 103   1              ENABLE; 
 104   1      
 105   1             //CPU开中断
 106   1      }
 107          
 108          void led_display(uchar i)
 109          {
 110   1              uchar j,mask;
 111   1              mask=0x01;
 112   1              for(j=0;j<8;j++){
 113   2                      LED_CLK=0;
 114   2                      LED_DAT=( (LED_FONT[i]) & mask);
 115   2                      mask<<=1;
 116   2                      LED_CLK=1;   //上升沿移位
 117   2              }
C51 COMPILER V7.06   SS_SWEEP                                                              02/25/2007 16:14:28 PAGE 3   

 118   1      }       
 119          
 120          
 121          void wait(void)
 122          {
 123   1              unsigned int i;
 124   1                      for(i=0;i<5000;i++);;
 125   1      }
 126          
 127          void delayMs(unsigned char dly)
 128          {
 129   1      unsigned char i;
 130   1      unsigned int k;
 131   1              for(i=dly;i!=0;i--)
 132   1              {
 133   2                      for(k=0;k<1000;k++);                    
 134   2              }
 135   1      }
 136          
 137          
 138          
 139          #define  SysFrq   12
 140          
 141          void SetPhase(unsigned long int Freq)
 142          {
 143   1      unsigned char div;
 144   1      unsigned int  phase;
 145   1      #if SysFrq==12
 146   1      if(Freq>31250)
 147   1      {
 148   2      Freq=31250;
 149   2      value[0]=3;
 150   2      value[1]=1;
 151   2      value[2]=2;
 152   2      value[3]=5;
 153   2      value[4]=0;
 154   2      }
 155   1      if(Freq<1007)
 156   1      {
 157   2      div=31;
 158   2      phase=Freq/0.4922;
 159   2      }
 160   1      
 161   1      if((Freq>=1007)&&(Freq<2081))
 162   1      {
 163   2      div=15;
 164   2      phase=Freq/1.0173;
 165   2      }
 166   1      if((Freq>=2081)&&(Freq<4463))
 167   1      {
 168   2      div=7;
 169   2      phase=Freq/2.1798;
 170   2      }
 171   1      if((Freq>=4463)&&(Freq<6249))
 172   1      {
 173   2      div=5;
 174   2      phase=Freq/3.0517;
 175   2      }
 176   1      if((Freq>=6249)&&(Freq<7811))
 177   1      {
 178   2      div=4;
 179   2      phase=Freq/3.8147;
C51 COMPILER V7.06   SS_SWEEP                                                              02/25/2007 16:14:28 PAGE 4   

 180   2      }
 181   1      if((Freq>=7811)&&(Freq<10415))
 182   1      {
 183   2      div=3;
 184   2      phase=Freq/5.0863;
 185   2      }
 186   1      if((Freq>=10415)&&(Freq<15624))
 187   1      {
 188   2      div=2;
 189   2      phase=Freq/7.6294;
 190   2      }
 191   1      if((Freq>=15624))
 192   1      {
 193   2      div=1;
 194   2      phase=Freq/15.2588;
 195   2      }
 196   1      #endif
 197   1      #if SysFrq==11
              if(Freq>30316)
              {
              Freq=30316;
              value[0]=3;
              value[1]=0;
              value[2]=3;
              value[3]=1;
              value[4]=6;

⌨️ 快捷键说明

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