dled.lst

来自「单片及c语言轻松入门的随书光盘」· LST 代码 · 共 85 行

LST
85
字号
C51 COMPILER V7.06   DLED                                                                  12/02/2005 10:00:12 PAGE 1   


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

stmt level    source

   1          /**************************************************************
   2          定时中断实现显示的程序
   3          前面各位始终显示0,最后一位显示在0-9之间循环
   4          ***************************************************************/
   5          #include "reg51.h"
   6          #define uchar unsigned char
   7          #define uint  unsigned int 
   8          
   9          uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
  10          uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 
  11          0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
  12          uchar DispBuf[6];       //6字节的显示缓冲区
  13          
  14          void Timer0() interrupt 1
  15          {       uchar tmp;
  16   1              static uchar Count;             //计数器,显示程序通过它得知现正显示哪个数码管
  17   1              TH0=(65536-3000)/256;
  18   1              TL0=(65536-3000)%256;//定时时间为3000个周期
  19   1              tmp=BitTab[Count];              //根据当前的计数值取位值
  20   1              P2=P2|0xfc;                             //P2与11111100B相或,将高6位置1
  21   1              P2=P2&tmp;                      //P2与取出的位值相与,将某一位清零
  22   1              tmp=DispBuf[Count];             //根据当前的计数值取显示缓冲待显示值    
  23   1              tmp=DispTab[tmp];               //取字形码
  24   1              P0=tmp;                         //送出字形码
  25   1              Count++;                                //计数值加1
  26   1              if(Count==6)                    //如果计数值等于6,则让其回0
  27   1                      Count=0;        
  28   1      }
  29          /*延时程序*/
  30          void mDelay(unsigned int Delay) 
  31          {       unsigned int i;
  32   1              for(;Delay>0;Delay--)
  33   1              {       for(i=0;i<124;i++)
  34   2                      {;}
  35   2              }
  36   1      }
  37          void main()
  38          {       uchar Counter=0;
  39   1              P1=0xff;
  40   1              P0=0xff;
  41   1              TMOD=0x01;
  42   1              TH0=(65536-3000)/256;
  43   1              TL0=(65536-3000)%256;   //定时时间为3000个周期
  44   1              TR0=1;                                          //T0开始运行
  45   1              EA=1;                                           //总中断允许
  46   1              ET0=1;                                          //T0中断允许
  47   1              DispBuf[0]=0;
  48   1              DispBuf[1]=0;
  49   1              DispBuf[2]=0;
  50   1              DispBuf[3]=0;
  51   1              DispBuf[4]=0;                           //显示器前5位均为0
  52   1              for(;;)
  53   1              {       DispBuf[5]=Counter;
  54   2                      Counter++;                              //计数
  55   2                      if(Counter==10)
C51 COMPILER V7.06   DLED                                                                  12/02/2005 10:00:12 PAGE 2   

  56   2                              Counter=0;
  57   2                      mDelay(1000);
  58   2              }
  59   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    148    ----
   CONSTANT SIZE    =     23    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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