Hallo, ich muss einen Assembler-Code an einen anderen PIC anpassen. Ich habe bis jetzt nur in C programmiert. Habe aber leider quasi keine Ahnung von Assembler. Hier der Code für den PIC24FJ128GA010. Handelt sich übrigens um einen Ausschnitt aus einem Bootloader. Alles andere bis auf diese UART-Pin-Zuweisung war einfach umzuschreiben. Beim PIC24FJ128GA010 sind RX und TX fest auf zwei PINs gelegt. Beim dem PCI auf den ich das ganze anpassen muss, gibt es Peripheral Pin Select. Hier erstmal der Assembler-Code:
1 | ;---------------------------------------------------------------------- |
2 | ; UART pps config |
3 | ;---------------------------------------------------------------------- |
4 | .ifdef HAS_PPS |
5 | .error "UART pps is not configured. Read datasheet and configure pps." ;xxx remove this line |
6 | |
7 | ; ** IMPORTANT ** |
8 | ; |
9 | ; THIS CODE IS JUST A TEMPLATE AND WILL MOST LIKELY NOT WORK FOR YOU, |
10 | ; READ THE DATASHEET AND ALTER LINES MARKED WITH XXX |
11 | ; |
12 | ; ** IMPORTANT ** |
13 | |
14 | ; Backup, these are restored in exit code at end of file |
15 | ; Changes needs to be done in exit, search for xxx |
16 | mov RPINR18, WPPSTEMP1 ;xxx |
17 | mov RPOR3, WPPSTEMP2 ;xxx |
18 | |
19 | ; Receive, map pin to uart |
20 | bclr RPINR18, #U1RXR0 ;xxx |
21 | bclr RPINR18, #U1RXR1 ;xxx |
22 | bclr RPINR18, #U1RXR2 ;xxx |
23 | bclr RPINR18, #U1RXR3 ;xxx |
24 | bclr RPINR18, #U1RXR4 ;xxx |
25 | bclr RPINR18, #U1RXR5 ;xxx |
26 | |
27 | ; Transmit, map uart to pin |
28 | bset RPOR3, #RP7R0 ;xxx |
29 | bset RPOR3, #RP7R1 ;xxx |
30 | bclr RPOR3, #RP7R2 ;xxx |
31 | bclr RPOR3, #RP7R3 ;xxx |
32 | bclr RPOR3, #RP7R4 ;xxx |
33 | bclr RPOR3, #RP7R5 ;xxx |
34 | .endif |
1 | ;------------------------------------------------------------------------------ |
2 | ; Register usage |
3 | ;------------------------------------------------------------------------------ |
4 | .equ WPPSTEMP1, W6 ;used to restore pps register |
5 | .equ WPPSTEMP2, W7 ;used to restore pps register |
Hier die PIN-Zuweisung in C für meinen PIC24FJ128GA106 mit Peripheral Pin Select.
1 | //U1RX = RP22
|
2 | RPINR18bits.U1RXR = 22; |
3 | |
4 | //RP25 = U1TX_IO
|
5 | RPOR12bits.RP25R = U1TX_IO; |
Wie muss ich den Assemble-Code für den PIC24FJ128GA106 anpassen? Gruß Dieter