üdvözlet.
PIC epromjába szeretnék irni, meg onnan kiolvasni értékeket,ezzel 255-ig nincs probléma viszont most 1 és 3400 közötti értékeket kell mentenem.
Megoldható?
:vs
üdvözlet.
PIC epromjába szeretnék irni, meg onnan kiolvasni értékeket,ezzel 255-ig nincs probléma viszont most 1 és 3400 közötti értékeket kell mentenem.
Megoldható?
:vs
Szia!
Megoldhato, csak 2 byte-ban kell tárolni. Pl adatHI és adalLO.
0
üdvözlet.
Ezt kérhetném bővebben kifejteni?
Arra gondoltam, hogy elkellene felezni valahogy az értéket 3010 azt 30 és 10 és beirni két cimre?
Igy valahogy?
:vs
0
Mindegy hogyan, az a lényeg olyan alakúvá alakítod aminek egy eleme kisebb mint 255. és ezeket az elemeket egyesével eltárolod.
0
eeprom.adat -ból írod be
eeprom.in_1 = eeprom.adat & 0xFF
eeprom.in_2 = eeprom.adat >> 8
Aztán mondjuk a 0. cimre irod az eeprom.in_1 változót az 1. cimre meg a eeprom.in_2 változót.
Kiolvasás pont fordítva, tehát a két cimet kiolvasod és összerakod egy változóba.
0.cim eeprom.out_1
1.cim eeprom.out_2
eeprom.adat_ki = eeprom.out_2 << 8
eeprom.adat_ki = eeprom.adat_ki | eeprom.out_1
eep_result = eeprom.adat_ki
eep_result-ban kapod vissza az értéket
2
üdvözlet.
Köszönöm, szoke levezetése után megértettem ezt is, ez ha jól gondolom ezt ugyanazt teszi.
:vs
0
Szia.
Nem!
Csinálsz egy maradék nélküli osztást, ennek ez értékét az egyik byte-on tárolod és a maradékot a másikon.
pl:
3010 / 256 = 11,.....
11-et tárolsz az egyik byte-on
3010 - (256*11) = 3010 - (2816) = 194
és 194-öt a másik byte-on.
vissza számolva: (első byte)*256 + (második byte)
11*256+194=3010
1
üdvözlet.
Megértettem a levezetést, köszönöm !
:vs
0
Szia!
Az értéket honnan veszed (kapod), amit le karsz tárolni?
0
üdvözlet.
kapom.
:vs
0
Szia!
Ennél egy kicsit konkrétabban, milyen formában kapot? Soros port, I2C, infra?
0
üdvözlet.
Nem külső forrásból kapom.
Egy gép alap és utolsó beállításait tartalmazzák az adatok amiket tárolni kell.
Az értékek nem fértek bele 255-be ezért kellett megoldás az ezres nagyságrendi számok tárolására.
:vs
0
Hi!
Szerintem decimalis alapból nincs a PIC -ben, az adc meg 2 bájtban adja.
0
Szia.
Matematikai oldalról próbáltam megközelíteni a dolgot, mert gyanítom, hogy a kérdező nem túl járatos PIC-ben.
Még azt sem tudjuk miben programozza.
0
Szia
Adathi=0b, adatlo=c2
0
Az eepromban cimek vannak és ahhoz rendelve byte 0-255
Hexát hogyan lehet beleírni ?
1
Most már nem mobilról vagyok, így elmagyarázom. A hexa ugyanúgy lehet 0-255, csak úgy írják, hogy 0x00 - 0xFF. De lehetne binárisat is írni bele, pl b00000000 - b11111111.
A 3400 viszont már nem fér el egy bájton, és amúgy is ritkán keletkezik hogy decimális 3400, inkább úgy, hogy 0x0d48. A felső bájt 0D, az alsó bájt 48 HEXÁBAN. Na ezt a két bájtot kell letárolni.
0
Movlw 0xC5
Movwf adatHI
0
Asszem nem. Te valahova máshova írsz.
0
Jó, hát az asm magas néked.
0
Igen, az !
UFF, UFF, UFF
Ez egyszerre 3db UFF
1
A dB-t nagy B vele kell írni!
De írhatsz BCD adatokat is a PIC regisztereibe.
0