ich habe Probleme mit der LCD Anzeige und bin jetzt mal ganz an den Anfang um die Ports zu testen. Mit folgenden simplen Zeilen.
Am Anfang beim setzen der Register funktionieren alle Pins mit dem kurzen 250ms Ein/Aus blinken. Danach wo alle in der Endlosschleife mit 500ms blinken sollen, bleibt P1.4 permanent auf ein und P1.5 bleibt permanent aus. Das sind die beiden Pins von TXD0/RXD0.
Warum funktionieren die nur kurz und dann nicht mehr? Ich kann mir das nicht erklären.
void main(void){ unsigned long int cnt; // Frequenz uint len; uint range; // Torbereich 0 ... 6 uchar tast; // Taster uchar mode; asm("FCLR I"); // Interrupt verhindern OSC_Ext_20Mhz(); // ext. Oszillator mit 20 MHz p0 = 0xfd; // Port 0 setzen prc2 = 1; // Protect 2 aus pd0 = 0b11111001; // LCD an P0.2 bis P0.7 Ausgang, // AN6 an P0.1 AD Kanal 6 // Protect 2 geht von selbst wieder an pd1 = 0b11111111; // Port 1.0 bis 1.7 Ausgang p1 = 0b11111111; // Port 1.0 bis 1.7 einschalten wait_ms(250); p1 = 0b00000000; // Port 1 alles aus pd3 = 0b00001111; // Port 3.0 bis 3.3 Ausgang p3 = 0b00001111; // Port 3.0 bis 3.3 einschalten wait_ms(250); p3 = 0b00000000; // Port 3 alles aus pur1=2; // Pullup on 4.5 com_init(); // COM mit 9600 baud 8N1 initialisieren txic = 5; // Interrupt Ebene 5 fuer Timer X (Y und Z sind // Ebene 0 d.h. nicht freigegeben) asm("FSET I"); // Interrupt erlauben while (1)// Loop \\{p1 = 0b11111111;p3 = 0b00001111; wait_ms(500);p1 = 0b00000000;p3 = 0b00000000;wait_ms(500);} }Tschau
Mr. Teflon
Edit:
okay, Tagelang gerätselt und nun nach dem Posting Fehler selbst entdeckt. Der Befehl com_init(); störte noch.
