Gast
#903724
Hallo, hab mal eine Frage zum programmieren eines PIC Controllers. Ich habe mir das Programmier- und Experimentierboard von Velleman (P8048 / VM111) bei Conrad besorgt. Jetzt bin ich dran, ein paar Spielereien mit den LED und Tastern vorzunehmen, aber irgendwie will das gar nicht so recht funktionieren. Ich benutze die Entwicklungsumgebung PIKLAB und die GPUtils unter debian. Wenn ich die Bespielprogramme von der beigelegten CD reinschiebe funktioniert das alles wunderbar. Probiere ich aus, irgendetwas selbst zu schreiben, dann scheint das blöde Ding gar nicht zu reagieren. Entweder sind nach einem Reset alle LEDs an oder aus. Dabei wollte ich lediglich eine LED zum blinken bewegen, oder, solange eine Taste gedrückt ist, eine LED zum leuchten bringen. Was mache ich falsch? Sind irgendwelche Config Einstellungen zu beachten? Im Anschluss befindet sich das Prog, welches eine LED bei Tastendruck leuchten lassen soll. PORTB<0:5> sind die LEDS und PORTA<0:3> die Taster. Ich weiß echt nicht weiter, selbst das Umsetzen der Beispiele bei sprut.de laufen irgendwie nicht. Wird hängt der sich in irgendeiner Schleife auf? Springt evtl. ein Interrupt an? WDT ist aus, somit sollte die Fehlerquelle nicht in Betracht kommen. Schon einmal vielen Dank im voraus für Eure Hilfe. Gruß, Thomas ; ----------------------------------------------------------------------- ; Template source file generated by piklab #include <p16f627.inc> ; ----------------------------------------------------------------------- ; Configuration bits: adapt to your setup and needs __CONFIG _WDT_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _BODEN_ON & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ; ----------------------------------------------------------------------- ; Variables declaration INT_VAR UDATA_SHR w_saved RES 1 ; variable used for context saving status_saved RES 1 ; variable used for context saving var1 RES 1 ; Beispiel-Variable ; ----------------------------------------------------------------------- ; reset vector STARTUP CODE 0x000 nop ; Benötigt für ICD2-Debugging movlw high Reset ; load upper byte of 'start' label movwf PCLATH ; initialize PCLATH goto Reset ; go to start of main code ; interrupt vector INT_VECTOR CODE 0x004 goto interrupt ; go to start of interrupt code ; relocatable code PROG CODE interrupt movwf w_saved ; save context swapf STATUS,w movwf status_saved ; << insert interrupt code >> swapf status_saved,w ; restore context movwf STATUS swapf w_saved,f swapf w_saved,w retfie Reset bsf STATUS,RP0 movlw b'00001111' movwf TRISA movlw b'00111111' movwf TRISB bcf STATUS,RP0 bcf INTCON,GIE bcf INTCON,INTF bcf CMCON,CM2 bcf CMCON,CM1 bcf CMCON,CM0 ; clrf PORTB start movf PORTA,W movwf PORTB,F goto start ; loop forever END