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

📄 ad0809.lst

📁 用0809 和单片机开发的一个电要表的程序为共阳数码管显示
💻 LST
字号:
C51 COMPILER V7.06   AD0809                                                                01/10/2008 00:32:10 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AD0809
OBJECT MODULE PLACED IN AD0809.OBJ
COMPILER INVOKED BY: D:\Xp\KEIL\C51\BIN\C51.EXE AD0809.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #include"AD0809.h"
   3          
   4          
   5          
   6          uchar WordCode[]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,
   7                                            0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,      //0~F分别是数字0~15
   8                                            0xFF,0xFF,0xFF,0x42,0x41,0x06,0x4E,           //16~18 19~22分别是X X X G.U.E.T.
   9                                            0x7F,0xFF};                                                           //23是小数点//24是全灭
  10          uchar SelectCode[]={0x0E,0x0D,0x0B,0x07,0xFF};
  11          uchar LED[4] = {0};
  12          
  13          void DisplaySingleLED(uchar NO, uchar WORD)
  14          {
  15   1              WORDPORT   =  0xFF;
  16   1              WORDPORT   =  WordCode[WORD];
  17   1              SELECTPORT =  SelectCode[NO];
  18   1              Delay5ms();
  19   1      }
  20          
  21          void Display(void)
  22          {
  23   1              uchar i;
  24   1              bit flag = 0;   //flag为零表示待显示的是数据的第一位
  25   1      
  26   1              uint AMPtemp = 0;
  27   1      //      drop  = 0;
  28   1              AMPtemp = AMPIN0;
  29   1      /*
  30   1              if(!AMPtemp)
  31   1              {
  32   1                      DisplaySingleLED(3,0);
  33   1              }
  34   1      */
  35   1              for(i=4; i>0; i--)
  36   1              {
  37   2                      LED[i-1] = AMPtemp%10;
  38   2                      AMPtemp = AMPtemp/10;
  39   2              }
  40   1      
  41   1              
  42   1      
  43   1              for(i=0; i<4; i++)
  44   1              {       
  45   2      //              if(drop)
  46   2      //              {
  47   2      //                      DisplaySingleLED(0,23);
  48   2      //                      flag = 1;
  49   2      //              }
  50   2      
  51   2      //              if(LED[i] | flag)
  52   2      //              {
  53   2                              DisplaySingleLED(i,LED[i]);
  54   2      //                      flag = 1;
  55   2      //              }
C51 COMPILER V7.06   AD0809                                                                01/10/2008 00:32:10 PAGE 2   

  56   2              }
  57   1      }
  58          
  59          void ReadAD0809(void)
  60          {
  61   1              uchar i;
  62   1              uint  AMP = 0;
  63   1              ST = 0;
  64   1              ST = 0;
  65   1              ST = 1;
  66   1              for(i=200; i>0; i--)
  67   1              {;}
  68   1              ST = 1;
  69   1              ST = 1;
  70   1              ST = 0;
  71   1              EOC = 0;
  72   1              i = 100;
  73   1              while((!EOC) & (i>0))//等待转换完成
  74   1      //      while(!EOC)
  75   1              {
  76   2                      i--;
  77   2              }
  78   1              OE = 1;
  79   1              DATAPORT   =  0xFF;
  80   1              AMP = DATAPORT;
  81   1              OE = 0;
  82   1              EOC = 0;
  83   1              AMPIN0 = AMP;
  84   1      //      AMPIN0 = 0;
  85   1              AMPIN0 = AMP*20;//转换出来的单位为MV,最大值为5000,最小值为20(1/51*1000=19.6
  86   1      }
  87          
  88          void SystemTest(void)
  89          {
  90   1      
  91   1              uchar i,j;
  92   1              j = 0;
  93   1      //      WORDPORT = 0xFF;
  94   1      //      SELECTPORT = 0xFF;
  95   1      
  96   1              while(j<4)
  97   1              {
  98   2                      i = 100;
  99   2                      while(i--)
 100   2                      {
 101   3                              DisplaySingleLED(0,16+j);
 102   3                              DisplaySingleLED(1,17+j);
 103   3                              DisplaySingleLED(2,18+j);
 104   3                              DisplaySingleLED(3,19+j);
 105   3                      }
 106   2                      j++;
 107   2              }
 108   1      
 109   1      }
 110          
 111          
 112          void Delay5ms(void)
 113          {
 114   1              unsigned char i,j,k;
 115   1              for(i=5; i>0; i--)
 116   1              for(j=2;j>0;j--)
 117   1              for(k=124;k>0;k--);
C51 COMPILER V7.06   AD0809                                                                01/10/2008 00:32:10 PAGE 3   

 118   1      } 
 119          
 120          void AD0809Init(void)
 121          {
 122   1              ST = 0;
 123   1              EOC = 0;
 124   1              OE = 0;
 125   1      }
 126          
 127          void keyscan(void)
 128          {
 129   1              KEY1 = 1;
 130   1              KEY2 = 1;
 131   1              if(!KEY1)
 132   1              {
 133   2                      while(!KEY1)
 134   2                              {
 135   3                                      KEY1 = 1;
 136   3                              }
 137   2                      drop = !drop;   
 138   2              }
 139   1      
 140   1              if(!KEY2)
 141   1              {
 142   2                      AMPIN0 = 0;
 143   2              }
 144   1      
 145   1      }
 146          
 147          uchar i;
 148          void main(void)
 149          {
 150   1              SystemTest();
 151   1              AD0809Init();
 152   1              while(1)
 153   1              {
 154   2                      ReadAD0809();
 155   2                      for(i=25;i>0;i--)
 156   2                      {       
 157   3      //                      keyscan();
 158   3                              Display();
 159   3                      }
 160   2      //      DisplaySingleLED(0,13);
 161   2      //      DisplaySingleLED(1,14);
 162   2      //      DisplaySingleLED(2,15);
 163   2      //      DisplaySingleLED(3,12);
 164   2              }
 165   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     37       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -