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

📄 ad转换.lst

📁 MC14433的51单片机程序
💻 LST
字号:
C51 COMPILER V8.02   AD转换                                                                04/01/2006 14:11:18 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE AD转换
OBJECT MODULE PLACED IN ad转换.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad转换.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           
   2           
   3           /*********************************************************
   4             A/D转换应用程序,外部中断0用来开启一次新的转换,
   5             每次中断结束,自动申请中断1,进行数据的采集和显示 
   6           *********************************************************/
   7           #include <reg51.h>
   8           #include <absacc.h>
   9          
  10           #define DIGPOT   XBYTE[0x200]               //定义字位口 
  11           #define WORDPOT  XBYTE[0x100]               // 定义字型口
  12           #define fosc   11.0592                              //晶振频率
  13           #define timer0 2000                                     //延时时间
  14                                                                                                          
  15            unsigned char t;                                           //计算延时临时变量                                                  
  16           sbit P10=P1^0;
  17           sbit P11=P1^1;
  18           sbit P12=P1^2;
  19           sbit P13=P1^3;
  20           sbit P14=P1^4;
  21           sbit P15=P1^5;
  22           sbit P16=P1^6;
  23           sbit P17=P1^7;
  24           
  25           unsigned char wordbuf[4];                 //字型码缓冲区
  26           void rdp1(void);
  27           unsigned int bcd_convt(unsigned char i);
  28           void yanshi(void);    //保留
  29          
  30                                 
  31           void TIMEER_DELAY(void);                  //延时函数
  32           void display(void);  //显示函数
  33           void main(void)
  34           {              
  35   1          
  36   1              IT0=1;          //      中断0下降沿触发  
  37   1              EA=1;
  38   1              EX0=1;          //中断0开中断
  39   1              IT1=1;
  40   1              EX1=1;
  41   1      
  42   1                                                      
  43   1            
  44   1              P1=0xff;
  45   1              
  46   1                wordbuf[0]=0xbf;
  47   1                wordbuf[1]=0x3f;
  48   1                wordbuf[2]=0x3f;
  49   1                wordbuf[3]=0x3f;
  50   1      
  51   1      
  52   1      
  53   1              while(1)
  54   1              {                            
  55   2                  display( ); 
C51 COMPILER V8.02   AD转换                                                                04/01/2006 14:11:18 PAGE 2   

  56   2              
  57   2              }
  58   1      
  59   1        }
  60          
  61            void int0(void) interrupt 0
  62            {             
  63   1              IT1=1;
  64   1                      EX1=1;   //     中断1开中断
  65   1                      
  66   1                      
  67   1                      wordbuf[0]=0xbf;
  68   1                  wordbuf[1]=0x3f;
  69   1                  wordbuf[2]=0x3f;
  70   1                  wordbuf[3]=0x3f;
  71   1      
  72   1      
  73   1        }
  74          
  75          
  76            void int1(void) interrupt 2
  77            {
  78   1                      
  79   1                              
  80   1                              
  81   1                      rdp1();                 // 读取转换结果
  82   1                      
  83   1                   EX1=1;          //中断1关           
  84   1                      
  85   1        }
  86          
  87            
  88            
  89           
  90           
  91            /***************读取转换结果*******************/ 
  92            
  93           void rdp1(void)
  94            {             
  95   1                  unsigned char  i;
  96   1              P1=0xFF;
  97   1                  while(P14==0){};
  98   1                      while(P14==1)   //等待选通信号DS1
  99   1                  {
 100   2                           if ( P10==0 && P13==0  )  wordbuf[0]=0x86;  //读最高位 
 101   2                       if (P10==0 && P13==1 )    wordbuf[0]=0xbf;       
 102   2              }
 103   1                      
 104   1                      
 105   1                      i=0;
 106   1                      
 107   1                      while(P15==0){};                                                  
 108   1                      yanshi();
 109   1                      i=P1;                                                                                              
 110   1                      i=i&0x0f;                       
 111   1                  if (i<0x0a) wordbuf[1]=     bcd_convt(i);
 112   1                      
 113   1                  i=0;        
 114   1                  while(P16==0){};    //等待选通信号DS3
 115   1                      yanshi();
 116   1                      i=P1;
 117   1                      i=i&0x0f;                       
C51 COMPILER V8.02   AD转换                                                                04/01/2006 14:11:18 PAGE 3   

 118   1              if (i<0x0a) wordbuf[2]= bcd_convt(i);
 119   1                      
 120   1                      i=0;
 121   1                      while(P17==0){};                   //等待选通信号DS4
 122   1                      yanshi();
 123   1                  i=P1;
 124   1              i=i&0x0f;                       
 125   1                  if (i<0x0a) wordbuf[3]=bcd_convt(i);
 126   1      
 127   1      
 128   1        }     
 129           
 130           
 131           /******************BCD码和7段码转换**********************/
 132           
 133           unsigned int bcd_convt(unsigned char i)
 134           {
 135   1                 unsigned  char p;
 136   1      
 137   1                 switch (i)
 138   1                 {                
 139   2                         case 0:       p=0x3f;    break;
 140   2                         case 1:   p=0x06;    break; 
 141   2                         case 2:   p=0x5b;    break; 
 142   2                         case 3:   p=0x4f;    break;               
 143   2                         case 4:   p=0x66;    break; 
 144   2                         case 5:   p=0x6d;    break; 
 145   2                     case 6:   p=0x7D;    break; 
 146   2                         case 7:   p=0x07;    break;
 147   2                         case 8:   p=0x7f;    break; 
 148   2                         case 9:   p=0x6f;    break;
 149   2                         default:  p=0x76;    break;   //乱码显示H       
 150   2                           
 151   2                 }  
 152   1                 
 153   1                return(p)   ;
 154   1      }       
 155          
 156          
 157          
 158          
 159          
 160          /***************2毫秒延时函数***************/    
 161          void TIMEER_DELAY(void)
 162          {
 163   1              TMOD=0x01;
 164   1              t=65536-timer0*fosc/12;
 165   1          TH0= (t/256);
 166   1              TL0= (t%256);
 167   1              TR0=1;
 168   1              ET0=0;
 169   1              while(TH0!=0 && TL0!=0){};
 170   1              
 171   1      
 172   1      
 173   1      }
 174          
 175          /*******************结果显示函数***********************/                                                          
 176          void display(void)
 177          {       
 178   1               WORDPOT=wordbuf[0];             
 179   1               DIGPOT=0x01;                    
C51 COMPILER V8.02   AD转换                                                                04/01/2006 14:11:18 PAGE 4   

 180   1               TIMEER_DELAY();
 181   1               DIGPOT=0x00;
 182   1              
 183   1              
 184   1               WORDPOT=wordbuf[1];
 185   1               DIGPOT=0x02;
 186   1               TIMEER_DELAY();
 187   1               DIGPOT=0x00;
 188   1              
 189   1      
 190   1                      
 191   1           WORDPOT=wordbuf[2];
 192   1           DIGPOT=0x04;
 193   1           TIMEER_DELAY();
 194   1           DIGPOT=0x00;       
 195   1        
 196   1                      
 197   1               WORDPOT=wordbuf[3];            
 198   1               DIGPOT=0x08;
 199   1               TIMEER_DELAY();
 200   1           DIGPOT=0x00;       
 201   1              
 202   1      }       
 203          
 204           void yanshi(void)
 205           {
 206   1         int j;
 207   1         for(j=0;j++;j<1000){};
 208   1       
 209   1       }
 210          
 211          
 212          
 213          
 214          
 215          
 216          
 217          
 218          
 219          
 220          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    426    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       1
   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 + -