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

📄 testp1.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.09   TESTP1                                                                08/04/2005 19:17:10 PAGE 1   


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

line level    source

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

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

 118   3                       default:
 119   3                   break;      
 120   3                      }
 121   2               }
 122   1      
 123   1      }
 124          //**************************************************************************************
 125          void intt0() interrupt 0 
 126          { 
 127   1       char xdata  *cpld;
 128   1       
 129   1       EX0=0;              //关键盘中断,禁止相应其他按键
 130   1       keynum=P1;          //从p1口读入键盘值
 131   1       keynum=keynum&0x0f; //取低四位;
 132   1       // keyprg(keynum);
 133   1       if(keynum<10)
 134   1       { 
 135   2        cpld=0xA0ff;
 136   2        *cpld=keynum;
 137   2        cpld=0xA0fe;
 138   2        *cpld=keynum;
 139   2        }
 140   1        if(keynum==0x0f)
 141   1        {
 142   2         unchar i;
 143   2         i=P1;
 144   2         distab[2]=i/100;
 145   2         i=i%100;
 146   2         distab[1]=i/10;
 147   2         i=i%10;
 148   2         distab[0]=i;
 149   2         display();
 150   2         }
 151   1        EX0=1;
 152   1      }
 153          
 154          void main()
 155          { 
 156   1        unchar i;
 157   1        int j;
 158   1         EX0=1;
 159   1         EA=1;
 160   1         //display();
 161   1        while(1)
 162   1        {
 163   2         i=P1;
 164   2         distab[2]=i/100;
 165   2         i=i%100;
 166   2         distab[1]=i/10;
 167   2         i=i%10;
 168   2         distab[0]=i;
 169   2         display();
 170   2         j=20000;
 171   2         while(--j);
 172   2         }
 173   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    466    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.09   TESTP1                                                                08/04/2005 19:17:10 PAGE 4   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18       1
   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 + -