📄 uartdriv.lst
字号:
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE UARTDRIV
OBJECT MODULE PLACED IN UARTDriv.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UARTDriv.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 #define __UARTDRIV_H__
2
3 #include "Config.h"
4 /********************************************************************************************************
5 **函数名称:UART0Config
6 **函数功能:UART0配置函数:八位模式
7 **输 入:无
8 **输 出:无
9 ********************************************************************************************************/
10 void UART0Config(void)
11 {
12 1 PERIPHEN1 |= BIT3; //使能外设UATR0
13 1 UART0CFG = BAUDREJUST; //BIT[7:4]波特率调整值
14 1 //BIT3 波特率时钟源
15 1 //Bit2 发送或接收的第九位
16 1 //BIT1 九位模式使能
17 1 //BIT0 使能两个停止位模式
18 1 UART0INT = 0x62;
19 1 UART0EXT = 0x00; //不使用扩展功能
20 1 UART0BRH = UARTBRH; //波特率发生器预置值
21 1 UART0BRL = UARTBRL;
22 1 }
23
24 /********************************************************************************************************
25 **函数名称:UART1Config
26 **函数功能:UART1配置函数:八位模式
27 **输 入:无
28 **输 出:无
29 ********************************************************************************************************/
30 void UART1Config(void)
31 {
32 1 PERIPHEN1 |= BIT4; //使能外设UART1
33 1 UART1CFG = BAUDREJUST; //BIT[7:4]波特率调整值
34 1 //BIT3 波特率时钟源
35 1 //Bit2 发送或接收的第九位
36 1 //BIT1 九位模式使能
37 1 //BIT0 使能两个停止位模式
38 1 UART1INT = 0x62;
39 1 UART1EXT = 0x00; //不使用扩展功能
40 1 UART1BRH = UARTBRH; //波特率发生器预置值
41 1 UART1BRL = UARTBRL;
42 1 }
43 /********************************************************************************************************
44 **函数名称:UART0_SendByte
45 **函数功能:通过UART0发送一位数据
46 **输 入:uchar Charact->待发送的字符
47 **输 出:无
48 ********************************************************************************************************/
49 void UART0_SendByte( uchar Charact)
50 {
51 1 uchar Genvar;
52 1
53 1 Genvar = Genvar;
54 1 UART0BUF = Charact; //Send Character
55 1
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 2
56 1 #ifdef DOWNLOAD
57 1 do
58 1 { //wait for TX Empty Flag to be set
59 2 Genvar = UART0INT;
60 2 Genvar = Genvar & 0x01;
61 2 }
62 1 while (Genvar == 0x00);
63 1 #endif
64 1
65 1 UART0INT &= 0xFE;
66 1 }
67 /********************************************************************************************************
68 **函数名称:UART1_SendByte
69 **函数功能:通过UART1发送一位数据
70 **输 入:uchar Charact->待发送的字符
71 **输 出:无
72 ********************************************************************************************************/
73 void UART1_SendByte(uchar Charact)
74 {
75 1 uchar Genvar;
76 1
77 1 Genvar = Genvar;
78 1 UART1BUF = Charact; //Send Character
79 1
80 1 #ifdef DOWNLOAD
81 1 do
82 1 { //wait for TX Empty Flag to be set
83 2 Genvar = UART1INT;
84 2 Genvar = Genvar & 0x01;
85 2 }
86 1 while (Genvar == 0x00);
87 1 #endif
88 1
89 1 UART1INT &= 0xFE;
90 1 }
91
92 /********************************************************************************************************
93 **函数名称:UART0_Printf
94 **函数功能:通过UART0打印数据
95 **输 入:char *fmt,...->参数表列,同printf
96 **输 出:
97 ********************************************************************************************************/
98 #define MAX_TBUF0 100
99
100 void UART0_Printf(char *fmt,...)
101 {
102 1 char xdata tbuf0[MAX_TBUF0]= {0, };
103 1
104 1 va_list v_list;
105 1 char *ptr;
106 1 int i = 0;
107 1
108 1 va_start(v_list, fmt); // Initialize variable arguments.
109 1 vsprintf(tbuf0, fmt, v_list );
110 1 va_end(v_list);
111 1
112 1 ptr = tbuf0;
113 1 while((*ptr) && i < MAX_TBUF0)
114 1 {
115 2 UART0_SendByte(*ptr); //本工程的发送一字节函数
116 2 ptr++;
117 2 i++;
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 3
118 2 }
119 1 }
120
121 /********************************************************************************************************
122 **函数名称:UART1_Printf
123 **函数功能:通过UART0打印数据
124 **输 入:char *fmt,...->参数表列,同printf
125 **输 出:
126 ********************************************************************************************************/
127 #define MAX_TBUF1 100
128
129 void UART1_Printf(char *fmt,...)
130 {
131 1 char xdata tbuf1[MAX_TBUF1]= {0, };
132 1
133 1 va_list v_list;
134 1 char *ptr;
135 1 int i = 0;
136 1
137 1 va_start(v_list, fmt); // Initialize variable arguments.
138 1 vsprintf(tbuf1, fmt, v_list );
139 1 va_end(v_list);
140 1
141 1 ptr = tbuf1;
142 1 while((*ptr) && i < MAX_TBUF1)
143 1 {
144 2 UART1_SendByte(*ptr); //本工程的发送一字节函数
145 2 ptr++;
146 2 i++;
147 2 }
148 1 }
149 //****************************************************************************************************
150 //从UART1打印几个数据,作为简单的测试
151 //传入参数:无
152 //返 回 值:无
153 //****************************************************************************************************
154 void UART1Test(void)
155 {
156 1 UART1_Printf("\n This is UART1! \n");
157 1 UART1_Printf("\n UART1 Test OK! \n");
158 1 }
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION UART0Config (BEGIN)
; SOURCE LINE # 10
; SOURCE LINE # 11
; SOURCE LINE # 12
0000 43F408 ORL PERIPHEN1,#08H
; SOURCE LINE # 13
0003 75A2B0 MOV UART0CFG,#0B0H
; SOURCE LINE # 18
0006 75A162 MOV UART0INT,#062H
; SOURCE LINE # 19
0009 E4 CLR A
000A F5A6 MOV UART0EXT,A
; SOURCE LINE # 20
000C F5A5 MOV UART0BRH,A
; SOURCE LINE # 21
000E 75A401 MOV UART0BRL,#01H
; SOURCE LINE # 22
0011 22 RET
; FUNCTION UART0Config (END)
; FUNCTION UART1Config (BEGIN)
; SOURCE LINE # 30
; SOURCE LINE # 31
; SOURCE LINE # 32
0000 43F410 ORL PERIPHEN1,#010H
; SOURCE LINE # 33
0003 75B2B0 MOV UART1CFG,#0B0H
; SOURCE LINE # 38
0006 75B162 MOV UART1INT,#062H
; SOURCE LINE # 39
0009 E4 CLR A
000A F5B6 MOV UART1EXT,A
; SOURCE LINE # 40
000C F5B5 MOV UART1BRH,A
; SOURCE LINE # 41
000E 75B401 MOV UART1BRL,#01H
; SOURCE LINE # 42
0011 22 RET
; FUNCTION UART1Config (END)
; FUNCTION _UART0_SendByte (BEGIN)
; SOURCE LINE # 49
;---- Variable 'Genvar' assigned to Register 'R6' ----
;---- Variable 'Charact' assigned to Register 'R7' ----
; SOURCE LINE # 50
; SOURCE LINE # 53
; SOURCE LINE # 54
0000 8FA3 MOV UART0BUF,R7
0002 ?C0005:
; SOURCE LINE # 58
; SOURCE LINE # 59
0002 AEA1 MOV R6,UART0INT
; SOURCE LINE # 60
0004 EE MOV A,R6
0005 5401 ANL A,#01H
0007 FE MOV R6,A
; SOURCE LINE # 61
; SOURCE LINE # 62
0008 60F8 JZ ?C0005
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 5
; SOURCE LINE # 65
000A 53A1FE ANL UART0INT,#0FEH
; SOURCE LINE # 66
000D 22 RET
; FUNCTION _UART0_SendByte (END)
; FUNCTION _UART1_SendByte (BEGIN)
; SOURCE LINE # 73
;---- Variable 'Genvar' assigned to Register 'R6' ----
;---- Variable 'Charact' assigned to Register 'R7' ----
; SOURCE LINE # 74
; SOURCE LINE # 77
; SOURCE LINE # 78
0000 8FB3 MOV UART1BUF,R7
0002 ?C0009:
; SOURCE LINE # 82
; SOURCE LINE # 83
0002 AEB1 MOV R6,UART1INT
; SOURCE LINE # 84
0004 EE MOV A,R6
0005 5401 ANL A,#01H
0007 FE MOV R6,A
; SOURCE LINE # 85
; SOURCE LINE # 86
0008 60F8 JZ ?C0009
; SOURCE LINE # 89
000A 53B1FE ANL UART1INT,#0FEH
; SOURCE LINE # 90
000D 22 RET
; FUNCTION _UART1_SendByte (END)
; FUNCTION _UART0_Printf (BEGIN)
; SOURCE LINE # 100
0000 900000 R MOV DPTR,#fmt
0003 EB MOV A,R3
0004 F0 MOVX @DPTR,A
0005 A3 INC DPTR
0006 EA MOV A,R2
0007 F0 MOVX @DPTR,A
0008 A3 INC DPTR
0009 E9 MOV A,R1
000A F0 MOVX @DPTR,A
; SOURCE LINE # 101
; SOURCE LINE # 102
000B 7800 R MOV R0,#LOW tbuf0
000D 7C00 R MOV R4,#HIGH tbuf0
000F 7D01 MOV R5,#01H
0011 7BFF MOV R3,#0FFH
0013 7A00 R MOV R2,#HIGH _?ix1000
0015 7900 R MOV R1,#LOW _?ix1000
0017 7E00 MOV R6,#00H
0019 7F64 MOV R7,#064H
001B 120000 E LCALL ?C?COPY
; SOURCE LINE # 106
001E E4 CLR A
001F 900000 R MOV DPTR,#i
0022 F0 MOVX @DPTR,A
0023 A3 INC DPTR
0024 F0 MOVX @DPTR,A
; SOURCE LINE # 108
0025 7B01 MOV R3,#01H
0027 900000 R MOV DPTR,#v_list
C51 COMPILER V8.01 UARTDRIV 09/30/2007 11:14:55 PAGE 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -