📄 f34x_msd_uart.lst
字号:
12 =1 #ifndef EOF
13 =1 #define EOF -1
14 =1 #endif
15 =1
16 =1 #ifndef NULL
17 =1 #define NULL ((void *) 0)
18 =1 #endif
19 =1
20 =1 #ifndef _SIZE_T
21 =1 #define _SIZE_T
22 =1 typedef unsigned int size_t;
23 =1 #endif
24 =1
25 =1 #pragma SAVE
26 =1 #pragma REGPARMS
27 =1 extern char _getkey (void);
28 =1 extern char getchar (void);
29 =1 extern char ungetchar (char);
30 =1 extern char putchar (char);
31 =1 extern int printf (const char *, ...);
32 =1 extern int sprintf (char *, const char *, ...);
33 =1 extern int vprintf (const char *, char *);
34 =1 extern int vsprintf (char *, const char *, char *);
35 =1 extern char *gets (char *, int n);
36 =1 extern int scanf (const char *, ...);
37 =1 extern int sscanf (char *, const char *, ...);
38 =1 extern int puts (const char *);
39 =1
40 =1 #pragma RESTORE
41 =1
42 =1 #endif
43 =1
40
41 #ifdef __F340_VER__
42 #ifdef F340_24M
#define START_SYSCLK 24000000
#else
45 #define START_SYSCLK 48000000
46 #endif
47 //#define START_SYSCLK 12000000
48 #else
#ifdef __F326_VER__
#define START_SYSCLK 24000000
#else
#define START_SYSCLK 12000000
#endif
#endif
55 #define SYSCLK START_SYSCLK /** 2*/ // SYSCLK frequency in
-Hz
56
57 #define BAUDRATE 115200 // Baud rate of UART in bps
58
59 #define USBCLK 48000000
60
61
62 //----------------------------------------------------------------
C51 COMPILER V7.50 F34X_MSD_UART 11/28/2006 10:54:31 PAGE 18
-------------
63 // UART0_Init
64 //----------------------------------------------------------------
-------------
65 //
66 // This function initializes UART 0 interface.
67 //
68 // Parameters :
69 // Return Value :
70 //----------------------------------------------------------------
-------------
71
72 void UART0_Init(void) {
73 1 int xdata sbrl ;
74 1 sbrl = (0xFFFF - (SYSCLK/BAUDRATE/2)) + 1;
75 1 SCON0 = 0x10; // SCON0: 8-bit variable bi
-t rate
76 1 // level of STOP bit
- is ignored
77 1 // RX enabled
78 1 // ninth bits are ze
-ros
79 1 // clear RI0 and TI0
- bits
80 1
81 1 #ifdef __F326_VER__
SMOD0 = 0x0c;
SBRLH0 = (sbrl & 0xFF00) >> 8;
SBRLL0 = sbrl & 0x00ff;
SBCON0 = 0x43;
// ES0 = 1;
// PS0 = 1;
TI0 = 1;
#else
93 1 if (SYSCLK/BAUDRATE/2/256 < 1)
94 1 {
95 2 TH1 = -(SYSCLK/BAUDRATE/2);
96 2 CKCON |= 0x08; // T1M = 1; SCA1:0 = xx
97 2 }
98 1 else if (SYSCLK/BAUDRATE/2/256 < 4)
99 1 {
100 2 TH1 = -(SYSCLK/BAUDRATE/2/4);
101 2 CKCON &= ~0x0B;
102 2 CKCON |= 0x01; // T1M = 0; SCA1:0 = 01
103 2 }
104 1 else if (SYSCLK/BAUDRATE/2/256 < 12)
105 1 {
106 2 TH1 = -(SYSCLK/BAUDRATE/2/12);
107 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
108 2 }
109 1 else
110 1 {
111 2 TH1 = -(SYSCLK/BAUDRATE/2/48);
112 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
113 2 CKCON |= 0x02;
114 2 }
115 1
116 1 TL1 = TH1; // init Timer1
117 1 TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit a
C51 COMPILER V7.50 F34X_MSD_UART 11/28/2006 10:54:31 PAGE 19
-utoreload
118 1 TMOD |= 0x20;
119 1 TR1 = 1; // START Timer1
120 1 TI0 = 1; // Indicate TX0 ready
121 1 #endif
122 1 printf("UART INIT"ENDLINE);
123 1 }
124
125 //----------------------------------------------------------------
-------------
126 // key_available
127 //----------------------------------------------------------------
-------------
128 //
129 // Function returns state of UART receive interrupt flag "RI0"
130 //
131 // Parameters :
132 // Return Value : TRUE if RI0 flag is set and FALSE if not.
133 //----------------------------------------------------------------
-------------
134
135 unsigned char key_available() {
136 1 return RI0?1:0;
137 1 }
C51 COMPILER V7.50 F34X_MSD_UART 11/28/2006 10:54:31 PAGE 20
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION UART0_Init (BEGIN)
; SOURCE LINE # 72
; SOURCE LINE # 74
0000 900000 R MOV DPTR,#sbrl
0003 74FF MOV A,#0FFH
0005 F0 MOVX @DPTR,A
0006 A3 INC DPTR
0007 7430 MOV A,#030H
0009 F0 MOVX @DPTR,A
; SOURCE LINE # 75
000A 759810 MOV SCON0,#010H
; SOURCE LINE # 93
; SOURCE LINE # 94
; SOURCE LINE # 95
000D F58D MOV TH1,A
; SOURCE LINE # 96
000F 438E08 ORL CKCON,#08H
; SOURCE LINE # 97
; SOURCE LINE # 98
; SOURCE LINE # 99
; SOURCE LINE # 100
; SOURCE LINE # 101
; SOURCE LINE # 102
; SOURCE LINE # 103
; SOURCE LINE # 104
; SOURCE LINE # 105
; SOURCE LINE # 106
; SOURCE LINE # 107
; SOURCE LINE # 108
; SOURCE LINE # 110
; SOURCE LINE # 111
; SOURCE LINE # 112
; SOURCE LINE # 113
; SOURCE LINE # 114
0012 ?C0002:
; SOURCE LINE # 116
0012 858D8B MOV TL1,TH1
; SOURCE LINE # 117
0015 53890F ANL TMOD,#0FH
; SOURCE LINE # 118
0018 438920 ORL TMOD,#020H
; SOURCE LINE # 119
001B D28E SETB TR1
; SOURCE LINE # 120
001D D299 SETB TI0
; SOURCE LINE # 122
001F 7BFF MOV R3,#0FFH
0021 7A00 R MOV R2,#HIGH ?SC_0
0023 7900 R MOV R1,#LOW ?SC_0
0025 020000 E LJMP _printf
; FUNCTION UART0_Init (END)
; FUNCTION key_available (BEGIN)
; SOURCE LINE # 135
; SOURCE LINE # 136
0000 309804 JNB RI0,?C0008
0003 7F01 MOV R7,#01H
0005 8002 SJMP ?C0009
0007 ?C0008:
C51 COMPILER V7.50 F34X_MSD_UART 11/28/2006 10:54:31 PAGE 21
0007 7F00 MOV R7,#00H
0009 ?C0009:
; SOURCE LINE # 137
0009 ?C0010:
0009 22 RET
; FUNCTION key_available (END)
C51 COMPILER V7.50 F34X_MSD_UART 11/28/2006 10:54:31 PAGE 22
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
RI0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
TI0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1
key_available. . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
UART0_Init . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
sbrl . . . . . . . . . . . . . . . . AUTO XDATA INT 0000H 2
SCON0. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
CKCON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008EH 1
_printf. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 50 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -