Forum: Mikrocontroller und Digitale Elektronik 16f690 Einstellungsproblem


von lukas R. (Gast)


Lesenswert?

Hi

Komm mir gerade wie der letzte **** vor. Normalerweise arbeit ich mit 
AD-chips und wollt mich mal interessehalber (und zwecks Gelegenheit) mal 
mit PIC's beschäftigen. Dachte es wird einfach, nur jetzt schaffs ich 
nicht mal nen einfachen Taster auszulesen und danach ne LED blinken zu 
lassen.

Also auf RA3 liegt der Taster auf RC0 die LED. Hardware passt. 
Initialisiert ist der µC (LED geht). Hier mein Code. (Bitte erschlagt 
mich nicht gleich bin im Krankenstand).

Vielen Dank schon mal

Lukas
1
void main(void)
2
{
3
  OSCCON=0x70;         
4
  TRISC = 0x00;         
5
  ANSEL = 0;           
6
  ANSELH = 0;          
7
  TRISA = 0x08;        
8
  PORTC = 0x00;
9
  while (1)
10
  {
11
    if (PORTA == 0x08)
12
     { 
13
    RC0 = 1;
14
    delay_ms(250);
15
     RC0 = 0;
16
    delay_ms(250);
17
      }
18
   }
19
}

von Ohforf S. (ohforf)


Lesenswert?

Warum fragst du den ganzen PortA ab, wenn nur ein Taster dranhängt ?
Das geht nur, wenn alle andern Portpins nen Pulldown haben.

von lukas R. (Gast)


Lesenswert?

Habs vorher eh mit if (RA == 1) versucht aber das hat auch nicht 
funktioniert. War n Versuch obs anders funnktioniert.

von Lehrmann M. (ubimbo)


Lesenswert?

Ich tippe auf die IN/OUT-Falle.

Näheres Dazu hier: 
http://www.sprut.de/electronic/pic/fallen/fallen.html#inout

Das passiert leider sehr häufig bei Bitmanipulationen.

Die neueren PICs (18F und aufsteigent) haben darum extra Register. Nur 
so zur Info: Beitrag "Unterschied: PORT und LAT?"

Weitere Vermutungen: Pullups ?! Die 16F haben sowas nicht intern.

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.