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

📄 ad114read.lst

📁 单片机与cpld总线方式通信
💻 LST
字号:
C51 COMPILER V7.06   AD114READ                                                             07/22/2005 14:12:58 PAGE 1   


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

stmt level    source

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

  56   2             else 
  57   2                 ledcursor=7;
  58   2              }
  59   1        
  60   1        else 
  61   1         {
  62   2          switch(key)
  63   2                 {
  64   3                   case 0x0D:  //加
  65   3                       if(distab[ledcursor]<0x09)
  66   3                       distab[ledcursor]++;
  67   3                       else
  68   3               distab[ledcursor]=0;
  69   3                   break;     
  70   3                       case 0x0E:    //减
  71   3                        if(distab[ledcursor]>0)
  72   3                       distab[ledcursor]--;
  73   3                       else
  74   3               distab[ledcursor]=9;
  75   3                   break;      
  76   3                       case 0x0A:
  77   3                       //KeyprgF1();
  78   3               for(i=0;i<8;i++)      //将distab中的数据送如7218
  79   3               {
  80   4                distab[i]=0;
  81   4                }
  82   3                        ledcursor=7;
  83   3                   break;      
  84   3                       case 0x0B:            //功能键F2
  85   3                      //KeyprgF2();
  86   3                   break;      
  87   3                       case 0x0C:
  88   3                       //KeyprgClear();
  89   3               if(ledcursor<7)                //光标移位
  90   3                 ledcursor++;
  91   3             else 
  92   3                 ledcursor=0;
  93   3                   break;      
  94   3                       case 0x0F:
  95   3                       enter=!enter;
  96   3                       distab[7]=enter;
  97   3                       //while(enter)
  98   3                      
  99   3                       //KeyprgEnter();
 100   3                   break;      
 101   3                       default:
 102   3                   break;      
 103   3                      }
 104   2               }
 105   1               display(); //显示键值
 106   1      }
 107          //**************************************************************************************
 108          void intt0() interrupt 0 
 109          { 
 110   1       
 111   1       EX0=0;              //关键盘中断,禁止相应其他按键
 112   1       keynum=P1;          //从p1口读入键盘值
 113   1       keynum=keynum&0x0f; //取低四位;
 114   1       //keyprg(keynum);
 115   1       if(keynum==0x00)
 116   1        enter=!enter;
 117   1       //if(keynum==0x01)
C51 COMPILER V7.06   AD114READ                                                             07/22/2005 14:12:58 PAGE 3   

 118   1       // P3_1=0;
 119   1        EX0=1;
 120   1      }
 121          
 122          //**************************************************************************************
 123          void flink()
 124          {
 125   1        unchar  i;
 126   1        while(enter)           //光标位置闪烁
 127   1         {
 128   2          DisCmd=scode;         //采用软件译码
 129   2          for(i=0;i<8;i++)      //将distab中的数据送如7218       
 130   2            {
 131   3              if(i==ledcursor)
 132   3                      DisData=0x80; //查表转化并将字型送入7218 
 133   3                  else
 134   3                  DisData=ledtab[distab[i]]; //查表转化并将字型送入7218
 135   3            }
 136   2               delay200ms();
 137   2               DisCmd=scode;            
 138   2               display();
 139   2           delay200ms();
 140   2         }
 141   1      }
 142          //***************************************************************************************
 143          void cpld()
 144          {
 145   1       
 146   1        unchar  xdata *cpld;
 147   1        
 148   1        long adin;
 149   1        unsigned int  d,voltage;
 150   1        
 151   1        cpld=0xA000;
 152   1        while(enter)
 153   1          {
 154   2            adin=*cpld;
 155   2            //distab[0]=adin&0x0f;
 156   2                //distab[1]=(adin&0xf0)/16;
 157   2                d=(adin*4930)/255;    //实际电压值为4.935v;左边参考电压如为2.375,就换成2375
 158   2            voltage=d;
 159   2            distab[3]=d/1000;
 160   2            d=d%1000;
 161   2            distab[2]=d/100;
 162   2            d=d%100;
 163   2            distab[1]=d/10;
 164   2            d=d%10;
 165   2            distab[0]=d;
 166   2          // distab[7]=0x10;
 167   2            distab[6]=0x10;
 168   2            distab[5]=0x10;
 169   2            distab[4]=0x10;
 170   2            display();
 171   2            delay200ms();
 172   2          }
 173   1      }
 174          void main()
 175          { 
 176   1         EX0=1;
 177   1        EA=1;
 178   1        display();
 179   1      while(1)
C51 COMPILER V7.06   AD114READ                                                             07/22/2005 14:12:58 PAGE 4   

 180   1      {
 181   2         // while(1)
 182   2         //while(enter)
 183   2         cpld();
 184   2         delay200ms();
 185   2       } 
 186   1        
 187   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    539    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       8
   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 + -