1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 3.8.0 #10562 (MINGW64) 4 ;-------------------------------------------------------- 5 .module serial 6 .optsdcc -mmcs51 --model-small 7 8 ;-------------------------------------------------------- 9 ; Public variables in this module 10 ;-------------------------------------------------------- 11 .globl _getchar 12 .globl _putchar 13 .globl _initSio 14 .globl _TF2 15 .globl _EXF2 16 .globl _RCLK 17 .globl _TCLK 18 .globl _EXEN2 19 .globl _TR2 20 .globl _C_T2 21 .globl _CP_RL2 22 .globl _T2CON_7 23 .globl _T2CON_6 24 .globl _T2CON_5 25 .globl _T2CON_4 26 .globl _T2CON_3 27 .globl _T2CON_2 28 .globl _T2CON_1 29 .globl _T2CON_0 30 .globl _PT2 31 .globl _ET2 32 .globl _CY 33 .globl _AC 34 .globl _F0 35 .globl _RS1 36 .globl _RS0 37 .globl _OV 38 .globl _F1 39 .globl _P 40 .globl _PS 41 .globl _PT1 42 .globl _PX1 43 .globl _PT0 44 .globl _PX0 45 .globl _RD 46 .globl _WR 47 .globl _T1 48 .globl _T0 49 .globl _INT1 50 .globl _INT0 51 .globl _TXD 52 .globl _RXD 53 .globl _P3_7 54 .globl _P3_6 55 .globl _P3_5 56 .globl _P3_4 57 .globl _P3_3 58 .globl _P3_2 59 .globl _P3_1 60 .globl _P3_0 61 .globl _EA 62 .globl _ES 63 .globl _ET1 64 .globl _EX1 65 .globl _ET0 66 .globl _EX0 67 .globl _P2_7 68 .globl _P2_6 69 .globl _P2_5 70 .globl _P2_4 71 .globl _P2_3 72 .globl _P2_2 73 .globl _P2_1 74 .globl _P2_0 75 .globl _SM0 76 .globl _SM1 77 .globl _SM2 78 .globl _REN 79 .globl _TB8 80 .globl _RB8 81 .globl _TI 82 .globl _RI 83 .globl _P1_7 84 .globl _P1_6 85 .globl _P1_5 86 .globl _P1_4 87 .globl _P1_3 88 .globl _P1_2 89 .globl _P1_1 90 .globl _P1_0 91 .globl _TF1 92 .globl _TR1 93 .globl _TF0 94 .globl _TR0 95 .globl _IE1 96 .globl _IT1 97 .globl _IE0 98 .globl _IT0 99 .globl _P0_7 100 .globl _P0_6 101 .globl _P0_5 102 .globl _P0_4 103 .globl _P0_3 104 .globl _P0_2 105 .globl _P0_1 106 .globl _P0_0 107 .globl _TH2 108 .globl _TL2 109 .globl _RCAP2H 110 .globl _RCAP2L 111 .globl _T2CON 112 .globl _B 113 .globl _ACC 114 .globl _PSW 115 .globl _IP 116 .globl _P3 117 .globl _IE 118 .globl _P2 119 .globl _SBUF 120 .globl _SCON 121 .globl _P1 122 .globl _TH1 123 .globl _TH0 124 .globl _TL1 125 .globl _TL0 126 .globl _TMOD 127 .globl _TCON 128 .globl _PCON 129 .globl _DPH 130 .globl _DPL 131 .globl _SP 132 .globl _P0 133 ;-------------------------------------------------------- 134 ; special function registers 135 ;-------------------------------------------------------- 136 .area RSEG (ABS,DATA) 000000 137 .org 0x0000 000080 138 _P0 = 0x0080 000081 139 _SP = 0x0081 000082 140 _DPL = 0x0082 000083 141 _DPH = 0x0083 000087 142 _PCON = 0x0087 000088 143 _TCON = 0x0088 000089 144 _TMOD = 0x0089 00008A 145 _TL0 = 0x008a 00008B 146 _TL1 = 0x008b 00008C 147 _TH0 = 0x008c 00008D 148 _TH1 = 0x008d 000090 149 _P1 = 0x0090 000098 150 _SCON = 0x0098 000099 151 _SBUF = 0x0099 0000A0 152 _P2 = 0x00a0 0000A8 153 _IE = 0x00a8 0000B0 154 _P3 = 0x00b0 0000B8 155 _IP = 0x00b8 0000D0 156 _PSW = 0x00d0 0000E0 157 _ACC = 0x00e0 0000F0 158 _B = 0x00f0 0000C8 159 _T2CON = 0x00c8 0000CA 160 _RCAP2L = 0x00ca 0000CB 161 _RCAP2H = 0x00cb 0000CC 162 _TL2 = 0x00cc 0000CD 163 _TH2 = 0x00cd 164 ;-------------------------------------------------------- 165 ; special function bits 166 ;-------------------------------------------------------- 167 .area RSEG (ABS,DATA) 000000 168 .org 0x0000 000080 169 _P0_0 = 0x0080 000081 170 _P0_1 = 0x0081 000082 171 _P0_2 = 0x0082 000083 172 _P0_3 = 0x0083 000084 173 _P0_4 = 0x0084 000085 174 _P0_5 = 0x0085 000086 175 _P0_6 = 0x0086 000087 176 _P0_7 = 0x0087 000088 177 _IT0 = 0x0088 000089 178 _IE0 = 0x0089 00008A 179 _IT1 = 0x008a 00008B 180 _IE1 = 0x008b 00008C 181 _TR0 = 0x008c 00008D 182 _TF0 = 0x008d 00008E 183 _TR1 = 0x008e 00008F 184 _TF1 = 0x008f 000090 185 _P1_0 = 0x0090 000091 186 _P1_1 = 0x0091 000092 187 _P1_2 = 0x0092 000093 188 _P1_3 = 0x0093 000094 189 _P1_4 = 0x0094 000095 190 _P1_5 = 0x0095 000096 191 _P1_6 = 0x0096 000097 192 _P1_7 = 0x0097 000098 193 _RI = 0x0098 000099 194 _TI = 0x0099 00009A 195 _RB8 = 0x009a 00009B 196 _TB8 = 0x009b 00009C 197 _REN = 0x009c 00009D 198 _SM2 = 0x009d 00009E 199 _SM1 = 0x009e 00009F 200 _SM0 = 0x009f 0000A0 201 _P2_0 = 0x00a0 0000A1 202 _P2_1 = 0x00a1 0000A2 203 _P2_2 = 0x00a2 0000A3 204 _P2_3 = 0x00a3 0000A4 205 _P2_4 = 0x00a4 0000A5 206 _P2_5 = 0x00a5 0000A6 207 _P2_6 = 0x00a6 0000A7 208 _P2_7 = 0x00a7 0000A8 209 _EX0 = 0x00a8 0000A9 210 _ET0 = 0x00a9 0000AA 211 _EX1 = 0x00aa 0000AB 212 _ET1 = 0x00ab 0000AC 213 _ES = 0x00ac 0000AF 214 _EA = 0x00af 0000B0 215 _P3_0 = 0x00b0 0000B1 216 _P3_1 = 0x00b1 0000B2 217 _P3_2 = 0x00b2 0000B3 218 _P3_3 = 0x00b3 0000B4 219 _P3_4 = 0x00b4 0000B5 220 _P3_5 = 0x00b5 0000B6 221 _P3_6 = 0x00b6 0000B7 222 _P3_7 = 0x00b7 0000B0 223 _RXD = 0x00b0 0000B1 224 _TXD = 0x00b1 0000B2 225 _INT0 = 0x00b2 0000B3 226 _INT1 = 0x00b3 0000B4 227 _T0 = 0x00b4 0000B5 228 _T1 = 0x00b5 0000B6 229 _WR = 0x00b6 0000B7 230 _RD = 0x00b7 0000B8 231 _PX0 = 0x00b8 0000B9 232 _PT0 = 0x00b9 0000BA 233 _PX1 = 0x00ba 0000BB 234 _PT1 = 0x00bb 0000BC 235 _PS = 0x00bc 0000D0 236 _P = 0x00d0 0000D1 237 _F1 = 0x00d1 0000D2 238 _OV = 0x00d2 0000D3 239 _RS0 = 0x00d3 0000D4 240 _RS1 = 0x00d4 0000D5 241 _F0 = 0x00d5 0000D6 242 _AC = 0x00d6 0000D7 243 _CY = 0x00d7 0000AD 244 _ET2 = 0x00ad 0000BD 245 _PT2 = 0x00bd 0000C8 246 _T2CON_0 = 0x00c8 0000C9 247 _T2CON_1 = 0x00c9 0000CA 248 _T2CON_2 = 0x00ca 0000CB 249 _T2CON_3 = 0x00cb 0000CC 250 _T2CON_4 = 0x00cc 0000CD 251 _T2CON_5 = 0x00cd 0000CE 252 _T2CON_6 = 0x00ce 0000CF 253 _T2CON_7 = 0x00cf 0000C8 254 _CP_RL2 = 0x00c8 0000C9 255 _C_T2 = 0x00c9 0000CA 256 _TR2 = 0x00ca 0000CB 257 _EXEN2 = 0x00cb 0000CC 258 _TCLK = 0x00cc 0000CD 259 _RCLK = 0x00cd 0000CE 260 _EXF2 = 0x00ce 0000CF 261 _TF2 = 0x00cf 262 ;-------------------------------------------------------- 263 ; overlayable register banks 264 ;-------------------------------------------------------- 265 .area REG_BANK_0 (REL,OVR,DATA) 000000 266 .ds 8 267 ;-------------------------------------------------------- 268 ; internal ram data 269 ;-------------------------------------------------------- 270 .area DSEG (DATA) 271 ;-------------------------------------------------------- 272 ; overlayable items in internal ram 273 ;-------------------------------------------------------- 274 .area OSEG (OVR,DATA) 275 ;-------------------------------------------------------- 276 ; indirectly addressable internal ram data 277 ;-------------------------------------------------------- 278 .area ISEG (DATA) 279 ;-------------------------------------------------------- 280 ; absolute internal ram data 281 ;-------------------------------------------------------- 282 .area IABS (ABS,DATA) 283 .area IABS (ABS,DATA) 284 ;-------------------------------------------------------- 285 ; bit data 286 ;-------------------------------------------------------- 287 .area BSEG (BIT) 288 ;-------------------------------------------------------- 289 ; paged external ram data 290 ;-------------------------------------------------------- 291 .area PSEG (PAG,XDATA) 292 ;-------------------------------------------------------- 293 ; external ram data 294 ;-------------------------------------------------------- 295 .area XSEG (XDATA) 296 ;-------------------------------------------------------- 297 ; absolute external ram data 298 ;-------------------------------------------------------- 299 .area XABS (ABS,XDATA) 300 ;-------------------------------------------------------- 301 ; external initialized ram data 302 ;-------------------------------------------------------- 303 .area XISEG (XDATA) 304 .area HOME (CODE) 305 .area GSINIT0 (CODE) 306 .area GSINIT1 (CODE) 307 .area GSINIT2 (CODE) 308 .area GSINIT3 (CODE) 309 .area GSINIT4 (CODE) 310 .area GSINIT5 (CODE) 311 .area GSINIT (CODE) 312 .area GSFINAL (CODE) 313 .area CSEG (CODE) 314 ;-------------------------------------------------------- 315 ; global & static initialisations 316 ;-------------------------------------------------------- 317 .area HOME (CODE) 318 .area GSINIT (CODE) 319 .area GSFINAL (CODE) 320 .area GSINIT (CODE) 321 ;-------------------------------------------------------- 322 ; Home 323 ;-------------------------------------------------------- 324 .area HOME (CODE) 325 .area HOME (CODE) 326 ;-------------------------------------------------------- 327 ; code 328 ;-------------------------------------------------------- 329 .area CSEG (CODE) 330 ;------------------------------------------------------------ 331 ;Allocation info for local variables in function 'initSio' 332 ;------------------------------------------------------------ 333 ; serial.c:13: void initSio() 334 ; ----------------------------------------- 335 ; function initSio 336 ; ----------------------------------------- 000000 337 _initSio: 000007 338 ar7 = 0x07 000006 339 ar6 = 0x06 000005 340 ar5 = 0x05 000004 341 ar4 = 0x04 000003 342 ar3 = 0x03 000002 343 ar2 = 0x02 000001 344 ar1 = 0x01 000000 345 ar0 = 0x00 346 ; serial.c:15: PCON |= 80; 000000 AE 87 [24] 347 mov r6,_PCON 000002 43 06 50 [24] 348 orl ar6,#0x50 000005 8E 87 [24] 349 mov _PCON,r6 350 ; serial.c:16: TMOD &= 0x0F; 000007 53 89 0F [24] 351 anl _TMOD,#0x0f 352 ; serial.c:17: TMOD |= 0x20; 00000A AE 89 [24] 353 mov r6,_TMOD 00000C 43 06 20 [24] 354 orl ar6,#0x20 00000F 8E 89 [24] 355 mov _TMOD,r6 356 ; serial.c:18: TCON = 0x41; 000011 75 88 41 [24] 357 mov _TCON,#0x41 358 ; serial.c:19: TH1 = 0xFF;//wasFD 000014 75 8D FF [24] 359 mov _TH1,#0xff 360 ; serial.c:20: SCON = 0x50; 000017 75 98 50 [24] 361 mov _SCON,#0x50 362 ; serial.c:21: } 00001A 22 [24] 363 ret 364 ;------------------------------------------------------------ 365 ;Allocation info for local variables in function 'putchar' 366 ;------------------------------------------------------------ 367 ;c Allocated to registers r6 r7 368 ;------------------------------------------------------------ 369 ; serial.c:24: int putchar(int c) 370 ; ----------------------------------------- 371 ; function putchar 372 ; ----------------------------------------- 00001B 373 _putchar: 00001B AE 82 [24] 374 mov r6,dpl 375 ; serial.c:26: SBUF = c; 00001D 8E 99 [24] 376 mov _SBUF,r6 377 ; serial.c:27: while (!TI); 00001F 378 00101$: 379 ; serial.c:28: TI = 0; 380 ; assignBit 00001F 10 99 02 [24] 381 jbc _TI,00114$ 000022 80 FB [24] 382 sjmp 00101$ 000024 383 00114$: 384 ; serial.c:29: return 0; 000024 90 00 00 [24] 385 mov dptr,#0x0000 386 ; serial.c:30: } 000027 22 [24] 387 ret 388 ;------------------------------------------------------------ 389 ;Allocation info for local variables in function 'getchar' 390 ;------------------------------------------------------------ 391 ; serial.c:33: int getchar() 392 ; ----------------------------------------- 393 ; function getchar 394 ; ----------------------------------------- 000028 395 _getchar: 396 ; serial.c:35: while(!RI); 000028 397 00101$: 398 ; serial.c:36: RI = 0; 399 ; assignBit 000028 10 98 02 [24] 400 jbc _RI,00114$ 00002B 80 FB [24] 401 sjmp 00101$ 00002D 402 00114$: 403 ; serial.c:37: return SBUF; 00002D AE 99 [24] 404 mov r6,_SBUF 00002F 7F 00 [12] 405 mov r7,#0x00 000031 8E 82 [24] 406 mov dpl,r6 000033 8F 83 [24] 407 mov dph,r7 408 ; serial.c:38: } 000035 22 [24] 409 ret 410 .area CSEG (CODE) 411 .area CONST (CODE) 412 .area XINIT (CODE) 413 .area CABS (ABS,CODE)