Pedro Guerrero Amado.Marzo 2002 PRACTICA 5 REALIZAR ENCENDIDO ALTERNATIVO DE LOS OCHO DIODOS LED DESCRIPCIÓN. En esta práctica vamos a realizar el encendido alternativo de los diodos leds de la puerta B. Para ellos iremos activando las salidas de la puerta B alternativamente. Entre encendido de uno y otro llamaremos a una rutina de retardo. Vamos a dar dos programas fuentes, uno más largo utilizando las rutinas de mover datos y otro más sencillo utilizando la instrucción de rotar bits. PROGRAMAS FUENTE. Listado 1 ; encendido alternativo de los ocho diodos led LIST P=PIC16F84 LIST C=132 #DEFINE banco1 bsf 0x03,5 #DEFINE banco0 bcf 0x03,5 ;DECLARACION REGISTROS Y VARIABLES porta EQU 0x05 portb EQU 0x06 trisa EQU 0x5 trisb EQU 0x6 status EQU 0x03 tm0 EQU 0x1 cont1 EQU 0xc cont2 EQU 0dh uno EQU 0xe w EQU 0 f EQU 1 ORG 0 GOTO inicio ; salvamos el vector de interrupción ORG 5 inicio banco1 ; seleccionamos banco 1 de registros CLRF trisb ; ponemos trisb a 0, puerta B como salidas MOVLW 0x1f MOVWF trisa ;ponemos a como entradas Pedro Guerrero Amado.Marzo 2002 banco0 principal ; seleccionamos banco 0 CLRF portb ; ponemos todas las salidas a 0 CALL retardos MOVLW 0x1 MOVWF portb ; CALL retardos MOVLW 0x2 MOVWF portb CALL retardos ; MOVLW 0x4 MOVWF portb CALL retardos ; MOVLW 0x8 MOVWF portb CALL retardos ; MOVLW 0x10 MOVWF portb CALL retardos ; MOVLW 0x20 MOVWF portb CALL retardos ; MOVLW 0x40 MOVWF portb CALL retardos ; MOVLW d'128' MOVWF portb CALL retardos ; MOVLW 0xff MOVWF portb CALL retardos ; MOVLW 0x0 MOVWF portb CALL retardos ; MOVLW 0xff MOVWF portb ; Pedro Guerrero Amado.Marzo 2002 ; CALL retardos GOTO principal RUTINA DE RETARDO DE APROXIMADAMENTE 0.2sg * valor de uno retardos MOVLW 0xff ;MOVEMOS FF A W Y cargamos MOVWF cont1 ;cont1 y cont2 con ff MOVWF cont2 ; MOVLW 0x2 ; MOVWF uno ;igual bucle DECFSZ cont1,f ;decrementamos cont1, si es 0 saltamos. GOTO bucle ;sino volvemos a bucles DECFSZ cont2,f ;igual pero con cont2 GOTO bucle ; DECFSZ uno,f GOTO bucle RETURN END Listado 2 ; encendido alternativo de los ocho diodos led LIST P=PIC16F84 LIST C=132 #DEFINE banco1 bsf 0x03,5 #DEFINE banco0 bcf 0x03,5 ;DECLARACION REGISTROS Y VARIABLES porta portb trisa trisb status tm0 cont1 cont2 uno w f EQU 0x05 EQU 0x06 EQU 0x5 EQU 0x6 EQU 0x03 EQU 0x1 EQU 0xc EQU 0dh EQU 0xe EQU 0 EQU 1 Pedro Guerrero Amado.Marzo 2002 ORG 0 GOTO inicio ; salvamos el vector de interrupción ORG 5 inicio banco1 ; seleccionamos banco 1 de registros CLRF trisb ; ponemos trisb a 0, puerta B como salidas MOVLW 0x1f MOVWF trisa ;ponemos a como entradas banco0 ; seleccionamos banco 0 principal CLRF portb ; ponemos todas las salidas a 0 CALL retardos MOVLW 0x1 MOVWF portb ; CALL retardos vuelve RLF portb, f CALL retardos GOTO vuelve ; RUTINA DE RETARDO DE APROXIMADAMENTE 0.2sg * valor de uno ; Aquí irían las instrucciones de la rutina de retardo que ya conocemos.