Ejercicio 8 : Comparar bit de paridad en caracteres ASCII.
Testear una cadena de caracteres ASCII de 7 bits guardada en memoria con 1 bit de paridad par añadido como bit más significativo. Transferir al pin P1.0 un “1” si la cadena es correcta y un “0” en caso contrario. La cadena es la siguiente : {41h, 42h, 0C3h, 44h, 0C5h, 0E1h, 0E2h, 63h, 0E4h, 65h, 0Dh (retorno de carro)}. Solución : Flujograma.
Inicio Inicio Inicializar Inicializar variables variables Cargar Cargar caracter de caracter de cadena cadena P1.0=1 P1.0=1 si si P1.0=0 P1.0=0 NCORR=0 NCORR=0 no
Caracter1=0DH Caracter1=0DH no Enmascarar Enmascarar valor con #80h valor con #80h yy guardar en guardar en PAR PAR Enmascarar Enmascarar valor con #7Fh valor con #7Fh
si
PSW.0=0 PSW.0=0 si si
no
PAR=0 PAR=0 no Activar varible Activar varible NCORR NCORR
PAR=#80h PAR=#80h no Activar varible Activar varible NCORR NCORR
Incrementar el Incrementar el puntero de datos puntero de datos
;****************************************************************** ; EJERCICIO 8 ; COMPARAR BIT DE PARIDAD EN CARACTERES ASCII ;****************************************************************** USES 80537 ;****************************************************************** ; VARIABLES RAM INTERNA ;****************************************************************** CADENA EQU 30H ;Direccion Inicio Cadena Destino RCARRO EQU 31H ;Retorno De Carro PAR EQU 32H NCORR EQU 33H ;****************************************************************** ; VECTORES DE INTERRUPCION ;****************************************************************** ORG 0000H LJMP INICIO ;****************************************************************** ; PROGRAMA PRINCIPAL ;****************************************************************** ORG 0200H INICIO : MOV A,#10H ANL PSW,A ;Seleccion Banco 2 CICLO : MOV ANL MOV MOV MOV MOV MOV LCALL SALT3 : MOV CJNE MOV JNZ SETB LJMP PONER0 : CLR LJMP SEGUIR : ANL A,#80H ;And lógica para máscara con 80h. P1.0 INICIO ;Poner a “0” el pin P1.0. A,@R0 ;Selecciono el valor de la cadena. A,RCARRO,SEGUIR A,NCORR PONER0 P1.0 ;Ponemos a “1” el pin P1.0. INICIO A,#00H P1,A CADENA,#40H RCARRO,#0DH PAR,#00H NCORR,#00H R0,CADENA CASCII ;Configurar P1 Como Salida
MOV MOV ANL JNB MOV CJNE INC LJMP PPAR : MOV CJNE INC LJMP INCORR :
PAR,A A,@R0 A,#7FH PSW.0,PPAR A,PAR A,#80H,INCORR R0 SALT3
;And lógica para máscara con 7Fh.
A,PAR A,#00H,INCORR R0 SALT3
MOV A,NCORR ADD A,#01H ;Activ. y sumamos el error. MOV NCORR,A INC R0 LJMP SALT3 ;****************************************************************** ; CADENA ASCII ;****************************************************************** CASCII : MOV @R0,#41H INC R0 MOV @R0,#42H INC R0 MOV @R0,#0C3H INC R0 MOV @R0,#44H INC R0 MOV @R0,#0C5H INC R0 MOV @R0,#0E1H INC R0 MOV @R0,#0E2H INC R0 MOV @R0,#63H INC R0 MOV @R0,#0E4H INC R0 MOV @R0,#65H INC R0 MOV @R0,#0DH MOV R0,CADENA RET ;****************************************************************** END