📄 main.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 + -