1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 2.9.0 #5416 (Mar 22 2009) (MINGW32) 4 ; This file was generated Tue Nov 24 12:13:59 2015 5 ;-------------------------------------------------------- 6 .module driver_io 7 .optsdcc -mmcs51 --model-small 8 9 ;-------------------------------------------------------- 10 ; Public variables in this module 11 ;-------------------------------------------------------- 12 .globl _SPR0 13 .globl _SPR1 14 .globl _CPHA 15 .globl _CPOL 16 .globl _SPIM 17 .globl _SPE 18 .globl _WCOL 19 .globl _ISPI 20 .globl _I2CI 21 .globl _I2CTX 22 .globl _I2CRS 23 .globl _I2CM 24 .globl _MDI 25 .globl _MCO 26 .globl _MDE 27 .globl _MDO 28 .globl _CS0 29 .globl _CS1 30 .globl _CS2 31 .globl _CS3 32 .globl _SCONV 33 .globl _CCONV 34 .globl _DMA 35 .globl _ADCI 36 .globl _P 37 .globl _F1 38 .globl _OV 39 .globl _RS0 40 .globl _RS1 41 .globl _F0 42 .globl _AC 43 .globl _CY 44 .globl _CAP2 45 .globl _CNT2 46 .globl _TR2 47 .globl _XEN 48 .globl _TCLK 49 .globl _RCLK 50 .globl _EXF2 51 .globl _TF2 52 .globl _WDE 53 .globl _WDS 54 .globl _WDR2 55 .globl _WDR1 56 .globl _PRE0 57 .globl _PRE1 58 .globl _PRE2 59 .globl _PX0 60 .globl _PT0 61 .globl _PX1 62 .globl _PT1 63 .globl _PS 64 .globl _PT2 65 .globl _PADC 66 .globl _PSI 67 .globl _RXD 68 .globl _TXD 69 .globl _INT0 70 .globl _INT1 71 .globl _T0 72 .globl _T1 73 .globl _WR 74 .globl _RD 75 .globl _EX0 76 .globl _ET0 77 .globl _EX1 78 .globl _ET1 79 .globl _ES 80 .globl _ET2 81 .globl _EADC 82 .globl _EA 83 .globl _RI 84 .globl _TI 85 .globl _RB8 86 .globl _TB8 87 .globl _REN 88 .globl _SM2 89 .globl _SM1 90 .globl _SM0 91 .globl _T2 92 .globl _T2EX 93 .globl _IT0 94 .globl _IE0 95 .globl _IT1 96 .globl _IE1 97 .globl _TR0 98 .globl _TF0 99 .globl _TR1 100 .globl _TF1 101 .globl _DACCON 102 .globl _DAC1H 103 .globl _DAC1L 104 .globl _DAC0H 105 .globl _DAC0L 106 .globl _SPICON 107 .globl _SPIDAT 108 .globl _ADCCON3 109 .globl _ADCGAINH 110 .globl _ADCGAINL 111 .globl _ADCOFSH 112 .globl _ADCOFSL 113 .globl _B 114 .globl _ADCCON1 115 .globl _I2CCON 116 .globl _ACC 117 .globl _PSMCON 118 .globl _ADCDATAH 119 .globl _ADCDATAL 120 .globl _ADCCON2 121 .globl _DMAP 122 .globl _DMAH 123 .globl _DMAL 124 .globl _PSW 125 .globl _TH2 126 .globl _TL2 127 .globl _RCAP2H 128 .globl _RCAP2L 129 .globl _T2CON 130 .globl _EADRL 131 .globl _WDCON 132 .globl _EDATA4 133 .globl _EDATA3 134 .globl _EDATA2 135 .globl _EDATA1 136 .globl _ETIM3 137 .globl _ETIM2 138 .globl _ETIM1 139 .globl _ECON 140 .globl _IP 141 .globl _P3 142 .globl _IE2 143 .globl _IE 144 .globl _P2 145 .globl _I2CADD 146 .globl _I2CDAT 147 .globl _SBUF 148 .globl _SCON 149 .globl _P1 150 .globl _TH1 151 .globl _TH0 152 .globl _TL1 153 .globl _TL0 154 .globl _TMOD 155 .globl _TCON 156 .globl _PCON 157 .globl _DPP 158 .globl _DPH 159 .globl _DPL 160 .globl _SP 161 .globl _P0 162 .globl _ready 163 .globl _write_char 164 .globl _read_char 165 .globl _write_string 166 ;-------------------------------------------------------- 167 ; special function registers 168 ;-------------------------------------------------------- 169 .area RSEG (DATA) 0080 170 _P0 = 0x0080 0081 171 _SP = 0x0081 0082 172 _DPL = 0x0082 0083 173 _DPH = 0x0083 0084 174 _DPP = 0x0084 0087 175 _PCON = 0x0087 0088 176 _TCON = 0x0088 0089 177 _TMOD = 0x0089 008A 178 _TL0 = 0x008a 008B 179 _TL1 = 0x008b 008C 180 _TH0 = 0x008c 008D 181 _TH1 = 0x008d 0090 182 _P1 = 0x0090 0098 183 _SCON = 0x0098 0099 184 _SBUF = 0x0099 009A 185 _I2CDAT = 0x009a 009B 186 _I2CADD = 0x009b 00A0 187 _P2 = 0x00a0 00A8 188 _IE = 0x00a8 00A9 189 _IE2 = 0x00a9 00B0 190 _P3 = 0x00b0 00B8 191 _IP = 0x00b8 00B9 192 _ECON = 0x00b9 00BA 193 _ETIM1 = 0x00ba 00BB 194 _ETIM2 = 0x00bb 00C4 195 _ETIM3 = 0x00c4 00BC 196 _EDATA1 = 0x00bc 00BD 197 _EDATA2 = 0x00bd 00BE 198 _EDATA3 = 0x00be 00BF 199 _EDATA4 = 0x00bf 00C0 200 _WDCON = 0x00c0 00C6 201 _EADRL = 0x00c6 00C8 202 _T2CON = 0x00c8 00CA 203 _RCAP2L = 0x00ca 00CB 204 _RCAP2H = 0x00cb 00CC 205 _TL2 = 0x00cc 00CD 206 _TH2 = 0x00cd 00D0 207 _PSW = 0x00d0 00D2 208 _DMAL = 0x00d2 00D3 209 _DMAH = 0x00d3 00D4 210 _DMAP = 0x00d4 00D8 211 _ADCCON2 = 0x00d8 00D9 212 _ADCDATAL = 0x00d9 00DA 213 _ADCDATAH = 0x00da 00DF 214 _PSMCON = 0x00df 00E0 215 _ACC = 0x00e0 00E8 216 _I2CCON = 0x00e8 00EF 217 _ADCCON1 = 0x00ef 00F0 218 _B = 0x00f0 00F1 219 _ADCOFSL = 0x00f1 00F2 220 _ADCOFSH = 0x00f2 00F3 221 _ADCGAINL = 0x00f3 00F4 222 _ADCGAINH = 0x00f4 00F5 223 _ADCCON3 = 0x00f5 00F7 224 _SPIDAT = 0x00f7 00F8 225 _SPICON = 0x00f8 00F9 226 _DAC0L = 0x00f9 00FA 227 _DAC0H = 0x00fa 00FB 228 _DAC1L = 0x00fb 00FC 229 _DAC1H = 0x00fc 00FD 230 _DACCON = 0x00fd 231 ;-------------------------------------------------------- 232 ; special function bits 233 ;-------------------------------------------------------- 234 .area RSEG (DATA) 008F 235 _TF1 = 0x008f 008E 236 _TR1 = 0x008e 008D 237 _TF0 = 0x008d 008C 238 _TR0 = 0x008c 008B 239 _IE1 = 0x008b 008A 240 _IT1 = 0x008a 0089 241 _IE0 = 0x0089 0088 242 _IT0 = 0x0088 0091 243 _T2EX = 0x0091 0090 244 _T2 = 0x0090 009F 245 _SM0 = 0x009f 009E 246 _SM1 = 0x009e 009D 247 _SM2 = 0x009d 009C 248 _REN = 0x009c 009B 249 _TB8 = 0x009b 009A 250 _RB8 = 0x009a 0099 251 _TI = 0x0099 0098 252 _RI = 0x0098 00AF 253 _EA = 0x00af 00AE 254 _EADC = 0x00ae 00AD 255 _ET2 = 0x00ad 00AC 256 _ES = 0x00ac 00AB 257 _ET1 = 0x00ab 00AA 258 _EX1 = 0x00aa 00A9 259 _ET0 = 0x00a9 00A8 260 _EX0 = 0x00a8 00B7 261 _RD = 0x00b7 00B6 262 _WR = 0x00b6 00B5 263 _T1 = 0x00b5 00B4 264 _T0 = 0x00b4 00B3 265 _INT1 = 0x00b3 00B2 266 _INT0 = 0x00b2 00B1 267 _TXD = 0x00b1 00B0 268 _RXD = 0x00b0 00BF 269 _PSI = 0x00bf 00BE 270 _PADC = 0x00be 00BD 271 _PT2 = 0x00bd 00BC 272 _PS = 0x00bc 00BB 273 _PT1 = 0x00bb 00BA 274 _PX1 = 0x00ba 00B9 275 _PT0 = 0x00b9 00B8 276 _PX0 = 0x00b8 00C7 277 _PRE2 = 0x00c7 00C6 278 _PRE1 = 0x00c6 00C5 279 _PRE0 = 0x00c5 00C3 280 _WDR1 = 0x00c3 00C2 281 _WDR2 = 0x00c2 00C1 282 _WDS = 0x00c1 00C0 283 _WDE = 0x00c0 00CF 284 _TF2 = 0x00cf 00CE 285 _EXF2 = 0x00ce 00CD 286 _RCLK = 0x00cd 00CC 287 _TCLK = 0x00cc 00CB 288 _XEN = 0x00cb 00CA 289 _TR2 = 0x00ca 00C9 290 _CNT2 = 0x00c9 00C8 291 _CAP2 = 0x00c8 00D7 292 _CY = 0x00d7 00D6 293 _AC = 0x00d6 00D5 294 _F0 = 0x00d5 00D4 295 _RS1 = 0x00d4 00D3 296 _RS0 = 0x00d3 00D2 297 _OV = 0x00d2 00D1 298 _F1 = 0x00d1 00D0 299 _P = 0x00d0 00DF 300 _ADCI = 0x00df 00DE 301 _DMA = 0x00de 00DD 302 _CCONV = 0x00dd 00DC 303 _SCONV = 0x00dc 00DB 304 _CS3 = 0x00db 00DA 305 _CS2 = 0x00da 00D9 306 _CS1 = 0x00d9 00D8 307 _CS0 = 0x00d8 00EF 308 _MDO = 0x00ef 00EE 309 _MDE = 0x00ee 00ED 310 _MCO = 0x00ed 00EC 311 _MDI = 0x00ec 00EB 312 _I2CM = 0x00eb 00EA 313 _I2CRS = 0x00ea 00E9 314 _I2CTX = 0x00e9 00E8 315 _I2CI = 0x00e8 00FF 316 _ISPI = 0x00ff 00FE 317 _WCOL = 0x00fe 00FD 318 _SPE = 0x00fd 00FC 319 _SPIM = 0x00fc 00FB 320 _CPOL = 0x00fb 00FA 321 _CPHA = 0x00fa 00F9 322 _SPR1 = 0x00f9 00F8 323 _SPR0 = 0x00f8 324 ;-------------------------------------------------------- 325 ; overlayable register banks 326 ;-------------------------------------------------------- 327 .area REG_BANK_0 (REL,OVR,DATA) 0000 328 .ds 8 329 ;-------------------------------------------------------- 330 ; internal ram data 331 ;-------------------------------------------------------- 332 .area DSEG (DATA) 333 ;-------------------------------------------------------- 334 ; overlayable items in internal ram 335 ;-------------------------------------------------------- 336 .area OSEG (OVR,DATA) 337 ;-------------------------------------------------------- 338 ; indirectly addressable internal ram data 339 ;-------------------------------------------------------- 340 .area ISEG (DATA) 341 ;-------------------------------------------------------- 342 ; absolute internal ram data 343 ;-------------------------------------------------------- 344 .area IABS (ABS,DATA) 345 .area IABS (ABS,DATA) 346 ;-------------------------------------------------------- 347 ; bit data 348 ;-------------------------------------------------------- 349 .area BSEG (BIT) 350 ;-------------------------------------------------------- 351 ; paged external ram data 352 ;-------------------------------------------------------- 353 .area PSEG (PAG,XDATA) 354 ;-------------------------------------------------------- 355 ; external ram data 356 ;-------------------------------------------------------- 357 .area XSEG (XDATA) 358 ;-------------------------------------------------------- 359 ; absolute external ram data 360 ;-------------------------------------------------------- 361 .area XABS (ABS,XDATA) 362 ;-------------------------------------------------------- 363 ; external initialized ram data 364 ;-------------------------------------------------------- 365 .area XISEG (XDATA) 366 .area HOME (CODE) 367 .area GSINIT0 (CODE) 368 .area GSINIT1 (CODE) 369 .area GSINIT2 (CODE) 370 .area GSINIT3 (CODE) 371 .area GSINIT4 (CODE) 372 .area GSINIT5 (CODE) 373 .area GSINIT (CODE) 374 .area GSFINAL (CODE) 375 .area CSEG (CODE) 376 ;-------------------------------------------------------- 377 ; global & static initialisations 378 ;-------------------------------------------------------- 379 .area HOME (CODE) 380 .area GSINIT (CODE) 381 .area GSFINAL (CODE) 382 .area GSINIT (CODE) 383 ;-------------------------------------------------------- 384 ; Home 385 ;-------------------------------------------------------- 386 .area HOME (CODE) 387 .area HOME (CODE) 388 ;-------------------------------------------------------- 389 ; code 390 ;-------------------------------------------------------- 391 .area CSEG (CODE) 392 ;------------------------------------------------------------ 393 ;Allocation info for local variables in function 'ready' 394 ;------------------------------------------------------------ 395 ;------------------------------------------------------------ 396 ; SRC/driver_io.c:4: unsigned char ready(void) 397 ; ----------------------------------------- 398 ; function ready 399 ; ----------------------------------------- 0000 400 _ready: 0002 401 ar2 = 0x02 0003 402 ar3 = 0x03 0004 403 ar4 = 0x04 0005 404 ar5 = 0x05 0006 405 ar6 = 0x06 0007 406 ar7 = 0x07 0000 407 ar0 = 0x00 0001 408 ar1 = 0x01 409 ; SRC/driver_io.c:6: return RI; 0000 A2 98 410 mov c,_RI 0002 E4 411 clr a 0003 33 412 rlc a 0004 F5 82 413 mov dpl,a 0006 22 414 ret 415 ;------------------------------------------------------------ 416 ;Allocation info for local variables in function 'write_char' 417 ;------------------------------------------------------------ 418 ;next_char Allocated to registers 419 ;------------------------------------------------------------ 420 ; SRC/driver_io.c:9: void write_char(unsigned char next_char) 421 ; ----------------------------------------- 422 ; function write_char 423 ; ----------------------------------------- 0007 424 _write_char: 0007 85 82 99 425 mov _SBUF,dpl 426 ; SRC/driver_io.c:12: TI = 0; 000A C2 99 427 clr _TI 428 ; SRC/driver_io.c:13: while( !TI ); 000C 429 00101$: 000C 30 99 FD 430 jnb _TI,00101$ 000F 22 431 ret 432 ;------------------------------------------------------------ 433 ;Allocation info for local variables in function 'read_char' 434 ;------------------------------------------------------------ 435 ;------------------------------------------------------------ 436 ; SRC/driver_io.c:16: unsigned char read_char(void) 437 ; ----------------------------------------- 438 ; function read_char 439 ; ----------------------------------------- 0010 440 _read_char: 441 ; SRC/driver_io.c:18: while( !RI ); 0010 442 00101$: 443 ; SRC/driver_io.c:19: RI = 0; 0010 10 98 02 444 jbc _RI,00108$ 0013 80 FB 445 sjmp 00101$ 0015 446 00108$: 447 ; SRC/driver_io.c:20: return SBUF; 0015 85 99 82 448 mov dpl,_SBUF 0018 22 449 ret 450 ;------------------------------------------------------------ 451 ;Allocation info for local variables in function 'write_string' 452 ;------------------------------------------------------------ 453 ;str Allocated to registers r2 r3 r4 454 ;------------------------------------------------------------ 455 ; SRC/driver_io.c:23: void write_string(char * str) 456 ; ----------------------------------------- 457 ; function write_string 458 ; ----------------------------------------- 0019 459 _write_string: 0019 AA 82 460 mov r2,dpl 001B AB 83 461 mov r3,dph 001D AC F0 462 mov r4,b 463 ; SRC/driver_io.c:25: while (*str ) { 001F 464 00101$: 001F 8A 82 465 mov dpl,r2 0021 8B 83 466 mov dph,r3 0023 8C F0 467 mov b,r4 0025 12s00r00 468 lcall __gptrget 0028 FD 469 mov r5,a 0029 60 18 470 jz 00104$ 471 ; SRC/driver_io.c:26: write_char(*str++); 002B 0A 472 inc r2 002C BA 00 01 473 cjne r2,#0x00,00110$ 002F 0B 474 inc r3 0030 475 00110$: 0030 8D 82 476 mov dpl,r5 0032 C0 02 477 push ar2 0034 C0 03 478 push ar3 0036 C0 04 479 push ar4 0038 12s00r07 480 lcall _write_char 003B D0 04 481 pop ar4 003D D0 03 482 pop ar3 003F D0 02 483 pop ar2 0041 80 DC 484 sjmp 00101$ 0043 485 00104$: 0043 22 486 ret 487 .area CSEG (CODE) 488 .area CONST (CODE) 489 .area XINIT (CODE) 490 .area CABS (ABS,CODE)