;; 0x0000 vector de arranque.
0000 04 9B JMP 009BH ; salto a 0x009B
0002 00 NOP
;; 0x0003 vector de interrupción.
0003 E5 SEL MB0 ; MBF = 0. Selecciona banco 0 de memoria.
0004 04 0B JMP 000BH ; Salta a 0x000B
0006 04 9B JMP 009BH ; Salta a 0x009B
0008 00 NOP
0009 04 9B JMP 009BH
;; viene de vector de interrupción.
000B 99 F7 ANL P1,#F7H
000D 8A F0 ORL P2,#F0H ; Configura P2.4 a P2.7 como entradas.
000F 0A IN A,P2 ; Lee valor de P2
0010 53 F0 ANL A,#F0H ; Descarta P2.0 a P2.3, usados en direccionamiento.
; se queda con bits P2.4 a P2.7
0012 47 SWAP A ; Intercambio de nibbles. P2.4 a P2.7 pasa a bits bajos.
0013 A8 MOV R0,A ; Almacena valor en R0
0014 B9 08 MOV R1,#08H ; R1 = 0x08
0016 23 1F MOV A,#1FH ; A = 0x1F
0018 A1 MOV @R1,A ; [ R1 = 0x08 ] = 0x1F. Posición 8 memoria = 0x1F
0019 19 INC R1 ; R1 = 0x09
001A 27 CLR A ; A = 0
001B A1 MOV @R1,A ; [ R1 = 0x09 ] = 0x00. Posición 9 memoria = 0x00
001C 17 INC A ; A = 1
001D D7 MOV PSW,A ; PWS = A = 1 ¡¡¡ OJO !!!
001E 93 RETR ; NO RETORNA. CONTINUA PERO LIMPIA FLAG DE LA INTERRUPCION.
; Qué cabroncete, casi se me pasa esto. :-)
;; saltos según valor leído en P2.4 a P2.7
001F E5 SEL MB0 ; MBF = 0. Selecciona banco 0 de memoria.
0020 F8 MOV A,R0 ; A = R0 = Valor leído de P2.
0021 C6 9B JZ 009BH ; Si = 0x00, salta a 0x009B
0023 23 0F MOV A,#0FH ;
0025 D8 XRL A,R0 ;
0026 C6 98 JZ 0098H ; Si = 0x0F, salta a 0x0098
0028 23 0E MOV A,#0EH ;
002A D8 XRL A,R0 ;
002B C6 96 JZ 0096H ; Si = 0x0E, salta a 0x0096
002D 23 0D MOV A,#0DH ;
002F D8 XRL A,R0 ;
0030 C6 92 JZ 0092H ; Si = 0x0D, salta a 0x0092
0032 23 0C MOV A,#0CH ;
0034 D8 XRL A,R0 ;
0035 C6 8D JZ 008DH ; Si = 0x0C, salta a 0x008D
0037 23 01 MOV A,#01H ;
0039 D8 XRL A,R0 ;
003A C6 70 JZ 0070H ; Si = 0x01, salta a 0x0070
003C 23 02 MOV A,#02H ;
003E D8 XRL A,R0 ;
003F C6 72 JZ 0072H ; Si = 0x02, salta a 0x0072
0041 23 03 MOV A,#03H ;
0043 D8 XRL A,R0 ;
0044 C6 75 JZ 0075H ; Si = 0x03, salta a 0x0075
0046 23 04 MOV A,#04H ;
0048 D8 XRL A,R0 ;
0049 C6 78 JZ 0078H ; Si = 0x04, salta a 0x0078
004B 23 05 MOV A,#05H ;
004D D8 XRL A,R0 ;
004E C6 7A JZ 007AH ; Si = 0x05, salta a 0x007A
0050 23 06 MOV A,#06H ;
0052 D8 XRL A,R0 ;
0053 C6 7D JZ 007DH ; Si = 0x06, salta a 0x007D
0055 23 07 MOV A,#07H ;
0057 D8 XRL A,R0 ;
0058 C6 81 JZ 0081H ; Si = 0x07, salta a 0x0081
005A 23 08 MOV A,#08H ;
005C D8 XRL A,R0 ;
005D C6 83 JZ 0083H ; Si = 0x08, salta a 0x0083
005F 23 09 MOV A,#09H ;
0061 D8 XRL A,R0 ;
0062 C6 85 JZ 0085H ; Si = 0x09, salta a 0x0085
0064 23 0A MOV A,#0AH ;
0066 D8 XRL A,R0 ;
0067 C6 87 JZ 0087H ; Si = 0x0A, salta a 0x0087
0069 23 0B MOV A,#0BH ;
006B D8 XRL A,R0 ;
006C C6 89 JZ 0089H ; Si = 0x0B, salta a 0x0089
|