You are on page 1of 15

Encendido de LEDs,

Encendido LEDs; ; Se colocan cuatro interruptores en las lneas RA0, RA1, RA2, RA3, ; del puerto A del PIC16F84A y cuatro diodos Led en las lneas ; RB0, RB1, RB2, RB3, del puerto B. ; Mediante los interruptores se introduce un nmero binario de cuatro ; bits, el cual deber ser reflejado en los Led's del puerto B. ;INICIO #define __16f84 LIST P = 16F84A ;Etiquetas ESTADO EQU 0x03 PORT_A EQU 0x05 PORT_B EQU 0x06 w EQU 0x00 ; Programa ORG 0 goto inicio inicio bsf ESTADO,5 movlw b'11111111' movwf PORT_A movlw b'00000000'

; pic usado ;Direccin del reg. Estado en hex ;Direccin del Puerto A en hex ;Direccin del Puerto B en hex ;w = 0

;Direccin del vector de reset ;Salto a inicio ;Se pone en 1 el bit 5 del reg. ESTADO ;w = b'11111111' ;Se configura el puerto A como entrada ;w = b'00000000'

movwf PORT_B bcf ESTADO,5 bucle movf PORT_A,w movwf PORT_B goto bucle

;Se configura el puerto B como salida ;Se pone en 0 el bit 5 del reg. ESTADO ;Mueve el valor del puerto A a w ;Mueve w al puerto B ;Salto a bucle

;Fin end ;Nota: para este programa no importa la frecuencia de oscilacin

Encendido y apagado de un LED

;Programa que prende y apaga un led a una determinada frecuencia ;El led debe estar conectado en el pin RB0 del puerto B del PIC ;INICIO

#define __16f84 LIST P = 16F84A ; Etiquetas ESTADO EQU 0x03 PC EQU 0X02 PORT_A EQU 0x05 PORT_B EQU 0x06 w EQU 0x00 REG_1 EQU 0x0C REG_2 EQU 0x0D REG_3 EQU 0x0E VALOR1 EQU 0x30 VALOR2 EQU 0x40 VALOR3 EQU 0x50 ; Programa ORG 0 goto inicio ORG 5 inicio call config bucle movlw 0x00 movwf PORT_B call retardo movlw 0x01 movwf PORT_B call retardo goto bucle ; Rutinas config bsf ESTADO,5 movlw b'11111111' movwf PORT_A movlw b'00000000' movwf PORT_B bcf ESTADO,5 return retardo movlw VALOR1 movwf REG_1 tres movlw VALOR2 movwf REG_2 dos movlw VALOR3 movwf REG_3 uno decfsz REG_3 goto uno decfsz REG_2

;Comando que indica el pic usado ;Direccin del reg. Estado en hex ;Direccin del reg. PC en hex ;Direccin del puerto A en hex ;Direccin del puerto B en hex ;w = 0 ;Direccin del registro REG_1 ;Direccin del registro REG_2 ;Direccin del registro REG_3 ;Valor que se asigna a VALOR1 ;Valor que se asigna a VALOR2 ;Valor que se asigna a VALOR3 ;Vector de reset ;Salto a inicio ;Llamada a la rutina config ;Mueve 0x01 a w ;Mueve w al puerto B (apaga Led) ;Llamada a la rutina retardo ;Mueve 0x02 a w ;Mueve w al puerto B (prende Led) ;Llamada a la rutina retardo ;Salto a bucle ;Se pone en 1 el bit 5 del reg. estado ;w = b'11111111' w = 0XFF ;Se configura el puerto A como entradas ;w = b'00000000' w = 0X00 ;Se configura el puerto B como salidas ;Se pone en 0 el bit 5 del reg. estado ;Carga w con el nmero 30 (VALOR1) ;Mueve w al registro REG_1 ;Carga w con el nmero 40 (VALOR2) ;Mueve w al registro REG_2 ;Carga w con el nmero 50 (VALOR3) ;Mueve w al registro REG_3 ;Decrementa el valor de REG_3 en 1 ;Salto a uno ;Decrementa el valor de REG_2 en 1

goto dos decfsz REG_1 goto tres return ; Fin end

;Salto a dos ;Decrementa el valor de REG_1 en 1 ;Salto a tres ;Retorno desde subrutina ;Fin del programa

Display 7 segmentos

;Programa que muestra en un display de 7 segmentos un conteo del 0 - 9 ;El display de 7 segmentos debe conectarse en los pines del puerto B de ;la siguiente manera: ;RB0-a, RB1-b, RB2-c, RB3-d, RB4-e, RB5-f, RB6-g. ;INICIO #define __16f84 LIST P = 16F84A ;Etiquetas PC EQU 0X02 ESTADO EQU 0x03 PORT_A EQU 0x05 PORT_B EQU 0x06 w EQU 0x00 REG_1 EQU 0x0C REG_2 EQU 0x0D REG_3 EQU 0x0E VALOR1 EQU 0x30 VALOR2 EQU 0x40 VALOR3 EQU 0x50 AUX EQU 0x0F ; Programa ORG 0 goto inicio ORG 5 inicio call config bucle movlw 0x00 call tabla movwf PORT_B call retardo movlw 0x01 call tabla movwf PORT_B call retardo movlw 0x02 call tabla movwf PORT_B call retardo movlw 0x03 call tabla movwf PORT_B call retardo movlw 0x04 call tabla movwf PORT_B

; pic usado ;Direccin del reg. PC en hex ;Direccin del reg. ESTADO ;Direccin del puerto A ;Direccin del puerto B ;w = 0 ;Direccin del registro REG_1 ;Direccin del registro REG_2 ;Direccin del registro REG_3 ;Valor que se asigna a VALOR1 ;Valor que se asigna a VALOR2 ;Valor que se asigna a VALOR3 ;Direccin del registro AUX ;Vector de reset ;Salto a inicio ;Llamada a la rutina config ;Carga w con el dato 0x00 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x01 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x02 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x03 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x04 ;Llamada a la rutina tabla ;Se envian datos al puerto B

call retardo movlw 0x05 call tabla movwf PORT_B call retardo movlw 0x06 call tabla movwf PORT_B call retardo movlw 0x07 call tabla movwf PORT_B call retardo movlw 0x08 call tabla movwf PORT_B call retardo movlw 0x09 call tabla movwf PORT_B call retardo goto bucle ; Subrutinas config bsf ESTADO,5 movlw b'11111111' movwf PORT_A movlw b'00000000' movwf PORT_B bcf ESTADO,5 return retardo movlw VALOR1 movwf REG_1 tres movlw VALOR2 movwf REG_2 dos movlw VALOR3 movwf REG_3 uno decfsz REG_3 goto uno decfsz REG_2 goto dos decfsz REG_1 goto tres return tabla addwf PC,1

;Llamada a la rutina retardo ;Carga w con el dato 0x05 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x06 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x07 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x08 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Carga w con el dato 0x09 ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Llamada a la rutina retardo ;Salto a bucle ;Se pone en 1 el bit 5 del reg. ESTADO ;Carga w con el dato b'11111111' ;Configura el puerto A como entradas ;Carga w con el dato b'00000000' ;Configura el puerto B como salidas ;Se pone en 0 el bit 5 del reg. ESTADO ;Retorno desde subrutina ;Carga w con el nmero 30 (VALOR1) ;Mueve w al registro REG_1 ;Carga w con el nmero 40 (VALOR2) ;Mueve w al registro REG_2 ;Carga w con el nmero 50 (VALOR3) ;Mueve w al registro REG_3 ;Decrementa el valor de REG_3 en 1 ;Salto a uno ;Decrementa el valor de REG_2 en 1 ;Salto a dos ;Decrementa el valor de REG_1 en 1 ;Salto a tres ;Retorno desde subrutina ;pc= PC+w

; .gfedcba Codigo para 7seg catodo comun retlw b'00111111' ;7 segmentos para el 0 retlw b'00000110' ;7 segmentos para el 1 retlw b'01011011' ;7 segmentos para el 2 retlw b'01001111' ;7 segmentos para el 3 retlw b'01100110' ;7 segmentos para el 4 retlw b'01101101' ;7 segmentos para el 5 retlw b'01111101' ;7 segmentos para el 6 retlw b'00000111' ;7 segmentos para el 7 retlw b'01111111' ;7 segmentos para el 8 retlw b'01101111' ;7 segmentos para el 9 ; Fin end

Decodificador BCD a 7 segmentos

; PIC16F84A como un codificador para un display de 7 segmentos. ; Cuatro interruptores en las lneas RA0, RA1, RA2, RA3, del puerto A y un display de 7 segmentos en el puerto B. ; El display de 7 segmentos debe conectarse en los pines del puerto B ; RB0-a, RB1-b, RB2-c, RB3-d, RB4-e, RB5-f, RB6-g. ; Mediante los interruptores se introduce un nmero binario de cuatro bits, dicho nmero deber ser presentado en el display de siete segmentos, pero en hexadecimal ; INICIO #define __16f84 LIST P = 16F84A ; Etiquetas ESTADO EQU 0x03 PC EQU 0X02 PORT_A EQU 0x05 PORT_B EQU 0x06 w EQU 0x00 ;Programa ORG 0 goto inicio

; pic usado ;Direccin del reg. Estado en hex ;Direccin del reg. PC en hex ;Direccin del puerto A en hex ;Direccin del puerto B en hex ;w = 0

ORG 5 inicio call config bucle movf PORT_A,w call tabla movwf PORT_B goto bucle ;Rutinas config bsf ESTADO,5 movlw b'11111111' movwf PORT_A movlw b'00000000' movwf PORT_B bcf ESTADO,5 return tabla addwf PC

;Llamada a la rutina config ;w = puerto A ;Llamada a la rutina tabla ;Se envian datos al puerto B ;Salto a inicio ;Se pone en 1 el bit 5 del reg. estado ;w = b'11111111' w = 0XFF ;Se configura el port A como entradas ;w = b'00000000' w = 0X00 ;Se configura el port B como salidas ;Se pone en 0 el bit 5 del reg. estado ;pc= PC+w

; .gfedcba Codigo para 7seg catodo comun retlw b'00111111' ;7 segmentos para el 0 retlw b'00000110' ;7 segmentos para el 1 retlw b'01011011' ;7 segmentos para el 2 retlw b'01001111' ;7 segmentos para el 3 retlw b'01100110' ;7 segmentos para el 4 retlw b'01101101' ;7 segmentos para el 5 retlw b'01111101' ;7 segmentos para el 6 retlw b'00000111' ;7 segmentos para el 7 retlw b'01111111' ;7 segmentos para el 8 retlw b'01101111' ;7 segmentos para el 9 retlw b'01110111' ;7 segmentos para el A retlw b'01111100' ;7 segmentos para el b retlw b'00111001' ;7 segmentos para el C retlw b'01011110' ;7 segmentos para el d retlw b'01111001' ;7 segmentos para el E retlw b'01110001' ;7 segmentos para el F ; Fin end ;Fin del programa

Secuancia de LEDs

; Programa que realiza una determinada secuencia de Led's. ; Los led's deben conectarse en los pines del puerto B (RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7). ; INICIO #define __16f84

LIST P = 16F84A ; Etiquetas ESTADO EQU 0x03 PORT_A EQU 0x05 PORT_B EQU 0x06 w EQU 0x00 REG_1 EQU 0x0C REG_2 EQU 0x0D REG_3 EQU 0x0E VALOR1 EQU 0x30 VALOR2 EQU 0x40 VALOR3 EQU 0x50 AUX EQU 0x0F ; Programa ORG 0 goto inicio ORG 7 inicio call config movlw 0x03 movwf AUX bucle movf AUX,w movwf PORT_B call retardo rlf AUX,1 goto bucle ; Subrutinas config bsf ESTADO,5 movlw b'11111111' movwf PORT_A movlw b'00000000' movwf PORT_B bcf ESTADO,5 return retardo movlw VALOR1 movwf REG_1 tres movlw VALOR2 movwf REG_2 dos movlw VALOR3 movwf REG_3 uno decfsz REG_3 goto uno decfsz REG_2 goto dos decfsz REG_1 goto tres return ; Fin end

;Comando que indica el pic usado ;Direccin del reg. ESTADO ;Direccin del puerto A ;Direccin del puerto B ;w = 0 ;Direccin del registro REG_1 ;Direccin del registro REG_2 ;Direccin del registro REG_3 ;Valor que se asigna a VALOR1 ;Valor que se asigna a VALOR2 ;Valor que se asigna a VALOR3 ;Direccin del registro AUX ;Vector de reset ;Salto a inicio ;Llamada a la rutina config ;w = 0x03 ;Carga w con el dato 0x03 ;w = AUX ;Mueve w al puerto B ;Llamada a la rutina retardo ;Rotacion a la izquierda, usando carry ;Salto a bucle ;Se pone en 1 el bit 5 del reg. ESTADO ;Carga w con el dato b'11111111' ;Configura el puerto A como entradas ;Carga w con el dato b'00000000' ;Configura el puerto B como salidas ;Se pone en 0 el bit 5 del reg. ESTADO ;Retorno desde subrutina ;Carga w con el nmero 30 (VALOR1) ;Mueve w al registro REG_1 ;Carga w con el nmero 40 (VALOR2) ;Mueve w al registro REG_2 ;Carga w con el nmero 50 (VALOR3) ;Mueve w al registro REG_3 ;Decrementa el valor de REG_3 en 1 ;Salto a uno ;Decrementa el valor de REG_2 en 1 ;Salto a dos ;Decrementa el valor de REG_1 en 1 ;Salto a tres ;Retorno desde subrutina

You might also like