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

📄 main.lst

📁 使用ADC0809对输入电压值采样
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  08/03/2007 04:23:00 PAGE 1   


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

stmt level    source

   1          
   2          #include "reg52.h"
   3          
   4          typedef unsigned char BYTE;
   5          typedef unsigned int  WORD;
   6          
   7          
   8          sbit ADC0809_CS=P3^5;
   9          sbit ADC0809_EOC=P3^3;
  10          
  11          sbit SMG_EN1=P1^3;
  12          sbit SMG_EN2=P1^2;
  13          sbit SMG_EN3=P1^1;
  14          sbit SMG_EN4=P1^0;
  15          #define SMG_DATA        P0
  16          // 字形表, 为0亮
  17          //       a_
  18          //      f|_|b
  19          //      e|_|c .p
  20          //    d         
  21          //                                                                                         00001101
  22          //                                                                  0    1        2        3    4       5         6        7    8        9        A        B    C        D        E        F
  23          unsigned char code SMG_TABLE[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x
             -86,0x8e};
  24          
  25          /*              Function        */
  26          void Delay_10us(WORD n);
  27          void SMG_Display(BYTE SMGNum, BYTE tdata);
  28          
  29          /**********************************************************************
  30          *       main()
  31          /*********************************************************************/
  32          void main(void)
  33          {
  34   1              BYTE rdata=0,i=0;
  35   1              BYTE BCD_H=0,BCD_M=0,BCD_L=0;
  36   1              BYTE xdata * ptr;
  37   1              
  38   1              float result=0;
  39   1              int temp;
  40   1      
  41   1              while(1)
  42   1              {               
  43   2                      ADC0809_CS=0;
  44   2              *ptr=0xff;
  45   2              i=200;
  46   2                  while(ADC0809_EOC && (i>0))i--;
  47   2              rdata=*ptr;
  48   2              ADC0809_CS=1;           
  49   2      
  50   2      /*              BCD_H=(rdata>>4)&0x0f;  //get the high half BYTE
  51   2                      BCD_L=rdata&0x0f;               //get the low half BYTE
  52   2      
  53   2                      SMG_Display(1,BCD_H);   
  54   2                      SMG_Display(2,BCD_L);
C51 COMPILER V7.06   MAIN                                                                  08/03/2007 04:23:00 PAGE 2   

  55   2      */
  56   2                      // 显示十进制数据
  57   2                      result=5*rdata/256.0;
  58   2                      temp=(int)(100*result+0.5);
  59   2                      BCD_H=temp/100;
  60   2                      BCD_M=(temp/10)%10;             
  61   2                      BCD_L=temp%10;  
  62   2                      SMG_Display(2,BCD_H);   
  63   2                      SMG_Display(3,BCD_M);
  64   2                      SMG_Display(4,BCD_L);
  65   2      
  66   2      
  67   2              }
  68   1      }
  69          
  70          
  71          
  72          // write the tdata to the SMGNum
  73          void SMG_Display(BYTE SMGNum, BYTE tdata)
  74          {
  75   1              switch(SMGNum)
  76   1              {
  77   2                      case 1:SMG_EN1=0;break;
  78   2                      case 2:SMG_EN2=0;break;
  79   2                      case 3:SMG_EN3=0;break;
  80   2                      case 4:SMG_EN4=0;break;
  81   2                      default:break;
  82   2              }       
  83   1              if(SMGNum==2)
  84   1                      SMG_DATA=SMG_TABLE[tdata]&0x7f;
  85   1              else
  86   1                      SMG_DATA=SMG_TABLE[tdata];
  87   1      
  88   1              Delay_10us(100);
  89   1              SMG_EN1=1;SMG_EN2=1;SMG_EN3=1;SMG_EN4=1;
  90   1      }
  91          
  92          // delay_ms(WORD n), default use 12M XTAL,others should be modifed.
  93          void Delay_10us(WORD n)
  94          {
  95   1              BYTE i=0;
  96   1              for(;n>0;n--)
  97   1                      for(i=0;i<10;i++);      
  98   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    278    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   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 + -