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

📄 ddfstest1.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.06   DDFSTEST1                                                             08/24/2005 18:34:01 PAGE 1   


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

stmt level    source

   1          /*mcu向cpld写一个字节,再读出来 
   2          //*7218在硬件译码的时候,低四位数据进行译码,最高位控制小数点,其余三位无效*/
   3          // distab保存要显示的8位数据(每一位为一个字节)
   4          // ledtab为7218软件译码字型表
   5          #include<AT89X51.h>
   6          //#include<intrins.h>
   7          #include<absacc.h>
   8          #define DisCmd XBYTE [0xC100]                     //7218控制字地址
   9          #define DisData XBYTE [0xC000]                    //7218数据口地址
  10          #define LedMode P1_5
  11          #define scode 0xb0                                //7218软件译码方式命令字
  12          #define bcode 0x90                                //B码译码方式命令字
  13          #define hexcode 0xd0                              //软件译码方式命令字
  14          #define unchar  unsigned char 
  15          bit enter=0;
  16          char keynum;                                       //按键号 
  17          char ledcursor=7;                                  //保存光标当前位置
  18          char distab[8]={0x12,0x13,0x14,0x00,0x12,0x12,0x0e,0x11} ; // 要显示的内容 hello-pp
  19          char temp[8];
  20          char code ledtab[]={ 0xfb,0xb0,0xed,0xf5,0xb6,0xd7,0xdf,0xf0,
  21                         //0,   1,    2,   3,   4,   5,   6,   7 
  22                          0xff,0xf7,0xfe,0x9f,0xcb,0xbd,0xcf,0xce,
  23                         //8    ,9   ,a   ,b   ,c    ,d  ,e    ,f  
  24                          0x80,0xbe,0x8b,0xee,0x84,0xca,0xf6 };
  25                         //熄灭 H    L    P    -   r     q
  26          unsigned int phase=0;
  27          unsigned int fre=0;
  28          //***************************************************************************************    
  29           //void KeyprgF1(void){}
  30          // void KeyprgF2(void ){}
  31           //void KeyprgClear(void){}
  32           //void KeyprgEnter(void){} 
  33           //***************************************************************************************  
  34                  
  35          void display()
  36          {
  37   1         unchar i; 
  38   1         LedMode=1;
  39   1         DisCmd=scode;            //采用软件译码
  40   1         LedMode=0;
  41   1         
  42   1         for(i=0;i<8;i++)                    //将distab中的数据送如7218
  43   1         {
  44   2          
  45   2             DisData=ledtab[distab[i]];      //查表转化并将字型送入7218
  46   2         } 
  47   1       
  48   1      } 
  49          //**************************************************************************************
  50          void KeyprgF2()                  //在光标当前位置设置小数点
  51          {
  52   1           unchar i;   
  53   1         DisCmd=scode;            //采用软件译码
  54   1         for(i=0;i<8;i++)      //将distab中的数据送如7218
  55   1         {
C51 COMPILER V7.06   DDFSTEST1                                                             08/24/2005 18:34:01 PAGE 2   

  56   2           if(i=ledcursor)
  57   2           temp[i]=ledtab[distab[i]]+0x80;
  58   2           temp[i]=ledtab[distab[i]]; //查表转化并将字型送入7218
  59   2               DisData=temp[i];
  60   2         }
  61   1          
  62   1      
  63   1      }
  64           //**************************************************************************************
  65          
  66          void keyprg(unchar key)  //键盘键值执行的程序
  67          {  
  68   1        unchar i;
  69   1        if((key<=9)&enter)
  70   1         {   
  71   2            distab[ledcursor]=keynum;        //键值送入distab最低位保存
  72   2                 if(ledcursor>0)                //光标移位
  73   2                 ledcursor--;
  74   2             else 
  75   2                 ledcursor=7;
  76   2          display(); //显示键值
  77   2              }
  78   1        
  79   1        else 
  80   1         {
  81   2          switch(key)
  82   2                 {
  83   3                   case 0x0D:  //加
  84   3                       if(distab[ledcursor]<0x09)
  85   3                            distab[ledcursor]++;
  86   3                else
  87   3                    distab[ledcursor]=0;
  88   3                    display(); //显示键值
  89   3                   break;     
  90   3                       case 0x0E:    //减
  91   3                        if(distab[ledcursor]>0)
  92   3                             distab[ledcursor]--;
  93   3                    
  94   3                       else
  95   3                     distab[ledcursor]=9;
  96   3                                 display(); //显示键值
  97   3                          
  98   3                   break;      
  99   3                       case 0x0A:             //KeyprgF1();
 100   3                       
 101   3               for(i=0;i<8;i++)      //将distab中的数据送如7218
 102   3                  {
 103   4                   distab[i]=0;
 104   4                   }
 105   3                            ledcursor=7;
 106   3                    display(); //显示键值
 107   3                   break;      
 108   3                       case 0x0B:            //功能键F2
 109   3                              KeyprgF2();
 110   3                   break;      
 111   3                       case 0x0C:           //KeyprgBack();
 112   3                       if(ledcursor<7)                //光标移位
 113   3                 ledcursor++;
 114   3             else 
 115   3                 ledcursor=0;
 116   3               display(); //显示键值
 117   3                   break;      
C51 COMPILER V7.06   DDFSTEST1                                                             08/24/2005 18:34:01 PAGE 3   

 118   3                       case 0x0F:       //KeyprgEnter();
 119   3                       enter=!enter;
 120   3                       display(); //显示键值
 121   3                   break;      
 122   3                       default:
 123   3                   break;      
 124   3                      }
 125   2               }
 126   1      
 127   1      }
 128          //**************************************************************************************
 129          void intt0() interrupt 0 
 130          { 
 131   1       char xdata  *cpld;
 132   1       EX0=0;                //关键盘中断,禁止相应其他按键
 133   1       keynum=P1;           //从p1口读入键盘值
 134   1       keynum=keynum&0x0f;  //取低四位;
 135   1       // keyprg(keynum);
 136   1       if(keynum==0x0f)
 137   1          {
 138   2                enter=!enter;
 139   2                if(enter)
 140   2                  {
 141   3                        distab[7]=0x13;
 142   3                        distab[6]=0x11;
 143   3                        distab[5]=0x0a;
 144   3                        distab[4]=0x05;
 145   3                        distab[3]=0x0e;
 146   3                        distab[2]=0x10;
 147   3                        distab[1]=0x10;
 148   3                      }
 149   2            else
 150   2                  {
 151   3                        distab[7]=0x0f;
 152   3                        distab[6]=0x15;
 153   3                        distab[5]=0x0e;
 154   3                        distab[4]=0x16;
 155   3                        distab[3]=0x10;
 156   3                        distab[2]=0x10;
 157   3                        distab[1]=0x10;
 158   3                      }
 159   2             
 160   2          }
 161   1       if(keynum==0x0d)
 162   1       {
 163   2        if(enter)
 164   2          {
 165   3           phase++;
 166   3           cpld=0xA0ff;
 167   3           *cpld=phase;
 168   3           distab[0]=phase;
 169   3         }
 170   2         else
 171   2            {
 172   3                fre++;
 173   3            cpld=0xA0fe;
 174   3            *cpld=fre;
 175   3            distab[0]=fre;
 176   3                }
 177   2       }
 178   1        if(keynum==0x0e)
 179   1        {
C51 COMPILER V7.06   DDFSTEST1                                                             08/24/2005 18:34:01 PAGE 4   

 180   2           if(enter)
 181   2               {
 182   3             phase--;
 183   3             cpld=0xA0ff;
 184   3             *cpld=phase;
 185   3             distab[0]=phase;
 186   3           }
 187   2               else
 188   2           {
 189   3                 fre--;
 190   3                 cpld=0xA0fe;
 191   3                 *cpld=fre;
 192   3                 distab[0]=fre;
 193   3           }
 194   2         }
 195   1        display();
 196   1        EX0=1;
 197   1      }
 198          
 199          void main()
 200          { 
 201   1         EX0=1;
 202   1         EA=1;
 203   1         display();
 204   1        while(1);
 205   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    503    ----
   CONSTANT SIZE    =     23    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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