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