Hi,
Ich programmiere in Assembler und da muss man die Ports definieren
(als Aus/Eingang).
Muss man das bei der Hochsprache nicht?
Oder ist es das hier : output_d(0x00); (in deinem Programm)
Wenn ja dann hast du dich vertippt (_d statt _b)
Gruß David
Hiho liebe Robogemeinde,
ich habe folgendes programm geschrieben:
Es soll ein lauflicht sein auf PORT B bzw D (hatte es vorher mit PORT D), es sollte eine LED nach der anderen ein und ausgeschaltet werden, mein Problem ist, dass der PIC am PORT D nur 4 LEDS einschaltet und am PORT B nur 3 und dann neustartet. könnt ihr mir weiterhelfen?Code:#include <16F877.h> #use delay(clock=4000000) #fuses XT,NOWDT,NOLVP,NOPROTECT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) #org 0x1F00, 0x1FFF {} //Bootloader void main() { for(;;) { output_d(0x00); delay_ms(250); output_high(PIN_B0); delay_ms(250); output_low(PIN_B0); delay_ms(250); output_high(PIN_B1); delay_ms(250); output_low(PIN_B1); delay_ms(250); output_high(PIN_b2); delay_ms(250); output_low(PIN_b2); delay_ms(250); output_high(PIN_b3); delay_ms(250); output_low(PIN_b3); delay_ms(250); output_high(PIN_b4); delay_ms(250); output_low(PIN_b4); delay_ms(250); output_high(PIN_b5); delay_ms(250); output_low(PIN_b5); delay_ms(250); output_high(PIN_b6); delay_ms(250); output_low(PIN_b6); delay_ms(250); output_high(PIN_b7); delay_ms(250); output_low(PIN_b7); } }
bei einem PIC16F877A funkt es problemlos, mein PIC16F877 ist 4 Mhz beschränkt und ich benütze einen 4 Mhz Oszilator.
der Schaltplan ist hier hinterlegt:
https://www.roboternetz.de/phpBB2/ze...918&highlight=
keine leere Signatur möglich
Hi,
Ich programmiere in Assembler und da muss man die Ports definieren
(als Aus/Eingang).
Muss man das bei der Hochsprache nicht?
Oder ist es das hier : output_d(0x00); (in deinem Programm)
Wenn ja dann hast du dich vertippt (_d statt _b)
Gruß David
hiho,
danke für den hinweiß, ich hatte im programm TRIS gesetzt (ist es für ein/ausgang) warum es hier nicht dabei ist, weiß ich nicht. unD wegen D und B, ist nicht vertippt, ich hatte es vorher am PORT D, und jetzt auf PORT B, weil ich gedacht habe, vielleicht hat der PORT was
keine leere Signatur möglich
Stell doch mal das Ganze Programm rein.
So wie es in deinem Pic ist (Port B).
Dann kann man dir evtl. besser helfen.
Gruß David
hier bitteschön:
aber wie gesagt, das selbe wie oben, nur 1 zeile weniger, wahrscheinlich vergesssen mitzukopieren:
Code:#include <16F877.h> #use delay(clock=4000000) #fuses XT,NOWDT,NOLVP,NOPROTECT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) #org 0x1F00, 0x1FFF {} //Bootloader void main() { set_tris_B(0x00); for(;;) { output_d(0x00); delay_ms(250); output_high(PIN_B0); delay_ms(250); output_low(PIN_B0); delay_ms(250); output_high(PIN_B1); delay_ms(250); output_low(PIN_B1); delay_ms(250); output_high(PIN_b2); delay_ms(250); output_low(PIN_b2); delay_ms(250); output_high(PIN_b3); delay_ms(250); output_low(PIN_b3); delay_ms(250); output_high(PIN_b4); delay_ms(250); output_low(PIN_b4); delay_ms(250); output_high(PIN_b5); delay_ms(250); output_low(PIN_b5); delay_ms(250); output_high(PIN_b6); delay_ms(250); output_low(PIN_b6); delay_ms(250); output_high(PIN_b7); delay_ms(250); output_low(PIN_b7); } }
hiho,
das problem hat sich geändert
es ist der PORT B Pin 4, wenn ich ein stück draht nehme, dieses an den PORTPIN anhalte reset der PIC, ohne auf der gegensstelle was zu haben.
weiters wenn ich output_B(0xff) benütze, startet er auch neu, wenn ich den code wie oben beütze, funktionert es nur das die LED am PIN 4 nicht leuchtet, einen draht ran und er startet neu.
hoffe das mir jmd helfen kann.
keine leere Signatur möglich
Beim 877 ist ja PortB.3 der PGM-Pin für die Low-Voltage-Programmierung.
Jetzt weiß ich aber nicht, ob du das LVP nicht eh' abgedreht hast
Ich weiß auch nicht, wie der Pin auf Mißhandlung reagiert.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hallo,
ich wußte, das es für programmierung ist, aber ich dachte, zumindest glaubte ich, dass man den weiters also normalen I/O PIN verwenden kann wenn man LVP nicht aktiv hat, und was verstehst du unter Mißhandlung? ich tue ja nicht ausser versuchen den anzusteuern![]()
keine leere Signatur möglich
wenn du im "__config" (fuses) den LVP abgedreht hast (und auch in den PIC übertragen hast ?) ist das schon ok. Hätt ja sein können, wenn er geheimnisvoll restartet.
Mit PinB4 hätt' das aber nix zu tun.
*murmel*
Blöde Frage: Reset ist hoch-gepullt ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hiho.
naja, es ist PIN 4 wenn man bei 1 beginnt, und nicht 0-7.
ja der ist mit 10k hochgepullt, so hab ich es zumindest gelesen, getestetn und hat funktioniert.
keine leere Signatur möglich
Lesezeichen