La lecture de l'état des broches d'entrée sur un PIC18
J'ai été en mesure d'obtenir les sorties de travail sur mon PIC et peut faire un tas de Led de danse sur et en dehors comme je l'ai mis de sortie différents verrous haut/bas. Cependant, je vais avoir beaucoup o difficulté de lecture dans l'état d'une broche.
Voir le code ci-dessous. J'ai configuré ma config, et de définir les TRISC en entrée et TRISB en sortie. Dans une boucle infinie, je vérifie pour voir si RC6 est élevé ou faible, et de définir l'ensemble B loquet haute ou basse en fonction du résultat.
#include <htc.h>
__CONFIG(1, FOSC_IRC & FCMEN_OFF & IESO_OFF);
__CONFIG(2, PWRTEN_OFF & BOREN_OFF & WDTEN_OFF);
__CONFIG(3, MCLRE_OFF);
__CONFIG(4, STVREN_ON & LVP_OFF & DEBUG_OFF);
__CONFIG(5, 0xFFFF);
__CONFIG(6, 0xFFFF);
__CONFIG(7, 0xFFFF);
void main(void)
{
TRISC = 0xFF; //input
TRISB = 0x00; //output
while (1)
{
if (PORTCbits.RC6 == 0)
LATB = 0b00000000;
else
LATB = 0b11111111;
}
return;
}
Le code se compile bien avec pas d'avertissements ou d'erreurs. Si ma logique de code est tout simplement le réglage de verrous haut et bas, alors, qui fonctionne très bien, mais je n'ai pas réussi à lire l'état d'une broche.
Des idées?
Je suis en utilisant un PIC18F14K50 et MPLAB v8.43 et le HiTech Compilateur C ANSI.
Mes connexions sont de +5V à la DMV (broche 1), VSS (broche 20) sur la terre. J'ai de +5V à C6 (broche 8), et une résistance de 100K et a B7 (pin 10) sur la terre. Pour basculer RC6, je me connecte/disconncet le fil à C6.
┌────────┐
+5v -│ 01 20 │- gnd
-│ 02 19 │-
-│ 03 18 │-
-│ 04 17 │-
-│ 05 16 │-
-│ 06 15 │-
-│ 07 14 │-
+5v -│ 08 13 │-
-│ 09 12 │-
led -│ 10 11 │-
└────────┘
Vous devez vous connecter pour publier un commentaire.
L'ADC épingles sur les Photos, malheureusement, sont configurés comme entrées analogiques sur la mise sous tension. Vous avez besoin de désactiver l'ADC fonctionnalités que la broche de l'utiliser comme une entrée numérique.
De compensation bit 0 de ANSELH sera mis RC6 à l'entrée numérique. Puis votre code fonctionne.
Ceci est documenté dans la feuille de données dans la section 9.4 : Port de Contrôle Analogique
PIC18F/LF1XK50 feuille de données
ANSEL = 0; ANSELH = 0;
au début de mamain()
méthode?La mise en...
...doit fixer seule la broche RC0 de PORTC que la broche d'entrée, toutes les autres broches sont définis comme à la sortie.
Donc
PORTCbits.RC6 == 0
ne doit pas renvoyer d'entrée correcte de l'état de RC6 pin.TRISC = 255
doit définir toutes les broches de la PORTC en entrée.Il est intéressant de mentionner que certains autres PIC18 variantes sont configurés différemment:
Sur PIC18F4520 et PIC18F4680 vous devez configurer les broches numériques elle fait à travers un ADCON1 registre, au lieu de ANSELH.
Définition d'un bits à 1 fera une broche numérique.
En plus de cela, vous avez besoin de leur faire broches d'entrée en mettre un bit à 1 dans le registre TRIS.