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

📄 main.lst

📁 ISR-Driven Serial I/O V2
💻 LST
字号:
C51 COMPILER V7.02a   MAIN                                                                 12/09/2002 11:28:22 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C OBJECTADVANCED OPTIMIZE(11,SPEED) REGFILE(.\intsio2.ORC) BROWSE DEFI
                    -NE(XTAL=11059200) DEBUG CODE SYMBOLS PREPRINT

stmt level    source

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

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

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _getkey (BEGIN)
                                           ; SOURCE LINE # 16
                                           ; SOURCE LINE # 17
             ?C0003:
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
                 E     CALL    com_getchar
;---- Variable 'k' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 23
                                           ; SOURCE LINE # 24
                       MOV     A,R7
                       CPL     A
                 R     JNZ     ?C0014
                       MOV     A,R6
                       CPL     A
             ?C0014:
                 R     xJZ     ?C0003
                                           ; SOURCE LINE # 26
                                           ; SOURCE LINE # 27
             ?C0004:
                       RET     
             ; FUNCTION _getkey (END)

             ; FUNCTION _putchar (BEGIN)
                                           ; SOURCE LINE # 31
                 R     MOV     c,R7
                                           ; SOURCE LINE # 32
             ?C0005:
                                           ; SOURCE LINE # 35
                 R     MOV     R7,c
                 E     CALL    _com_putchar
                       MOV     A,R7
                 R     xJZ     ?C0006
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
                       CLR     A
                 R     MOV     i,A
                 R     MOV     i+01H,A
             ?C0007:
                       CLR     C
                 R     MOV     A,i+01H
                       SUBB    A,#0E8H
                 R     MOV     A,i
                       SUBB    A,#03H
                 R     xJGE    ?C0005
                                           ; SOURCE LINE # 38
                                           ; SOURCE LINE # 40
                 R     INC     i+01H
                 R     MOV     A,i+01H
                 R     JNZ     ?C0015
                 R     INC     i
             ?C0015:
                 R     xJMP    ?C0007
                                           ; SOURCE LINE # 41
             ?C0006:
                                           ; SOURCE LINE # 43
                 R     MOV     R7,c
                                           ; SOURCE LINE # 44
             ?C0010:
C51 COMPILER V7.02a   MAIN                                                                 12/09/2002 11:28:22 PAGE 4   

                       RET     
             ; FUNCTION _putchar (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
                                           ; SOURCE LINE # 56
                 E     CALL    com_initialize
                                           ; SOURCE LINE # 57
                       MOV     R7,#0B0H
                       MOV     R6,#04H
                 E     CALL    _com_baudrate
                                           ; SOURCE LINE # 59
                       SETB    EA
                                           ; SOURCE LINE # 61
                       MOV     R3,#0FFH
                 R     MOV     R2,#HIGH ?SC_0
                 R     MOV     R1,#LOW ?SC_0
                 E     CALL    _printf
             ?C0011:
                                           ; SOURCE LINE # 63
                                           ; SOURCE LINE # 64
                                           ; SOURCE LINE # 67
                       MOV     R3,#0FFH
                 R     MOV     R2,#HIGH ?SC_40
                 R     MOV     R1,#LOW ?SC_40
                 E     CALL    _printf
                                           ; SOURCE LINE # 68
                 E     CALL    getchar
                 R     MOV     c,R7
                                           ; SOURCE LINE # 69
                       MOV     R3,#0FFH
                 R     MOV     R2,#HIGH ?SC_55
                 R     MOV     R1,#LOW ?SC_55
                 E     CALL    _printf
                                           ; SOURCE LINE # 70
                       MOV     R3,#0FFH
                 R     MOV     R2,#HIGH ?SC_58
                 R     MOV     R1,#LOW ?SC_58
                 E     MOV     ?_printf?BYTE+03H,c
                 E     CALL    _printf
                                           ; SOURCE LINE # 71
                 R     xJMP    ?C0011
             ; FUNCTION main (END)

C51 COMPILER V7.02a   MAIN                                                                 12/09/2002 11:28:22 PAGE 5   

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


com_getchar. . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
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        =    120    ----
   CONSTANT SIZE    =    159    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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