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

📄 main.lst

📁 F020单片机各模块代码实例
💻 LST
字号:
C51 COMPILER V6.22f  MAIN                                                                  02/14/2002 12:21:24 PAGE 1   


C51 COMPILER V6.22f, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C OPTIMIZE(6,SPEED) BROWSE DEFINE(XTAL=12000000) DEBUG OBJECTEXTEND CO
                    -DE SYMBOLS

stmt level    source

   1          /*------------------------------------------------------------------------------
   2          MAIN.C:  Interrupt Driver SIO Using printf.
   3          
   4          Copyright 1995-2002 KEIL Software, Inc.
   5          ------------------------------------------------------------------------------*/
   6          
   7          #include <stdio.h>
   8          #include "sio.h"
   9          
  10          /*------------------------------------------------------------------------------
  11          _getkey waits until a character is received from the serial port.  This may not
  12          be the exact desired operation (for example if the buffer is empty, this
  13          function hangs waiting for a character to be received).
  14          ------------------------------------------------------------------------------*/
  15          char _getkey (void)
  16          {
  17   1      int k;
  18   1      
  19   1      do
  20   1        {
  21   2        k = com_getchar ();
  22   2        }
  23   1      while (k == -1);
  24   1      
  25   1      return ((unsigned char) k);
  26   1      }
  27          
  28          /*------------------------------------------------------------------------------
  29          ------------------------------------------------------------------------------*/
  30          char putchar (char c)
  31          {
  32   1      volatile unsigned int i;
  33   1      
  34   1      while (com_putchar (c) != 0)
  35   1        {
  36   2        for (i=0; i<1000; i++)
  37   2          {
  38   3          /*** DO NOTHING ***/
  39   3          }
  40   2        }
  41   1      
  42   1      return (c);
  43   1      }
  44          
  45          /*------------------------------------------------------------------------------
  46          Note that the two function above, _getkey and putchar, replace the library
  47          functions of the same name.  These functions use the interrupt-driven serial
  48          I/O routines in SIO.C.
  49          ------------------------------------------------------------------------------*/
  50          code char message [] =
  51            "This is a test to see if the interrupt driven serial I/O routines really work.";
  52          
  53          void main (void)
  54          {
C51 COMPILER V6.22f  MAIN                                                                  02/14/2002 12:21:24 PAGE 2   

  55   1      com_initialize ();              /* initialize interrupt driven serial I/O */
  56   1      com_baudrate (38400);           /* setup for 38400 baud */
  57   1      
  58   1      printf ("Interrupt-driver Serial I/O Example\r\n\r\n");
  59   1      
  60   1      while (1)
  61   1        {
  62   2        unsigned char c;
  63   2      
  64   2        printf ("Press a key.\r\n");
  65   2        c = getchar ();
  66   2        printf ("\r\n");
  67   2        printf ("You pressed '%c'.\r\n\r\n", c);
  68   2        }
  69   1      }
  70          
  71          /*------------------------------------------------------------------------------
  72          ------------------------------------------------------------------------------*/
  73          
C51 COMPILER V6.22f  MAIN                                                                  02/14/2002 12:21:24 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _getkey (BEGIN)
                                           ; SOURCE LINE # 15
                                           ; SOURCE LINE # 16
0000         ?C0003:
                                           ; SOURCE LINE # 20
                                           ; SOURCE LINE # 21
0000 120000      E     LCALL   com_getchar
;---- Variable 'k' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 23
0003 EF                MOV     A,R7
0004 F4                CPL     A
0005 7002              JNZ     ?C0014
0007 EE                MOV     A,R6
0008 F4                CPL     A
0009         ?C0014:
0009 60F5              JZ      ?C0003
                                           ; SOURCE LINE # 25
                                           ; SOURCE LINE # 26
000B         ?C0004:
000B 22                RET     
             ; FUNCTION _getkey (END)

             ; FUNCTION _putchar (BEGIN)
                                           ; SOURCE LINE # 30
0000 8F00        R     MOV     c,R7
                                           ; SOURCE LINE # 31
0002         ?C0005:
                                           ; SOURCE LINE # 34
0002 AF00        R     MOV     R7,c
0004 120000      E     LCALL   _com_putchar
0007 EF                MOV     A,R7
0008 601A              JZ      ?C0006
                                           ; SOURCE LINE # 35
                                           ; SOURCE LINE # 36
000A E4                CLR     A
000B F500        R     MOV     i,A
000D F500        R     MOV     i+01H,A
000F         ?C0007:
000F C3                CLR     C
0010 E500        R     MOV     A,i+01H
0012 94E8              SUBB    A,#0E8H
0014 E500        R     MOV     A,i
0016 9403              SUBB    A,#03H
0018 50E8              JNC     ?C0005
                                           ; SOURCE LINE # 37
                                           ; SOURCE LINE # 39
001A 0500        R     INC     i+01H
001C E500        R     MOV     A,i+01H
001E 7002              JNZ     ?C0015
0020 0500        R     INC     i
0022         ?C0015:
0022 80EB              SJMP    ?C0007
                                           ; SOURCE LINE # 40
0024         ?C0006:
                                           ; SOURCE LINE # 42
0024 AF00        R     MOV     R7,c
                                           ; SOURCE LINE # 43
0026         ?C0010:
C51 COMPILER V6.22f  MAIN                                                                  02/14/2002 12:21:24 PAGE 4   

0026 22                RET     
             ; FUNCTION _putchar (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 53
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
0000 120000      E     LCALL   com_initialize
                                           ; SOURCE LINE # 56
0003 7F00              MOV     R7,#00H
0005 7E96              MOV     R6,#096H
0007 120000      E     LCALL   _com_baudrate
                                           ; SOURCE LINE # 58
000A 7BFF              MOV     R3,#0FFH
000C 7A00        R     MOV     R2,#HIGH ?SC_0
000E 7900        R     MOV     R1,#LOW ?SC_0
0010 120000      E     LCALL   _printf
0013         ?C0011:
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 64
0013 7BFF              MOV     R3,#0FFH
0015 7A00        R     MOV     R2,#HIGH ?SC_40
0017 7900        R     MOV     R1,#LOW ?SC_40
0019 120000      E     LCALL   _printf
                                           ; SOURCE LINE # 65
001C 120000      E     LCALL   getchar
001F 8F00        R     MOV     c,R7
                                           ; SOURCE LINE # 66
0021 7BFF              MOV     R3,#0FFH
0023 7A00        R     MOV     R2,#HIGH ?SC_55
0025 7900        R     MOV     R1,#LOW ?SC_55
0027 120000      E     LCALL   _printf
                                           ; SOURCE LINE # 67
002A 7BFF              MOV     R3,#0FFH
002C 7A00        R     MOV     R2,#HIGH ?SC_58
002E 7900        R     MOV     R1,#LOW ?SC_58
0030 850000      E     MOV     ?_printf?BYTE+03H,c
0033 120000      E     LCALL   _printf
                                           ; SOURCE LINE # 68
0036 80DB              SJMP    ?C0011
0038 22                RET     
             ; FUNCTION main (END)

C51 COMPILER V6.22f  MAIN                                                                  02/14/2002 12:21:24 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


com_getchar. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  c. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
_com_baudrate. . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
com_initialize . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_putchar . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  c. . . . . . . . . . . . . . . . . .  AUTO     DATA   CHAR     0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0001H  2
getchar. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
message. . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0050H  79
_getkey. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  k. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
_printf. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_com_putchar . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----


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