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

📄 led_keyboard.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
字号:
C51 COMPILER V7.20   LED_KEYBOARD                                                          07/11/2007 17:25:14 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LED_KEYBOARD
OBJECT MODULE PLACED IN .\led_keyboard.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\..\桌面\07experiment\NO6\keil\led_keyboard.c BROWSE DEBUG OBJECTEXTEND P
                    -RINT(.\led_keyboard.lst) OBJECT(.\led_keyboard.obj)

line level    source

   1          #include <reg51.h>
   2          
   3          /******led 接口描述******/
   4          //P0--->(a-g,dot) 显示
   5          //选择使能控制段
   6          //P2^3--->使能左第一个数码管  P2^2--->左第二个数码管  
   7          //P2^1--->左第三个数码管  P2^0--->左第四个数码管
   8          
   9          
  10          /*********显示数据表 对应0-9 ,a-f*************/
  11          unsigned char code table[16]={0x3f,6,0x5b,0x4f,
  12                            0x66,0x6d,0x7d,7,0x7f,0x6f,0x77,
  13                                            0x7c,0x58,0x5e,0x79,0x71};
  14          /**********显示选择表***********************/
  15          unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1};
  16          
  17          /*****定义一个数组变量用于存放将要显示的值*******/
  18          
  19          unsigned char d[4]={1,2,3,4}; //随意放入一些初始值  
  20          
  21          /*****定义一个全局变量 number******/
  22          unsigned char number;   //number 表示第几个显示 0-3 
  23          
  24          /******按键接口描述********/
  25          //左第一 二 三 四 个按键分别对应于 P2.7 P2.6 P2.5 P2.4 
  26          //左第一个按键键值为1 
  27          //左第二个按键键值为2 
  28          //左第三个按键键值为3 
  29          //左第四个按键键值为4
  30           
  31          
  32          /******延时程序********/
  33          void delay (dy)
  34          {
  35   1      while(--dy);
  36   1      }
  37          
  38          /******读取按键子程序 getkey()*************/
  39          unsigned char getkey (void)
  40          {    unsigned char k,tem,keytem;
  41   1           keytem=0;
  42   1           tem=P2 & 0xf0;                      //第一次读取按键值
  43   1           if(tem!=0xf0)                      //判断有无按键按下
  44   1           {   
  45   2               for(k=0;k<40;k++)
  46   2               delay(250);             //延时一段时间
  47   2               tem=P2 & 0xf0;         //再次读取按键值
  48   2               if(tem!=0xf0)
  49   2               {    if(tem==0x70) keytem=1;          //表示左第一个按键按下
  50   3                    else if(tem==0xb0) keytem=2;         //表示左第二个按键按下
  51   3                    else if(tem==0xd0) keytem=3;         //表示左第三个按键按下
  52   3                    else if(tem==0xe0) keytem=4;         //表示左第四个按键按下
  53   3               }
  54   2            }
C51 COMPILER V7.20   LED_KEYBOARD                                                          07/11/2007 17:25:14 PAGE 2   

  55   1            
  56   1            while(tem!=0xf0) tem=P2 & 0xf0;  //等待按键释放 
  57   1            return(keytem);                              //返回按键值
  58   1      }
  59          
  60          
  61          /********定时器0中断服务程序***************/
  62          void timer0(void) interrupt 1 
  63          {
  64   1       TR0=0;                                  //停止定时器0
  65   1       TH0=(65536-1000)/256;   //通过定时器定时延时大约1ms左右
  66   1       TL0=(65536-1000)%256;
  67   1       number=(number+1)%4;
  68   1       P2=digit[number];       //选择第number个数码管显示
  69   1       P0=table[d[number]];    //查表显示要显示的值
  70   1       TR0=1;                              //启动定时器0
  71   1       }
  72          
  73          /******定时器初始化函数**********/
  74          void Init_Timer (void)
  75          {
  76   1      TMOD=0x01;                       //
  77   1      TH0=(65536-1000)/256;    //通过定时器定时延时大约1ms左右
  78   1      TL0=(65536-1000)%256;
  79   1      EA=1;
  80   1      ET0=1;
  81   1      TR0=1;
  82   1      }
  83          
  84          
  85          /********主函数************/
  86          //效果就是用定时器服务程序的实现数码管动态..
  87          //..显示且按键后对应的数码管数据加1
  88          /*************************/
  89          void main (void)
  90          {
  91   1      unsigned char keyboard;  //存放按键值
  92   1      Init_Timer();           //定时器初始化
  93   1      while(1)
  94   1              {
  95   2                      keyboard=getkey();
  96   2                      if (keyboard==1)
  97   2                      {
  98   3                       d[0]=(d[0]+1)%10;
  99   3                      }
 100   2                      else if(keyboard==2)
 101   2                      {
 102   3                       d[1]=(d[1]+1)%10;
 103   3                      }
 104   2                      else if(keyboard==3)
 105   2                      {
 106   3                       d[2]=(d[2]+1)%10;
 107   3                      }
 108   2                      else if(keyboard==4)
 109   2                      {
 110   3                       d[3]=(d[3]+1)%10;
 111   3                      }
 112   2              }
 113   1                        
 114   1      }


C51 COMPILER V7.20   LED_KEYBOARD                                                          07/11/2007 17:25:14 PAGE 3   

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