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

📄 8vod.lst

📁 八路电压表C程序
💻 LST
字号:
C51 COMPILER V7.00  8VOD                                                                   03/25/2005 11:15:52 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE 8VOD
OBJECT MODULE PLACED IN 8vod.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 8vod.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*********************************************************************/
   2          //                    八路电压表C程序
   3          //                    使用keil C51 ver7.09
   4          //                     2004.10.11
   5          /*********************************************************************/
   6          /*使用AT89C52单片机,12MHZ晶振,P0口读入AD值,P2口作AD控制,用共阳LED数码管
   7          P1口输出段码,P3口扫描,最高位指示通道(0-7)。*/
   8          #include "reg52.h"        //52系列单片机定义文件
   9          #include "intrins.h"      //调用_nop_();延时函数用
  10          #define  ad_con   P2      //AD控制口
  11          #define  addata   P0      //AD数据计入读入口
  12          #define  Disdata    P1    //显示数据段码输出口
  13          #define uchar unsigned char//无符号字符(8位)
  14          #define uint unsigned int  //无符号整数(16位)
  15          sbit  ALE=P2^3;           //锁存地址控制位
  16          sbit  START=P2^4;         //启动一次转换位
  17          sbit  OE=P2^5;            //0809输出数据控制位
  18          sbit  EOC=P3^7;           //转换结束标志位
  19          sbit  DISX=Disdata^7;     //LED小数点
  20          //
  21          //
  22          uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  23          /* 共阳七段LED段码表  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮" */                
  24          uchar code  scan_con[4]={0xfe,0xfd,0xfb,0xf7};                      //四位列扫描控制字
  25          uchar data  ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定义8个数据内存单元
  26          uint  data  dis[5]={0x00,0x00,0x00,0x00,0x00};  //定义4个显示数据单元、1个数据暂存单元
  27          //
  28          // 
  29          /********1毫秒延时子函数**********/
  30          delay1ms(uint t)
  31          {
  32   1      uint i,j;
  33   1      for(i=0;i<t;i++)
  34   1         for(j=0;j<120;j++)
  35   1         ;
  36   1      }
  37          //
  38          //
  39          /***********显示扫描子函数**********/
  40          scan()
  41          {
  42   1      uchar k,n;
  43   1      int h;
  44   1      dis[3]=0x00;                 //通道初值为0
  45   1      for(n=0;n<8;n++)             //每次显示8个数据
  46   1       {
  47   2        dis[2]=ad_data[n]/51;      //测得值转换为三位BCD码,最大为5.00V
  48   2        dis[4]=ad_data[n]%51;      // 余数暂存
  49   2        dis[4]=dis[4]*10;          //计算小数第一位
  50   2        dis[1]=dis[4]/51;          //
  51   2        dis[4]=dis[4]%51;          //
  52   2        dis[4]=dis[4]*10;          //计算小数第二位
  53   2        dis[0]=dis[4]/51;          //
  54   2        for(h=0;h<500;h++)         //每个通道值显示时间控制(约1秒)
  55   2        {
C51 COMPILER V7.00  8VOD                                                                   03/25/2005 11:15:52 PAGE 2   

  56   3          for(k=0;k<4;k++)         //四位LED扫描控制
  57   3           {
  58   4            Disdata=dis_7[dis[k]];
  59   4                if(k==2){DISX=0;}
  60   4                P3=scan_con[k];delay1ms(1);P3=0xff;
  61   4           }
  62   3         }
  63   2        dis[3]++;                 //通道值加1
  64   2       }
  65   1      }
  66          //
  67          //
  68          /*******0809AD转换子函数***********/
  69          test()
  70          {
  71   1      uchar m;
  72   1      uchar s=0x00;
  73   1      ad_con=s;
  74   1      for(m=0;m<8;m++)
  75   1       {
  76   2        ALE=1;_nop_();_nop_();ALE=0;     //转换通道地址锁存
  77   2        START=1;_nop_();_nop_();START=0; //开始转换命令
  78   2        _nop_();_nop_();_nop_();_nop_(); //延时4微秒
  79   2        while(EOC==0);                   //等待转换结束
  80   2        OE=1;ad_data[m]=addata;OE=0;s++;ad_con=s;//取AD值,地址加1
  81   2       }
  82   1      ad_con=0x00;                       //控制复位 
  83   1      }
  84          //
  85          //
  86          /**************主函数****************/
  87          main()
  88          {
  89   1      P0=0xff;          //初始化端口 
  90   1      P2=0x00;
  91   1      P1=0xff;
  92   1      P3=0xff;
  93   1      while(1)
  94   1       {
  95   2         scan();       //依次显示8个通道值一次
  96   2         test();       //测量转换一次
  97   2        }
  98   1      }
  99          //
 100          //
 101          //*********************结束**************************//


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    280    ----
   CONSTANT SIZE    =     15    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18       3
   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 + -