Ejemplo Del Uso De Retardo Con PIC
; **** Encabezado ****
1. list p=16F84A
2. #include P16F84A.inc
3. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
4. ;**** Definicion de variables ****
5.Contador1 equ 0x0C ; Seleccionamos posición en la memoria RAM (GPR) para guardar
; registro utilizado para demora.-
6. Contador2 equ 0x0D ; Registro utilizado en demora.-
7. Led equ 0 ;Definimos Led como el bit cero de un registro, en este caso PORTB.-
8. Pulsador equ 0 ; Definimos Pulsador como el bit 0, en este caso será para PORTA
9. ;**** Configuracion de puertos ***
10. Reset org0x00 ; Aquí comienza el micro.-
11. goto Inicio ; Salto a inicio de mi programa.-
12. org 0x05 ; Origen del código de programa.-
13. Inicio bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1.-
14. movlwb'11111' ; Muevo 11111 a W.-
15. movwf TRISA ; Cargo en TRISA.-
16. movlw b'11111110'
17. movwf TRISB
18. bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0
19. bcf PORTB,Led ; Comienza apagado.-20. ;**** Control de Led ****
21. Bucle btfsc PORTA,Pulsador ; Preguntamos si está en 0 lógico.-
22. goto Apagar ; Está a 1 lógico, Apagamos Led.-
23. bsf PORTB,Led ; Está a 0 lógico, EncendemosLed.-
24. call Demora_150ms ; Mantenemos prendido 150 milisegundos
25. bcf PORTB,Led ; Apagamos Led
26. call Demora_150ms ; Apagamos durante 150 ms, Ya realizamos un titilo.-
27. goto Bucle ;Testeamos nuevamente la condición del Pulsador
28.
29. Apagar bcf PORTB,Led ;Apagamos Led.-
30. goto Bucle ; Testeamos nuevamente la condición del Pulsador.-
31. ;**** Demora ****
32.Demora_150ms
33. movlw 0xFF ;
34. movwf Contador1 ; Iniciamos contador1.-
35. Repeticion1
36. movlw 0xC3 ;
37. movwf Contador2 ; Iniciamos contador2
38. Repeticion2
39. decfsz Contador2,1 ;Decrementa Contador2 y si es 0 sale.-
40. goto Repeticion2 ; Si no es 0 repetimos ciclo.-
41. decfsz Contador1,1 ; Decrementa Contador1.-
42. goto Repeticion1 ; Si no es cero repetimos ciclo.-
43....
Regístrate para leer el documento completo.