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

📄 ddfstest2.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.09   DDFSTEST2                                                             08/03/2005 15:38:15 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE DDFSTEST2
OBJECT MODULE PLACED IN ddfstest2.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE ddfstest2.c BROWSE DEBUG OBJECTEXTEND

line level    source

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

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

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

 180   3                   break;      
 181   3                       case 0x0F:       
 182   3                                 KeyprgEnter();        
 183   3                   break;      
 184   3                       default:
 185   3                   break;      
 186   3                      }
 187   2               }
 188   1      
 189   1      }
 190          //**************************************************************************************
 191          void intt0() interrupt 0 
 192          { 
 193   1       
 194   1       EX0=0;              //关键盘中断,禁止相应其他按键
 195   1       keynum=P1;          //从p1口读入键盘值
 196   1       keynum=keynum&0x0f; //取低四位;
 197   1       keyprg(keynum);
 198   1       //if(enter)    //不是enter键,屏蔽中断
 199   1        EX0=1;
 200   1      }
 201          
 202          //**************************************************************************************
 203          
 204          void main()
 205          { 
 206   1        unchar j=0;
 207   1        EX0=1;
 208   1        EA=1;
 209   1        display();
 210   1        while(1)
 211   1          {
 212   2          if(flinkflag)
 213   2            flink();
 214   2          }
 215   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    706    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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