AD1) Zastąpienie stałą 164 powoduje ze wyświetlane są same dwójki czyli tak jak powinno to wyglądać.
AD2) Z ramu również odczytuje poprawnie i działa jak należy.
AD3) Co do tego to ja miałem w programie deklaracje taką:
Ale przy przepisywaniu mi to umknęło. Jeżeli zmienię na:
to kompilator wywala błąd:
ISO C++ forbids declaration of ‘g_Which’ with no type
AD4) Nigdy wczesniej tego nie robilem ale mysle ze dam rade. Napisałem program ktory robi konwersje za pomocą reinterpret_cast<> ze wskaźnika do uint8_t na int i przerobiłem ta liczbe na system hexadecymalny i wyswietlilem na wyswiewtlaczu. Mam dwie tablice o nazwie g_Cyfry jedna w pamieci programu a jedna w RAM'ie . Adres otrzymany na wyswietlaczu to 0x60.
Nie wiem natomiast jak szukać tego adresu w pliku .hex dlatego skopiuję go tutaj:
:100000000AC023C022C021C020C09CC0C6C01DC0E1
:100010001CC01BC01AC011241FBECFEDCDBF10E005
:10002000A0E6B0E0E2E5F2E003C0C89531960D929B
:10003000A037B107D1F710E0A0E7B0E001C01D92F2
:10004000A737B107E1F74AD002C1DACFDF93CF93E8
:1000500000D0CDB7DEB79A838983ECE4F0E08981E4
:100060008083EDE4F0E089819A81892F992780834C
:100070000F900F90CF91DF910895DF93CF9300D031
:1000800000D0CDB7DEB79C838B838B819C818A8324
:100090001982198219C08981282F30E08A81882F1E
:1000A00090E08F709070E82FF92FE05AFF4F808119
:1000B000E22FF32FE059FF4F80838A8182958F7062
:1000C0008A8389818F5F89838981843020F30F90AF
:1000D0000F900F900F90CF91DF910895DF93CF9302
:1000E000CDB7DEB7E1E3F0E088E78083E2E3F0E05C
:1000F00083E08083E7E3F0E08FEF8083E8E3F0E0E4
:100100008FEF8083AFE5B0E0EFE5F0E080818068BD
:100110008C93A3E5B0E0E3E5F0E0808183608C930D
:10012000AEE4B0E0EEE4F0E0808182608C93A9E57B
:10013000B0E0E9E5F0E0808182688C9380E690E0B1
:100140009CDFFCCF1F920F920FB60F9211242F93BA
:100150003F934F935F936F937F938F939F93AF934F
:10016000BF93EF93FF93DF93CF93CDB7DEB78FEAC3
:100170009CE36CDFCF91DF91FF91EF91BF91AF9145
:100180009F918F917F916F915F914F913F912F91AF
:100190000F900FBE0F901F9018951F920F920FB6E1
:1001A0000F9211242F933F934F935F938F939F93BD
:1001B000AF93BF93EF93FF93DF93CF93CDB7DEB7AA
:1001C000A2E3B0E0E2E3F0E0808188678C93A8E3EB
:1001D000B0E080917600882F90E0E82FF92FE05969
:1001E000FF4F80818C93A2E3B0E0E2E3F0E08081F6
:1001F000482F50917600852F90E0282F392F2D5FC2
:100200003F4F81E090E0022E02C0880F991F0A94B0
:10021000E2F7809584238C93852F8F5F80937600FF
:1002200080917600843010F010927600CF91DF91AB
:10023000FF91EF91BF91AF919F918F915F914F91FE
:100240003F912F910F900FBE0F901F901895F8942B
:02025000FFCFDE
:10025200C0F9A4B0999282F880908883A7A1868E73
:00000001FF
A oto część programu odpowiedzialna za wyswietlenie adresu na wysiwetlaczu:
prog_uint8_t g_Cyfry[16]={192,249,164,176,153,146,130,248,128,144,136,131,167,161,134,142};
uint8_t g_Cyfry1[16]={192,249,164,176,153,146,130,248,128,144,136,131,167,161,134,142};
....
void DispHex(uint8_t * ptr)
{
uint8_t n;
n=reinterpret_cast<int>(ptr);
uint8_t i=0;
for(i=0;i<=3;i++)
{
g_LED[i]=g_Cyfry1[n%16];
n/=16;
}
}
int main(void)
{
/////////////////////////////////////////////////////////////////////
//inicjacja
..........
while(1)
{
DispHex(g_Cyfry);
}
return 0;
}
AD5) Nie nic nie zmienia.