2011-05-11 1 views
2

J'utilise une carte PICkit2 Low Pin Count Demo avec une puce 16f690. J'ai été capable d'écrire un code simple pour allumer et éteindre les LEDs, mais en essayant d'utiliser le bouton poussoir pour changer l'état des LED, j'ai été incapable de le faire. Mon code est ci-dessous, avec un lien vers le schéma de l'appareil.PICkit2 clignotant led avec le bouton

#include <htc.h> 

__CONFIG(MCLRE_OFF & BOREN_OFF & PWRTE_OFF & IESO_OFF & CP_OFF & FCMEN_ON); 

void main() 
{ 
    //initialization 
    TRISAbits.RA3 = 1;  //make button (RA3) input 
    TRISCbits.RC0 = 0;  //make LED (RC0) output 

    for(;;)     // loop forever 
    { 
     //set RC0 if RA3 is low (button pressed), else clear RC0 
     if(PORTAbits.RA3) 
     { 
      RC0 = 1; 
     } 
     else 
     { 
      RC0 = 0; 
     } 
    } 
} 

Demo Board User’s Guide

+0

Avez-vous connecté JP5 sur votre carte de développement? –

Répondre

4

RA3 est/MCLR, le tableau 3 de la fiche technique indique que le pullup sur cette broche est activée uniquement avec la configuration externe/MCLR. S'il n'y a pas de pullup, vous n'obtiendrez pas de changements. Est-ce que la broche est continuellement haute ou basse? J'éviterais d'utiliser RA3, au moins pendant le débogage, et si vous devez l'utiliser dans le code de version, changez le code pour un autre lors du débogage.

Un autre problème courant avec PORTA est qu'il s'agit par défaut d'un port d'entrée analogique. Les bits ANSEL sont définis et doivent être effacés pour être utilisés comme entrée numérique, mais RA3 n'est pas mappé sur une entrée analogique.

1

J'ai rencontré le même problème et j'ai découvert ce qui suit.

Dans les paramètres du programmateur pour l'IDE MPLAB, cochez la case "3-State on Release from Reset". J'ai également changé le fichier d'en-tête inclus de "htc.h" en "pic.h", le bouton fonctionne maintenant.