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

📄 ddfstest2.lst

📁 51单片机控制FPGA
💻 LST
字号:
C51 COMPILER V6.20c  DDFSTEST2                                                             12/25/2006 22:50:55 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE DDFSTEST2
OBJECT MODULE PLACED IN ddfstest2.OBJ
COMPILER INVOKED BY: D:\Program Files\keilc\C51\BIN\C51.EXE ddfstest2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*7218在硬件译码的时候,低四位数据进行译码,最高位控制小数点,其余三位无效*/
   2          //distab保存要显示的8位数据(每一位为一个字节)
   3          //ledtab为7218软件译码字型表
   4          #include<AT89x51.h>
   5          #include<absacc.h>
   6          #include<intrins.h>
   7          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
   8          #define DisData XBYTE [0xC000]                    //7218数据口地址
   9          #define LedMode P1_5
  10          #define PLD_Reset XBYE [0xA0FB]                  // 重置信号reset;复位值:0xff;
  11          #define FreHigh XBYTE [0XA0FC]                   //频率信号高八位地址;
  12          #define FreLow  XBYTE [0XA0FD]                   //频率信号低八位地址;
  13          #define PhaHigh XBYTE [0XA0FE]                   //相位信号高八位地址;
  14          #define Phalow  XBYTE [0XA0FF]                   //相位信号第八位地址;
  15          #define scode 0xb0                                //7218软件译码方式命令字
  16          #define bcode 0x90                                //B码译码方式命令字
  17          #define hexcode 0xd0                              //软件译码方式命令字
  18          #define unchar  unsigned char 
  19          #define unint unsigned int
  20          bit    flinkflag;                                  //闪烁标志位
  21          unchar keynum;                                       //按键号 
  22          unchar enter=0;
  23          bit    Led_On;
  24          char   ledcursor=7;                                  //保存光标当前位置
  25          unint  Freq;                                         //输入频率
  26          long   Phase;                                        //输入相位
  27          unchar sw;
  28          char   distab[8]={0x13,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
  29          //char temp[8];
  30          char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  31                         //0,   1,    2,   3,   4,   5,   6,   7 
  32                          0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  33                         //8    ,9   ,a   ,b   ,c    ,d  ,e    ,f  
  34                          0x80,0xbe,0x8b,0xee,0x84 };
  35                           //熄灭 H    L    P    -
  36          //***************************************************************************************  
  37          void delay200ms()
  38           { 
  39   1         int i=10000,j=1000;
  40   1         for(;i>0;i--)
  41   1         for(;j>0;j--);
  42   1        }  
  43          //***************************************************************************************  
  44              
  45          void display(unchar dot)
  46          {
  47   1         unchar i; 
  48   1         LedMode=1;
  49   1         DisCmd=scode;                         //采用软件译码
  50   1         LedMode=0;
  51   1         if(Led_On)
  52   1         {
  53   2         for(i=0;i<8;i++)                      //将distab中的数据送如7218
  54   2         {
  55   3           if((i==dot)&(dot!=0))
C51 COMPILER V6.20c  DDFSTEST2                                                             12/25/2006 22:50:55 PAGE 2   

  56   3      	   DisData=ledtab[distab[i]]+0x80;   //查表转化并将字型送入7218
  57   3      	else
  58   3             DisData=ledtab[distab[i]];        //查表转化并将字型送入7218
  59   3         } 
  60   2        }
  61   1      }           
  62          //***************************************************************************************  
  63          void flink()   //flag为1闪烁,flag为0,不闪烁;
  64          {
  65   1        
  66   1        unchar  i;
  67   1        while(flinkflag)            //光标位置闪烁
  68   1         {
  69   2          LedMode=1;
  70   2          DisCmd=scode;         //采用软件译码
  71   2          LedMode=0;
  72   2          for(i=0;i<8;i++)      //将distab中的数据送如7218       
  73   2            {
  74   3              if(i==ledcursor)
  75   3      	        DisData=0x80; //查表转化并将字型送入7218 
  76   3      	    else
  77   3                  DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
  78   3            }
  79   2      	 delay200ms();
  80   2      	 LedMode=1;
  81   2           DisCmd=scode;            
  82   2      	 display(0);
  83   2           delay200ms();
  84   2         }
  85   1      }
  86          //***************************************************************************************
  87          void KeyprgF1(void)    //输入频率
  88          {
  89   1         sw=1;
  90   1         flinkflag=1;
  91   1         ledcursor=4;
  92   1         distab[0]=0x00;
  93   1         distab[1]=0x00;
  94   1         distab[2]=0x00;
  95   1         distab[3]=0x00;
  96   1         distab[4]=0x00;
  97   1         distab[5]=0x10;
  98   1         distab[6]=0x10;
  99   1         distab[7]=0x0f;
 100   1         display(0);
 101   1      }
 102          void KeyprgF2(void )   //输入相位
 103          {
 104   1       sw=0;
 105   1       ledcursor=2;
 106   1       flinkflag=1;
 107   1       distab[0]=0x00;
 108   1       distab[1]=0x00;
 109   1       distab[2]=0x00;
 110   1       distab[3]=0x10;
 111   1       distab[4]=0x10;
 112   1       distab[5]=0x10;
 113   1       distab[6]=0x10;
 114   1       distab[7]=0x13;
 115   1       display(0);
 116   1      }
 117           //void KeyprgClear(void){}
C51 COMPILER V6.20c  DDFSTEST2                                                             12/25/2006 22:50:55 PAGE 3   

 118           void KeyprgEnter(void)
 119           {
 120   1         unint temp;
 121   1         //enter=!enter;
 122   1         flinkflag=0;
 123   1         if(sw)
 124   1         {
 125   2            Freq=distab[4]*1000+distab[3]*100+distab[2]*10+distab[1];
 126   2            temp=_iror_(Freq,8);
 127   2            FreHigh=temp;
 128   2            temp=Freq%256;
 129   2            FreLow=temp;
 130   2          }
 131   1         else
 132   1           {
 133   2      	   Phase=distab[2]*100+distab[1]*10+distab[0];
 134   2             Phase=(Phase*512)/360;
 135   2             temp=(unint)_lror_(Phase,1);
 136   2             PhaHigh=temp;
 137   2             temp=(unint)(Phase&0x01);
 138   2             temp=_irol_(Phase,7);
 139   2             Phalow=temp;
 140   2      	  }
 141   1             display(0); //显示键值
 142   1      	   
 143   1       } 
 144           
 145          //**************************************************************************************
 146          
 147          void keyprg(unchar key)  //键盘键值执行的程序
 148          {  
 149   1       // unchar i;
 150   1        if(key<=9)
 151   1         {   
 152   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
 153   2      	   if(ledcursor>0)                //光标移位
 154   2                 ledcursor--;
 155   2             else 
 156   2                 ledcursor=7;
 157   2          display(0); //显示键值
 158   2         	}
 159   1        
 160   1        else 
 161   1         {
 162   2          switch(key)
 163   2      	   {
 164   3      	     
 165   3      		 case 0x0A:             
 166   3      		           KeyprgF1();
 167   3      	     break;	 
 168   3      		 case 0x0B:            //功能键F2
 169   3      	        	   KeyprgF2();
 170   3      	     break;	 
 171   3      		 case 0x0C:           //KeyprgBack();
 172   3      		          if(ledcursor<7)                //光标移位
 173   3                             ledcursor++;
 174   3                         else 
 175   3                             ledcursor=0;
 176   3                             display(0); //显示键值
 177   3      	     break;
 178   3      	 	 case 0x0D:  //加
 179   3      		            if(distab[ledcursor]<0x09)
C51 COMPILER V6.20c  DDFSTEST2                                                             12/25/2006 22:50:55 PAGE 4   

 180   3      		                distab[ledcursor]++;
 181   3                           else
 182   3                               distab[ledcursor]=0;
 183   3                               display(0); //显示键值
 184   3      	     break;	
 185   3       		 case 0x0E:    //减
 186   3      		           if(distab[ledcursor]>0)
 187   3      		           distab[ledcursor]--;
 188   3                    
 189   3      		 else
 190   3                     distab[ledcursor]=9;
 191   3      			   display(00); //显示键值
 192   3      		    
 193   3      	     break;	 
 194   3      		 case 0x0F:       
 195   3      		           KeyprgEnter();        
 196   3      	     break;	 
 197   3      		 default:
 198   3      	     break;	 
 199   3      		}
 200   2      	 }
 201   1      
 202   1      }
 203          //**************************************************************************************
 204          void intt0() interrupt 0 
 205          { 
 206   1       
 207   1       EX0=0;              //关键盘中断,禁止相应其他按键
 208   1       keynum=P1;          //从p1口读入键盘值
 209   1       keynum=keynum&0x0f; //取低四位;
 210   1       keyprg(keynum);
 211   1       //if(enter)    //不是enter键,屏蔽中断
 212   1        EX0=1;
 213   1      }
 214          
 215          //**************************************************************************************
 216          
 217          void main()
 218          { 
 219   1        unchar j=0;
 220   1        EX0=1;
 221   1        //ET0=1;
 222   1        EA=1;
 223   1        //clock_initial() ;
 224   1        Led_On=1;
 225   1        display(0);
 226   1        while(1)
 227   1          {
 228   2      	 // if(flinkflag==1)
 229   2            flink();
 230   2          }
 231   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    772    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
C51 COMPILER V6.20c  DDFSTEST2                                                             12/25/2006 22:50:55 PAGE 5   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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