sweep_320_240.lst

来自「在采用 320x240 屏的设计实验箱上运行」· LST 代码 · 共 714 行 · 第 1/3 页

LST
714
字号
C51 COMPILER V7.06   SWEEP_320_240                                                         02/25/2007 18:14:54 PAGE 1   


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

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

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

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

⌨️ 快捷键说明

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