Hallo, brauche dringend Hilfe bei c Programmierung.
Ich will eine festgelegte Zahl erstmal einmal nach rechts shiften. da
habe ich auch hinbekommen:
1 | unsigned char Address_B= 0x76;
|
2 | unsigned int shift = 1;
|
3 |
|
4 | Adr_B= Address_B >> shift; //Adr_B = 0x3B
|
dann will ich diese Addresse erweitern, die soll dann auf eine neue
Addresse in das low byte gesetzt werden und in das High byte soll z.B.
0x02 rein, also sieht die variable dann so aus: neue_Addresse = 0x023B.
ich weuß nur nicht wie ich es hinbekomme, habs mit Speicherallokation
probiert aber ist irgendwie heikel.
zum Hintergrund: die Address_A soll einmal nach rechts geshiftet werden,
damit eine neue Addresse ensteht, da ich nur 7 bit benötige und dann
soll auf der Adresse nochmal 3 Stellen dazu kommen, die als
Selectregister dienen sollen, damit ich in meinem code auf bestimmte
routinen zugreifen kann.
1 | unsigned short *Adr_B;
|
2 | Adr_B = malloc(10*sizeof(*Adr_B));
|
3 | unsigned short *Bank_Addr_B;
|
4 | Bank_Addr_B = malloc(16*sizeof(*Bank_Addr_B));
|
5 | unsigned char *Bank_S_B = 0x02;
|
6 | Bank_S_B = malloc(10*sizeof(*Bank_S_B));
|
7 |
|
8 | for (j=0;j < 10;j++){
|
9 |
|
10 | if(j < 7){
|
11 | Bank_Addr_B[j] = &Adr_B[j];//die ersten 7 stellen von Adr_B werden ins Bank_Addr_B geladen
|
12 | }
|
13 | else{
|
14 | Bank_Addr_B[j] = &Bank_S_B[j-7];// dann werden hier die nächsten 3 Stellen für das Selectregister geladen
|
15 | }
|
16 |
|
17 | }
|
Hab nicht soviel Ahnung von C Programmierung bin aber dabei mich zu
erweitern.