0
このコードは、EEPROMから4桁の番号を書き込み書き込みできます。 For Ex: 2356
5ビットのEEPROM読み取りと書き込み
コード;
void WritePassToEEPROM(uint16_t pass)
{
EEPROMWrite(0000,(pass%100));
EEPROMWrite(0001,(pass/100));
}
uint16_t ReadPassFromEEPROM()
{
return (EEPROMRead(0001)*100 + EEPROMRead(0000));
}
Write_Pass_To_EEPROM()
関数は2つのアドレス0000
と0001
に書き込みます。 2356
の場合、2356%100
が56
であり、2356/100
が23
である。だから、アドレス0000
でそれは56になり、アドレス0001
でそれは23
になります。 EEPROM_Read(0000)
を読むと、34
とEEPROM_Read(0001)*100
が返され、2300
が返されます。 2300 + 56
は2356
です。
しかし、私は65238
のように5
の数字を書く必要があります。どうすればいいですか?
なぜ、各バイトの61%をそんなに浪費しますか? –
なぜ* decimal *算術を使うのですか?符号なし整数としての16ビット(2バイト)は、 '0'と '65535'(両端を含む)の間の値を含むことができます。 –
もし彼が '99999'(16ビットが小さすぎる、32が大きすぎる)などのものを保存したいなら、24ビットか何かに行ってください...もしかすると、古いかっこいいハードウェア/ソフトウェアそれはBCDで動作しますか? – 3442