sercom.lst

来自「KEILC51程序实例和配套硬件目标板,很详细,程序有注释」· LST 代码 · 共 84 行

LST
84
字号
C51 COMPILER V7.03   SERCOM                                                                12/28/2006 11:14:52 PAGE 1   


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

stmt level    source

   1              #include <reg51.h>
   2              #include <intrins.h>
   3              sbit P34  = 0xB4;
   4              sbit P35  = 0xB5;
   5          
   6              unsigned char get_char(void);            /* 函数说明 */
   7              void delay(void);
   8          
   9              main() {
  10   1             unsigned char keybuf[16], count;      /* 键盘缓冲区和读键计数变量 */
  11   1             SCON=0;                               /* 将串行口设置成工作方式0 */
  12   1             ES=0;                                 /* 禁止串口中断 */
  13   1             EA=0;
  14   1             count=0;                              
  15   1             while(count<16) keybuf[count++]=get_char(); /* 读入16个按键的键值 */
  16   1           }
  17          
  18              unsigned char get_char(void) {
  19   1          /* 定义表示列号、键序号和待发送数据的变量column、key_code和mask */
  20   1             unsigned char key_code, column=0, mask=0x00;
  21   1          /* 下列语句从串行口向74LS164移位输出8个0 */
  22   1             TI=0;
  23   1             SBUF=mask;
  24   1             while(TI==0);                         /* 等待发送完毕 */
  25   1          /* 下列语句通过检测P3.4和P3.5是否为0来判断是否有键压下, 检测到有键压下时
  26   1             延时10ms以消除桉键抖动, 然后继续检测P3.4和P3.5是否为0, 若不为0则表明
  27   1             检测到干扰信号并继续等待按键, 否则表示有一个键被可靠地按下并退出循环 
  28   1          */
  29   1             while(1) {
  30   2                while((P34&P35)!=0);
  31   2                    delay();
  32   2                    if((P34&P35)!=0) continue;
  33   2                    else break;
  34   2             }
  35   1          /* 下列语句分析被按下的键所在的列号 */
  36   1             mask=0xfe;
  37   1             while(1) {
  38   2                    TI=0;
  39   2                    SBUF=mask;
  40   2                    while(TI==0);
  41   2                    if((P34&P35)!=0) {
  42   3                       mask=_crol_(mask,1);            /* mask的值循环左移一位 */
  43   3                       column++;
  44   3                       if(column>=8) column=0;
  45   3                       continue;
  46   3                    }
  47   2                    else break;
  48   2             }
  49   1          /* 下列语句分析被按下的键所在的行号并计算键序号 */
  50   1             if(P34==0)  key_code=column;
  51   1             else           key_code=8+column;
  52   1             return(key_code);
  53   1           }
  54          
  55               void delay(void) {
C51 COMPILER V7.03   SERCOM                                                                12/28/2006 11:14:52 PAGE 2   

  56   1                  unsigned int i=10;                   /* 延时10ms */
  57   1                  while(i--);
  58   1           }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    136    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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