Programació en pic-as del PIC 16F690

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Exemple PB - Ús bàsic del polsador

En aquest exemple volem veure com llegir l'estat del polsador que porta la placa (entrada RA3).

El programa inicialment encén el LED 0. Si es prem el polsador apaga el LED 0 i encén els altres tres. Si deixem anar el polsador tornem a tenir el LED 0 encès.

PROCESSOR 16F690
#include <xc.inc>
config FOSC = INTRCIO, WDTE = OFF, PWRTE = OFF, MCLRE = OFF, CP = OFF
config CPD = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF
PSECT code, class=CODE, delta=2, abs  ; A l'inici de la memòria
main:
  bsf RP0  ; Tria el banc 1
  movlw 0xFF  ; Posa l'acumulador a FFh (tot uns)
  movwf TRISA  ; Posa tots els bits del port A com a entrada
  clrf TRISC  ; Posa tots els bits del port C com a sortida
  bcf RP0
  clrf PORTC  ; Inicialment tots els LED apagats
Bucle:
  btfss PORTA,3  ; Mira si està activada l'entrada A3
                 ; Si està activada, no fa la instrucció següent
                 ; Fa la instrucció si l'entrada està desactivada
                 ; És a dir, si el polsador està premut
  goto Premut  ; Si està premut, anem a encendre els tres LED
  movlw 00000001B  ; Encén el LED 0
  movwf PORTC
  goto Bucle  ; Repetim-ho...
Premut:
  movlw 00001110B  ; Encén els tres LED
  movwf PORTC
  goto Bucle  ; Repetim-ho...
END main

Aquesta forma de treballar és útil per veure l'estat del polsador però no per a comptar les activacions o fer coses que depenguin del número de pulsacions. Si aquest fos el cas, consulteu com filtrar els rebots d'un polsador i l'exemple CP - Comptador amb polsador.

Si el polsador no funciona, assegureu-vos que heu marcat 3-State on 'Release from Reset' a la finestra de propietats del PICkit 2:

PICkit 2

Quan activem aquesta casella li estem dient al programador que es desconnecti del microcontrolador quan acabi de programar. Aquesta desconnexió, però, no és instantània i això pot produir funcionaments inesperats en aquells programes que comprovin l'estat del polsador poc després de que s'iniciï el programa. Per evitar aquests problemes podem posar un retard (per exemple, un segon) entre les inicialitzacions i el tros del programa on es mira el polsador.

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.