Está en la página 1de 2

;Hacer un programa que controle la intensidad luminosa en

;una lmpara incandescente alimentada con C.A. (Dimmer)


;Mediante el control del ngulo de disparo por medio del
;triac T1 de la tarjeta de desarrollo.
;Incrementar la luminosidad con la tecla S3 y decrementarla
;con la tecla S2.
list p=16F877A ; Indica el modelo de PIC que se
usa
; programa con el cual se manda se manda un numero al puerto B
; Es una directi
va de ensamblador
#include <p16F877A.inc> ; definicin de registros del microcontrolador
;***** DEFINICIN DE VARIABLES
;al seleccionar el banco 1 podemos uzar las direcciones
;para hexadecimal desde 0x20h hasta 0x7fh
;cont EQU 0x20
DELH EQU 0x21 ;variable del timer
DELL EQU 0x22 ;variable del timer
;**********************************************************************
ORG 0x00 ;vector de reset
goto MAIN ;salta al inicio del programa
ORG 0x05 ;inicio de programa
;************* Inicializacin**************************
;inicia deeclaracion de banco de memoria
; RP1 RP0
; BANCO 0 0 0 estan lo
s puertos
; BANCO 1 0 1 estan lo
s tris
; BANCO 2 1 0
; BANCO 3 1 1
;cuando declaro TRISx=0 salida TRISx=1 entrada
init bsf STATUS,RP0 ;PONE RP0 a 1
bcf STATUS,RP1 ;Pone RP1 a 0 para seleccionar el banco1

;************** declaro los ptos a utilizar **********
;clrf TRISC ;Declaro el puerto C todo como salida
;movlw 0x06 ;para declarar como entradas
bsf TRISA,1 ;selecciona el banco1 y declaro como A1
como in
bsf TRISA,4 ;selecciona el banco1 y declaro como A4
como in
bsf TRISA,5 ;selecciona el banco1 y declaro como A5
como in
bcf TRISC,1 ;Se selecciona el pto C1 como salida
;************ BANCO0 ***************
movw 0x55
movlw 0x06
movwf ADCON1
bcf STATUS,RP0 ;Pone RP0 a 0 para selccionar el banco0
clrf PORTC ;limpia el registro "f" del Puerto "C" para tomarlo como
salida
return
;*************************************************************
;************** declaracin del retardo **************
DELAY movlw 0x50 ;inicializa el tiempo
movwf DELH ;variable
DEL2 movlw 0xFF ;
movwf DELL ;variable
DEL1 decfsz DELL,f ;Decrementa dell y salta cuando dell=0 y salta a decfsz
goto DEL1
decfsz DELH,f
goto DEL2
return ;Salimos de la sub rutina hasta que delh
=0
;***********************************************************
MAIN call init ;salta a una direccion y luego que termi
ne regresa
jump BTFSC PORTA,1 ;checa que RA1=0
goto jump
bcf PORTC,1 ;pone un 0 en el puerto
c
jump1 BTFSS PORTA,1 ;;checa que RA1=1
goto jump1
call DELAY ;retardo
bsf PORTC,1 ;;pone un 1 en el puerto
c
goto jump
END

También podría gustarte