Hola buenas! Tenia una duda acerca de un código que encontre por internet es el siguiente:
(esta en assembler)
Bien pues mis dudas son:
¿Porque se asigna la variable CONTADOR1 y CONTADOR2 a las direcciones 08h y 09h?, ¿Estos no son datos de la EEPROM?, ¿No seria mejor asignar CONTADOR1 y CONTADOR2 a registros de proposito general como 0Ch y 0Dh?
Y por ultimo...
La instrucción decfsz CONTADOR1,1 resta los datos de la EEPROM hasta llegar a 0 y la instrucción decfsz CONTADOR2,1 resta la dirección de la EEPROM hasta llegar a 0 ¿me equivoco?
Jajaja, después de haber escrito la biblia os doy las grácias de antemano .
(esta en assembler)
Código:
;*****Establecimiento constantes ****
STATUS equ 03h ; Dirección del registro STATUS
TRISA equ 85h ; Dirección del registro triestado para el Puerto A.
PORTA equ 05h ; Dirección del Puerto A.
CONTADOR1 equ 08h ; Primer contador para nuestros bucles de retardo.
CONTADOR2 equ 09h ; Segundo contador para nuestros bucles de retardo.
;;****Configuración del Puerto****
bsf STATUS,5 ; Cambiamos al banco 1Switch to Bank 1
movlw 00h ; Ponemos los pines del puerto A ...
movwf TRISA ; ...como salidas.
bcf STATUS,5 ; Volvemos al Banco 0.;;
****Encendido del LED ****
Inicio movlw 02h ; Encendemos el LED poniendo primero el valor...
movwf PORTA ; ... en el registro w y después al puerto;
;****Inicio del buble de retardo 1****
Bucle1 decfsz CONTADOR1,1 ; Restamos 1 a 255.
goto Bucle1 ; Si CONTADOR es cero, continuamos.
decfsz CONTADOR2,1 ; Restamos 1 a 255
goto Bucle1 ; Volvemos al inicio de nuestro bucle
; Este retardo cuenta hacia atrás ...
; ...desde 255 a 0, 255 veces.
;;****Retardo terminado, ahora apagamos el LED ****
movlw 00h ; Apaga el LED poniendo primero el valor ...
movwf PORTA ; ... en el registro w y después al puerto
;;****Añadimos otro retardo****
Bucle2 decfsz CONTADOR1,1 ; Este segundo bucle mantiene el LED...
goto Bucle2 ; ...apagado el tiempo suficiente...
decfsz CONTADOR2,1 ; ...para que lo veamos
goto Bucle2
;;****Ahora volvemos al inicio del programa
goto Inicio ; Vuelve al principio y enciende el LED...
; ...de nuevo.
;****Termina el Programa****
end ; Algunos compiladores necesitan esta instrucción.
; y también por si acaso olvidamos poner...
; ... la instrucción 'goto'.
Bien pues mis dudas son:
¿Porque se asigna la variable CONTADOR1 y CONTADOR2 a las direcciones 08h y 09h?, ¿Estos no son datos de la EEPROM?, ¿No seria mejor asignar CONTADOR1 y CONTADOR2 a registros de proposito general como 0Ch y 0Dh?
Y por ultimo...
Código:
;****Inicio del buble de retardo 1****
Bucle1 decfsz CONTADOR1,1 ; Restamos 1 a 255.
goto Bucle1 ; Si CONTADOR es cero, continuamos.
decfsz CONTADOR2,1 ; Restamos 1 a 255
goto Bucle1 ; Volvemos al inicio de nuestro bucle
; Este retardo cuenta hacia atrás ...
; ...desde 255 a 0, 255 veces.
La instrucción decfsz CONTADOR1,1 resta los datos de la EEPROM hasta llegar a 0 y la instrucción decfsz CONTADOR2,1 resta la dirección de la EEPROM hasta llegar a 0 ¿me equivoco?
Jajaja, después de haber escrito la biblia os doy las grácias de antemano .