Вы находитесь на странице: 1из 6

;Configuraciones de los pines del PORTB y PORTD

;Curso PIC16f877

LIST P=16F877
INCLUDE <p16f877.INC> ;direcciones de los registros del pic

org 0
bsf STATUS,RP0 ;entro al banco 1
movlw b'11111111' ;carga el valor b'11111111' a w
movwf TRISB ;muevo el valor de w al puerto B
movlw b'00000000' ;carga el valor b'00000000' a w
movwf TRISD ;muevo el valor de w al puerto D
bcf STATUS,RP0 ;entro al banco 0

repite

movf PORTB,0 ;
movwf PORTD ;
goto repite ;

end ;fin del programa

*********************************************

;Configuraciones de los pines del PORTB y PORTD


;Curso PIC16f877

LIST P=16F877
INCLUDE <p16f877.INC> ;direcciones de los registros del pic

org 0000h
bsf STATUS,RP0 ;entra al banco 1
movlw b'11111111' ;coloca el valor 255 en el registro "w"
movwf TRISB ;asigna los bits del puerto B como entradas
movlw b'00000000' ;coloca el valor 0 en el registro "W"
movwf TRISD ;asigna los bits del puerto D como salidas
bcf STATUS,RP0 ;regresa al banco cero

repite

movf PORTB,0 ;copia la entrada en 1 del bit 0 en el puerto B


movwf PORTD ;coloca en cero todas las salidas del puerto D
goto repite ;bucle infinito de la etiqueta repite

end ;fin del programa

*****************************************************

list P=16f877
include<p16f877.inc>;Direcciones de registro del PIC
include<macro16f877.inc>;macro que sirve para la decodificacin del teclado
__config 0x3f32 ;velocidad de trabajo del PIC
cblock 0x20 ;habilita el llamado a libreras
endc
org 0000h
;----------------------------------------------------

;Programa principal
bsf STATUS,RP0 ;accedemos al banco 1
bcf TRISD,0;Se declara el puerto RD0 como salida
bcf STATUS,RP0 ;retornemos al banco 0
clrf PORTD ; limpiamos (ponemos a cero) el puertoD
clrf PORTB ; limpiamos (ponemos a cero) el puertoB
call Inicio_Teclado4x4 ;se llama la macro de decodificacin teclado
repite; bucle que lee el presionado de una tecla
call Teclado4x4; se llama a librera teclado4x4
movf NumeroTeclado4x4,0 ;se mueve el contenido de[NumeroTeclado4x4] hacia W
csi NumeroTeclado4x4,b'00000001',led_on ;condicional tecla presionada es #1?
csi NumeroTeclado4x4,b'00000000',led_off ;condicional tecla presionada es #0?
goto repite ;se vuelve a testear el numeo introducido en el teclado
led_on;linea para prender LED si se presiona #1
movlw b'00000001';led en on
movwf PORTD ;se mueve W(datos ingresados con el teclado) hacia el puerto D
goto repite
led_off; linea para apagar LEDsi se presiona #0
movlw b'00000000'; led en off
movwf PORTD ;se mueve W(datos ingresados con el teclado) hacia el puerto D
goto repite
;----------------------------------------
;Librerias incluidas
include<electronicpic16f877.asm>
include<teclado.asm>
end; fin del programa

*******************************************************************

list P=16f877
include<p16f877.inc>;Direcciones de registro del PIC
include<macro16f877.inc>;macro que sirve para la decodificacin del teclado
__config 0x3f32 ;velocidad de trabajo del PIC
cblock 0x20 ;habilita el llamado a libreras
endc
org 0000h
;----------------------------------------------------

;Programa principal
bsf STATUS,RP0 ;accedemos al banco 1
bcf TRISD,0;Se declara el puerto RD0 como salida
bcf STATUS,RP0 ;retornemos al banco 0
clrf PORTD ; limpiamos (ponemos a cero) el puertoD
clrf PORTB ; limpiamos (ponemos a cero) el puertoB
call Inicio_Teclado4x4 ;se llama la macro de decodificacin teclado
repite; bucle que lee el presionado de una tecla
call Teclado4x4; se llama a librera teclado4x4
movf NumeroTeclado4x4,0 ;se mueve el contenido de[NumeroTeclado4x4] hacia W
csi NumeroTeclado4x4,b'00000001',led_on ;condicional tecla presionada es #1?
csi NumeroTeclado4x4,b'00000000',led_off ;condicional tecla presionada es #0?
goto repite ;se vuelve a testear el numeo introducido en el teclado
led_on;linea para prender LED si se presiona #1
movlw b'00000001';led en on
movwf PORTD ;se mueve W(datos ingresados con el teclado) hacia el puerto D
goto repite
led_off; linea para apagar LEDsi se presiona #0
movlw b'00000000'; led en off
movwf PORTD ;se mueve W(datos ingresados con el teclado) hacia el puerto D
goto repite
;----------------------------------------
;Librerias incluidas
include<electronicpic16f877.asm>
include<teclado.asm>
end; fin del programa

***********************************************************************************

__CONFIG _WDT_OFF&_CP_OFF&_PWRTE_ON&_HS_OSC

list P=16f877
include<p16f877.inc>
include<macroTECSUP.INC>
cblock 0x20
endc

org 0000h

;programa principal
bsf STATUS,RP0
bcf TRISD,0
clrf PORTD
bcf STATUS,RP0
clrf PORTB

call Inicio_Teclado4x4
repite
call Teclado4x4
movf NumeroTeclado4x4,0
csi NumeroTeclado4x4,b'00000001',led_on
csi NumeroTeclado4x4,b'00000000',led_off
goto repite
led_on
movlw b'00000001'
movwf PORTD
goto repite
led_off
movlw b'00000000'
movwf PORT
goto repite

include<subrutinaPIC16f877.asm>
include<tecladoTECSUP.asm>
end

*****************************************************************

;Aplicacion de lo aprendido LAB04

list p=16f877
include <p16f877.inc>
include<macro16f877.inc>
__config 0x3f32
cblock 0x20
cuenta1
cuenta2
endc

org 0000h
banco 1
clrf trisb
clrf trisd
bsf trisc,0
banco 0
;DisplayAnodoComun
clrf cuenta1
movf cuenta1,0
call DisplayCatodoComun
movwf portb
clrf cuenta2
movf cuenta2,0
call DisplayCatodoComun
movwf portd

Testea
btfss portc,0
goto Testea
goto IncrementarUnidad

IncrementarUnidad
incf cuenta2
csi cuenta2,.10,IniciaCeroUnidad
movf cuenta2,0
call DisplayCatodoComun
movwf portd
;segundo .1
t500ms equ 0x82
goto IncrementarUnidad

IniciaCeroUnidad
clrf cuenta2
movf cuenta2,0
call DisplayCatodoComun
movwf portd
incf cuenta1

csi cuenta1,.10,IniciaCeroDecena
movf cuenta1,0
call DisplayCatodoComun
movwf portb
;segundo .1
t500ms equ 0x82
goto IncrementarUnidad

IniciaCeroDecena
clrf cuenta1
movf cuenta1,0
call DisplayCatodoComun
movwf portb
;segundo .1
t500ms equ 0x82
goto IncrementarUnidad

include<electronicpic16f877.asm>
end

******************************************

;acceso por cdigo-Producto de venta

list p=16f877a
include<p16f877a.inc>
include<macro16f877.inc>
__config 0x3f32 ;reset on/20Mhz
cblock 0x20
clave1
clave2
clave3
clave4
cont
endc

org 0000h
;------------------------------------
;SECTOR DE CONFIGURACIN DE REGISTROS
call Inicio_Teclado4x4
banco 1
bcf trisc,1
clrf TRISD
banco 0
;------------------------------------
;Estado inicial de los registros
Inicio
clrf PORTD ;PORTD en off
clrf clave1
clrf clave2
clrf clave3
clrf clave4
mover cont,.10
;------------------------------------
;Programa principal
;ingreso de clave
Repite
csi portc,1 ,encendidoled

call Teclado4x4
movf NumeroTeclado4x4,0
movwf clave1
call DisplayCatodoComun
movwf porta
milisegundo .250
milisegundo .250

call Teclado4x4
movf NumeroTeclado4x4,0
movwf clave2
call DisplayCatodoComun
movwf porta
milisegundo .250
milisegundo .250

call Teclado4x4
movf NumeroTeclado4x4,0
movwf clave3
call DisplayCatodoComun
movwf porta
milisegundo .250
milisegundo .250

call Teclado4x4
movf NumeroTeclado4x4,0
movwf clave4
call DisplayCatodoComun
movwf porta
milisegundo .250
milisegundo .250

;comparar con la clave verdadera


;3322
csni clave1,.3,ClaveError
csni clave2,.3,ClaveError
csni clave3,.3,ClaveError
csni clave4,.3,ClaveError
goto ClaveCorrecta
ClaveError
bsf portd,0
goto Inicio
ClaveCorrecta
bsf PORTD,1
goto Inicio

encendidoled
bsf portd,0
bsf portd,1
goto Inicio
;-------------------------------------
include<electronicpic16f877.asm>
include<teclado.asm>
end