COMENTARIOS
List p=PIC16F873 Usaremos el PIC16F873
Include "P16F873.inc" Se incluye el archivo P16F873.inc
_config 0x3F38 Se configure el WDT, y el circuito de reinicio del
sistema.
CBLOCK 0X20 Da valor a las constantes nombradas
Loops, loops2 Se definen las constants
ENDC Se finaliza el bloque de definición de constantes
org 0x00 Define dirección de memoria en la cual el programa está
siendo grabado
goto Inicio Va a la etiqueta de inicio
Inicio movlw 0x07 Movemos el valor de 0x07 al registro W
movwf CMCON Se desactivan los comparadores analógicos
bsf STATUS, RP0
Nos cambiamos al banco 1
bcf TRISA, 0
1
bsf TRISB, 0
Se coloca en estado alto el bit 0 del puerto B
bcf STATUS,RP0
Ciclo
btfss PORTB,0 Se pregunta por el bit del puerto B, si está en estado alto
se salta la instrucción siguiente, sino continua normal.
goto ciclo Va a la etiqueta “ciclo”
Parpadeo
bsf PORTA,0 Pone en alto el bit 0 del puerto A
call retardo Pone en alto el bit 0 del puerto A
bcf PORTA,0
call retardo
goto ciclo
Retardo
CLRWDT Limpia el Watchdog Timer
MOVLW D'200' Carga a W con 200
MOVWF loops Mueve el valor de W a loops
top2 MOVLW D'220' Carga a W con 220
MOVWF loops2 Mueve el valor de W a loops2
top CLRWDT Limpia el Watchdog Timer
NOP
NOP No se ejecuta ninguna instrucción
NOP Solo consume el tiempo de maquina
NOP Y ocupa lugar en la memoria
NOP Del programa
NOP
DECFSZ loops2,1 Decrementa el valor de loops2, si el resultado es 0 se
salta la siguiente instrucción, sino continua normal
GOTO top
DECFSZ loops,1 Decrementa el valor de loops1, si el resultado es 0 se
salta la siguiente instrucción, sino continua normal
GOTO top2
RETLW 0 Retorna a la siguiente intruccion después de la
instrucción Call, además carga con 0 a W
END Finaliza
3. Diagrama de flujo del programa de automatización (código .asm del punto 2)
2
3
4