Problema Magsulat at basahin ang EEPROM ng 16F877A

V

vin2403

Guest
Halimbawa, isulat ang 22 sa 0xFF address sumulat 44 sa 0xFE address sumulat 88 sa 0xFC address kapag i read address 0xFF store 88 address 0xFE store 44 address 0xFC store 22 Bakit ito nangyayari? Maaari anumang pro Help
 
Maaari mong i-post ang code ang iyong ginagamit upang isulat ang data na iyon?
 
magpawalang-bisa saveData () {if (RB1 == 0 | | RB2 == 0) {antala (250); EEADR = 0xFF; EEDATA = hCount; WREN = 1; EECON2 = 0x55; EECON2 = 0xAA; WR = 1; habang ( WR == 1) magpatuloy; WREN = 0; EEADR = 0xFE; EEDATA = lCount; WREN = 1; EECON2 = 0x55; EECON2 = 0xAA; WR = 1; habang (WR == 1) magpatuloy; WREN = 0; EEADR = 0xFC; EEDATA = powCount; WREN = 1; EECON2 = 0x55; EECON2 = 0xAA; WR = 1; habang (WR == 1) magpatuloy; WREN = 0;}} void readData () {EEADR = 0xFF; powCount = EEDATA; Rd = 1; EEADR = 0xFE; hCount = EEDATA; Rd = 1; EEADR = 0xFC; lCount = EEDATA; Rd = 1;} kung i ilagay tulad ng TIS, i makuha ang aking ninanais na resulta, ngunit bakit, y ang data Ned basahin mula sa ibang address.
 
Isang bagay na paunawa ko kaagad ay na hindi ka Pagtatakda / Re-set EECON1 bit 7 na tumutukoy kung ang iyong isinusulat sa EEPROM o Programa ng data memory. EEPGD bit ng EECON1 magparehistro pangangailangan upang maging '0 '-access ang data memory. Sa "basahin" function, tila ikaw ay nagtatalaga ng halaga ng EEDATA bago ang pagtatakda ng "Rd" flag hanggang 1. Iyon ay nangangahulugang ang "lumang" value ay mailipat. Sa ibang salita, ang unang basahin ang pagtatangka iyong aktwal na mga feed ang huling data na iyong tinangka upang sumulat. Ang basahin ang function ay dapat magmukhang ganito:
Code:
 walang bisa readData () {EEADR = 0xFF; Rd = 1; powCount = EEDATA; EEADR = 0xFE; Rd = 1; hCount = EEDATA; EEADR = 0xFC; Rd = 1; lCount = EEDATA;}
Gayundin, hindi ko alam ang tungkol sa ang natitirang bahagi ng iyong code (pangunahin) ngunit dapat mong hindi paganahin ang interrupts (GIE bit) bago simulan ang sumulat / basahin ang pagkakasunod-sunod at muling paandarin ito bago bumabalik. Gayundin, walang Pinasimulan ng lCount, hCount o powCount nakikita, kaya hindi ako sigurado kung ano ang mga halaga ay naka-imbak sa mga variable. Huwag kalimutan na ang lahat ng mga variable ay KAILANGANG initialized (o nang direkta bibigyan ng isang halaga / resulta) dahil ang mga halaga sa startup ay hindi garantisadong upang maging zero o anumang bagay. Kung ikaw lamang na sinubukan pagdagdag hCount nang walang unang setting ito sa zero hindi ka maaaring maging sigurado kung ano ang makukuha mo.
 
yes, gumagana ito, salamat sa pagtulong, ay i-ingat susunod na i ginagamit.
 

Welcome to EDABoard.com

Sponsor

Back
Top