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

📄 led.lst

📁 设计一个单片机电路
💻 LST
字号:
C51 COMPILER V7.06   LED                                                                   04/23/2009 18:50:43 PAGE 1   


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

stmt level    source

   1          /*****************************************************************************
   2          程 序 名:实验1-按键,数码管,led综合应用【改进版】
   3          开发环境:Keil
   4          编 写 者:杜镇标
   5          功能简述:设计一个单片机电路,2个按键,1位数码管,4个LED,1个按键按下,
   6                    数码管自增1(up),另一个按键按下,数码管自减1(down),4个LED
   7                    显示数字值。
   8          硬件说明:LS8接在P1.7上,P0.1是8个LED的公共极,本实验要拉低P0.1,
   9           由于按键和数码以及LED显示都公用P1,程序要分时扫描进行,晶体为12MHz
  10          完成日期:2009.4.23
  11          ******************************************************************************/
  12          
  13          #include <reg51.h>
  14          //定义位操作
  15          sbit ls0=P0^1;  //LED公共极
  16          sbit ls1=P0^2;     //个位公共极
  17          sbit key=P0^6;         //键盘公共线,见原理图
  18          char mun; //读取的键值
  19          #define Dat P1         //数据输出端
  20          unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管数字显示表
  21          // 对应显示            0    1    2    3    4    5    6    7    8    9
  22          unsigned char table[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6}; // 四个led二进制显示
  23          // 对应显示             0    1    2    3    4    5    6    7    8    9
  24          
  25          //延时----------------------------
  26          Delay(unsigned int t)
  27          {
  28   1       while(t--);
  29   1      }
  30          //显示----------------------------
  31          void Display(char mun)
  32          {
  33   1       unsigned char k,j; 
  34   1      for(k=0;k<50;k++)
  35   1         {
  36   2           Dat=table[mun];
  37   2               ls0=0;        //拉低公共线
  38   2           Delay(10);
  39   2           ls0=1;     
  40   2           } 
  41   1      for(j=0;j<50;j++)
  42   1         {
  43   2            Dat=tab[mun];
  44   2           ls1=0;
  45   2           Delay(10);
  46   2           ls1=1;     
  47   2        }
  48   1       Dat=0xff;         //!!!!因为公用P1,所以个子程序用完P1后要恢复为0xff
  49   1      }
  50          //--键盘扫描程序--------------------------------------
  51          Scankey()
  52          {
  53   1       unsigned char i;
  54   1       key=0;              //拉低键盘公共线
  55   1       if(Dat!=0xff)       //有按键按下
C51 COMPILER V7.06   LED                                                                   04/23/2009 18:50:43 PAGE 2   

  56   1         {
  57   2          Delay(1000);      //消抖动
  58   2          if(Dat!=0xff)    //的确有键按下
  59   2            {
  60   3             i=~Dat;       //读取键盘状态,因为键盘按下位=0,抬起=1,所以这里取反便于下面分析
  61   3             switch(i)
  62   3               {
  63   4                case 0x01:mun=mun++;break;   //K1
  64   4                case 0x02:mun=mun--;break;   //K2
  65   4                default: mun=mun;break;     //其它双键按下不处理,均=0
  66   4               }
  67   3             switch(mun)
  68   3               {
  69   4                case -1:mun=9;break;   //过小时
  70   4                case 10:mun=0;break;   //过大时
  71   4                default: mun=mun;break;     //其它双键按下不处理,均=0
  72   4               }
  73   3             while(Dat!=0xff) 
  74   3               {key=1;            //暂时关闭键盘,不干扰显示
  75   4                Display(mun);  //等待按键抬起
  76   4                key=0;            //开启键盘检测
  77   4               }
  78   3            }
  79   2         }
  80   1       key=1;             //释放键盘公共线
  81   1      }
  82          
  83          //--主程序---------------------------------------------------------
  84          main()
  85          {
  86   1        mun=0;             //开机显示"0"
  87   1       while(1)
  88   1       {
  89   2        Display(mun);     //显示
  90   2        Scankey();           //键盘扫描
  91   2       }
  92   1      }


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