;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