Hi, ich habe hier ein SparkFun SerLCD und da ist ein PIC16F88 drauf. Und den Code finde ich eher nicht so toll. Aber SparkFun stellt den Quellcode zur Verfügung und so wollte ich mich mal ein wenig mit dem Ding beschäftigen um PICs kennen zu lernen. Na okay, einfach so neu compilieren funktioniert nicht, ich habe MPLABX und XC8 installiert, erstellt wurde das Projekt wohl mit CC5X. Kann mir das hier mal bitte jemand in XC8 übersetzen?
1 | //Interrupt Vectors
|
2 | #pragma origin 4
|
3 | interrupt serverX( void) |
4 | {
|
5 | int_save_registers
|
6 | char sv_FSR = FSR; // save FSR if required |
7 | |
8 | |
9 | if(RCIF) //If we have received something from the computer store it in the RX_Array array |
10 | {
|
11 | |
12 | RX_In++; |
13 | if(RX_In == BUFFER_SIZE) RX_In = 0; |
14 | |
15 | RX_Array[RX_In] = RCREG; |
16 | }
|
17 | |
18 | |
19 | if(T0IF) //TMR0 Overflow Interrupt - Occurs every 1024us ~1ms |
20 | {
|
21 | backlight_counter++; |
22 | |
23 | |
24 | if(backlight_counter == 30) |
25 | {
|
26 | backlight_counter = 0; //30ms pulse width period |
27 | |
28 | if (brightness_setting > 0) BL_Control = 0; //Kick on the back light only if brightness setting is greater than 0 |
29 | }
|
30 | |
31 | |
32 | //Turn off back light after its assigned duration
|
33 | if(backlight_counter == brightness_setting) BL_Control = 1; |
34 | |
35 | T0IF = 0; //Clear Interrupt Flag |
36 | }
|
37 | |
38 | FSR = sv_FSR; // restore FSR if saved |
39 | int_restore_registers
|
40 | }
|
#pragma origin 4 Das dürfte mit dem XC8 schlicht überflüssig sein, oder? interrupt serverX( void) Wie schreibt man das korrekt für den PIC16F88? int_save_registers int_restore_registers Sind das Makros? Sind die mit dem XC8 auch überflüssig? if(RCIF) //If we have Kann man das mit dem PIC echt so machen? RCIF ist doch nur ein Bit in einem Register. Passt der Rest dann erstmal syntaktisch so? char Als Bonus-Frage, kennt der XC8 wirklich nur die uralt Daten Typen? Oder versteht der ohne eigene Defines dafür auch sowas wie uint8_t? Im Handbuch vom XC8 habe ich nur die klassischen Typen gefunden.