📄 putchar.ls1
字号:
166 ; /*
167 ; * putchar (mini version): outputs charcter only
168 ; */
169 ; char putchar (char c)
170 ; {
171 ; while (!TI);
172 ; TI = 0;
173 ; return (SBUF = c);
174 ; }
175 ; #endif
176 ;
177 ; #if 1
178 ; /****************************************************************************************
**
179 ; *函数名: putchar
180 ; *参数: c
181 ; *返回值: 无
182 ; *描述: 为配合UART中断接收而修改的函数,主要修改TI和ES
183 ; *编写: 王绍伟
184 ; *版本信息: V1.0 2003年8月15日
185 ; *****************************************************************************************
*/
186 ; char putchar (char c)
187
A51 MACRO ASSEMBLER PUTCHAR 10/31/2003 02:22:25 PAGE 4
---- 188 RSEG ?PR?_putchar?PUTCHAR
0000 189 _putchar:
190 USING 0
191 ; SOURCE LINE # 108
192 ;---- Variable 'c?040' assigned to Register 'R7' ----
193 ; {
194 ; SOURCE LINE # 109
195 ; bit bES;
196 ; bES=ES; /*r暂存ES内容*/
197 ; SOURCE LINE # 111
0000 A2AC 198 MOV C,ES
0002 9200 F 199 MOV bES?041,C
200 ; ES=0; /*r若 想利用TI标志位,就必须先禁止串口中断,否则会冲突*/
201 ; SOURCE LINE # 112
0004 C2AC 202 CLR ES
203 ; if (c == '\n') /*r如果c为换行*/
204 ; SOURCE LINE # 113
0006 EF 205 MOV A,R7
0007 B40A08 206 CJNE A,#0AH,?C0001
207 ; {
208 ; SOURCE LINE # 114
209 ; SBUF = 0x0d;
210 ; SOURCE LINE # 115
000A 75990D 211 MOV SBUF,#0DH
000D 212 ?C0002:
213 ; while(!TI); /*r当TI为0时一直在循环*/
214 ; SOURCE LINE # 116
000D 3099FD 215 JNB TI,?C0002
0010 216 ?C0003:
217 ; TI=0; /*r当TI为1时跳出循环,再将TI置为0*/
218 ; SOURCE LINE # 117
0010 C299 219 CLR TI
220 ; }
221 ; SOURCE LINE # 118
0012 222 ?C0001:
223 ; SBUF = c;
224 ; SOURCE LINE # 119
0012 8F99 225 MOV SBUF,R7
0014 226 ?C0004:
227 ; while(!TI);
228 ; SOURCE LINE # 120
0014 3099FD 229 JNB TI,?C0004
0017 230 ?C0005:
231 ; TI=0;
232 ; SOURCE LINE # 121
0017 C299 233 CLR TI
234 ; ES=bES; /*待字符发送完毕后,再恢复串口中断允许*/
235 ; SOURCE LINE # 122
0019 A200 F 236 MOV C,bES?041
001B 92AC 237 MOV ES,C
238 ; return(1);
239 ; SOURCE LINE # 123
001D 7F01 240 MOV R7,#01H
241 ; }
242 ; SOURCE LINE # 124
001F 243 ?C0006:
001F 22 244 RET
245 ; END OF _putchar
246
247 END
A51 MACRO ASSEMBLER PUTCHAR 10/31/2003 02:22:25 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?BI?_PUTCHAR?PUTCHAR B SEG 0001H REL=UNIT
?C0001 . . . . . . . C ADDR 0012H R SEG=?PR?_PUTCHAR?PUTCHAR
?C0002 . . . . . . . C ADDR 000DH R SEG=?PR?_PUTCHAR?PUTCHAR
?C0003 . . . . . . . C ADDR 0010H R SEG=?PR?_PUTCHAR?PUTCHAR
?C0004 . . . . . . . C ADDR 0014H R SEG=?PR?_PUTCHAR?PUTCHAR
?C0005 . . . . . . . C ADDR 0017H R SEG=?PR?_PUTCHAR?PUTCHAR
?C0006 . . . . . . . C ADDR 001FH R SEG=?PR?_PUTCHAR?PUTCHAR
?PR?_PUTCHAR?PUTCHAR C SEG 0020H REL=UNIT
?_PUTCHAR?BIT. . . . B ADDR 0000H.0 R SEG=?BI?_PUTCHAR?PUTCHAR
AC . . . . . . . . . B ADDR 00D0H.6 A
ACC. . . . . . . . . D ADDR 00E0H A
B. . . . . . . . . . D ADDR 00F0H A
BES?041. . . . . . . B ADDR 0000H.0 R SEG=?BI?_PUTCHAR?PUTCHAR
CY . . . . . . . . . B ADDR 00D0H.7 A
DPH. . . . . . . . . D ADDR 0083H A
DPL. . . . . . . . . D ADDR 0082H A
EA . . . . . . . . . B ADDR 00A8H.7 A
ES . . . . . . . . . B ADDR 00A8H.4 A
ET0. . . . . . . . . B ADDR 00A8H.1 A
ET1. . . . . . . . . B ADDR 00A8H.3 A
EX0. . . . . . . . . B ADDR 00A8H.0 A
EX1. . . . . . . . . B ADDR 00A8H.2 A
F0 . . . . . . . . . B ADDR 00D0H.5 A
IE . . . . . . . . . D ADDR 00A8H A
IE0. . . . . . . . . B ADDR 0088H.1 A
IE1. . . . . . . . . B ADDR 0088H.3 A
INT0 . . . . . . . . B ADDR 00B0H.2 A
INT1 . . . . . . . . B ADDR 00B0H.3 A
IP . . . . . . . . . D ADDR 00B8H A
IT0. . . . . . . . . B ADDR 0088H.0 A
IT1. . . . . . . . . B ADDR 0088H.2 A
OV . . . . . . . . . B ADDR 00D0H.2 A
P. . . . . . . . . . B ADDR 00D0H.0 A
P0 . . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . . D ADDR 00B0H A
PCON . . . . . . . . D ADDR 0087H A
PS . . . . . . . . . B ADDR 00B8H.4 A
PSW. . . . . . . . . D ADDR 00D0H A
PT0. . . . . . . . . B ADDR 00B8H.1 A
PT1. . . . . . . . . B ADDR 00B8H.3 A
PUTCHAR. . . . . . . N NUMB -----
PX0. . . . . . . . . B ADDR 00B8H.0 A
PX1. . . . . . . . . B ADDR 00B8H.2 A
RB8. . . . . . . . . B ADDR 0098H.2 A
RD . . . . . . . . . B ADDR 00B0H.7 A
REN. . . . . . . . . B ADDR 0098H.4 A
RI . . . . . . . . . B ADDR 0098H.0 A
RS0. . . . . . . . . B ADDR 00D0H.3 A
RS1. . . . . . . . . B ADDR 00D0H.4 A
RXD. . . . . . . . . B ADDR 00B0H.0 A
SBUF . . . . . . . . D ADDR 0099H A
SCON . . . . . . . . D ADDR 0098H A
SM0. . . . . . . . . B ADDR 0098H.7 A
SM1. . . . . . . . . B ADDR 0098H.6 A
SM2. . . . . . . . . B ADDR 0098H.5 A
SP . . . . . . . . . D ADDR 0081H A
T0 . . . . . . . . . B ADDR 00B0H.4 A
T1 . . . . . . . . . B ADDR 00B0H.5 A
A51 MACRO ASSEMBLER PUTCHAR 10/31/2003 02:22:25 PAGE 6
TB8. . . . . . . . . B ADDR 0098H.3 A
TCON . . . . . . . . D ADDR 0088H A
TF0. . . . . . . . . B ADDR 0088H.5 A
TF1. . . . . . . . . B ADDR 0088H.7 A
TH0. . . . . . . . . D ADDR 008CH A
TH1. . . . . . . . . D ADDR 008DH A
TI . . . . . . . . . B ADDR 0098H.1 A
TL0. . . . . . . . . D ADDR 008AH A
TL1. . . . . . . . . D ADDR 008BH A
TMOD . . . . . . . . D ADDR 0089H A
TR0. . . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . . B ADDR 0088H.6 A
TXD. . . . . . . . . B ADDR 00B0H.1 A
WR . . . . . . . . . B ADDR 00B0H.6 A
_PUTCHAR . . . . . . C ADDR 0000H R SEG=?PR?_PUTCHAR?PUTCHAR
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -