ඊප්රොම් ( E.E.P.R.O.M )
PIC16F84A ඔබට බයිට් හැට හතරක ස්ථීර මතකයක් ලබා දේ. මෙම මතකය තුලට ලියන දෑ විදුලිය විසන්දි වූ විටකදී පවා නැතිව නොයන අතර මෙහි දත්ත අවුරුදු හතළිහක් පමණ නොමැකී පවතින බව නිෂ්පාදකයාගේ දත්ත සටහන පවසයි. ඊප්රොම් මතකය ලිවීම සෘජුව කල නොහැකි අතර ඒ සඳහා වක්රීය ක්රමයක් භාවිතා කල යුතුය. මෙම කිරීම සඳහා රෙජිස්ටර් හතරක් භාවිතා වේ. ඒවා නම්..
EEADR
EEDATA
EECON 1
EECON 2
ඔබට ලිවීමට අවශ්ය දත්තය EEDATA රෙජිස්ටරයටද ඔබට ලිවීමට අවශ්ය ඇඩ් රස් එක EEADR රෙජිස්ටරයටද ලිවීමෙන් පසු WREN බිට් එක සෙට් කිරීමෙන් දත්ත ලිවීම සක්රීය කරයි.ඉන් අමතරව 0X55 , 0XAA යන අගයන් EECON2 රෙජිස්ටරයට ලිවීම අත්යවශ්ය බව නිෂ්පාදකය පවසයි.මෙසේ කරන්නේ යම් දෝෂයක් නිසා ඊප්රොම් ඉබේ ලිවීම වලකා ගැනීමටය. ඉන් පසුව WR බිට් එක සෙට් කිරීමෙන් ඊප්රොම් ලියවීම ආරම්භ වන අතර ලියවී ඉවර වූ වහාම බිට් එක ක්ලියර් වන බැවින් එය පරීක්ෂා කිරීමෙන් ලියවී හමාර වී ද යන වග දැන ගත හැක .සාම්පල් කෝඩ් එකක් පහත දැක්වේ.
BSF STATUS,RP0
MOVF ADDRESS,W ; Move address to
W
MOVWF EEADR ; Write address
MOVF DATA,W ; Move data
to W
MOVWF EEDATA ; Write data
BCF EECON1,EEPGD ; Select EEPROM
BSF EECON1,WREN ; Write to EEPROM
enabled
BCF INCON,GIE ; All
interrupts disabled
MOVLW 55h ; required sequence start
MOVWF EECON2
MOVLW AAh
MOVWF EECON2 ; Required sequence end
BSF EECON1,WR
BTFSC EECON,WR1 ; Wait for the previous write to complete
GOTO $-1 ;
BSF INTCON,GIE ; Interrupts
enabled
ඊප්රොම් කියවීම
මෙය ලිවීම තරම් සංකීර්ණ නොවේ. ඔබට කියවීම අවශ්ය ඇඩ්රස් එක EEADR රෙජිස්ටරයට ලියා RD බිට් එක සෙට් කල විට එම ඇඩ්රස් එකේ ඇති දත්තය EEDATA රෙජිස්ටරයට පැමිණේ. සාම්පල් කෝඩ් එකක් පහත දැක්වේ.
BSF STATUS,RP1 ;
BCF STATUS,RP0 ; Access bank 2
MOVF ADDRESS,W ; Move address
to the W register
MOVWF EEADR ; Write address
BSF STATUS,RP0 ; Access bank 3
BCF EECON1,EEPGD ; Select EEPROM
BSF EECON1,RD ; Read data
MOVF EEDATA,W
; Data is stored in the W register
ඊප්රොම් ප්රායෝගික පරීකක්ෂාව සඳහා අප විසින් සරල ඇටවුමක් සාදා ඇති අතර එහිදී පොර්ට් බී වෙත අමුණා ඇති එල් ඊ ඩී අටෙන් බින්දුවේ සිට දෙසිය පනස්පහ දක්වා ඉහලට ගනිමින් ඒ අගයන් පොර්ට් බී වෙතින් නිරූපණය කරයි. ඔබ යම් අවස්ථාවක මයික්රෝ ස්විච් එක තද කලේ නම් එම මොහොතේ පොර්ට් බී වෙත තිබූ අගය ඊප්රොම් එකේ සීරෝ වන ඇඩ්රස් එකේ ගබඩා වේ. ඉන් පසු පරිපථයට විදුලිය විසන්දි කොට යම් වේලාවකට අනතුරුව නැවත විදුලිය සැපයූ විට ඔබට පරිපථය ඔබ එම බොත්තම තදකල ස්ථානයේ සිට ඉහලට ගනිනු දැක ගත හැක. මෙහිදී සිදුවන්නේ බලය සැපයූ විට ඊප්රොම් කියවා එම අගය පොර්ට් බී වෙත ලබාදී එතැන සිට ඉහලට ගැනීමයි.
find code on https://github.com/mikrohouse/asm-tutorials/tree/main/EEPROM
Comments
Post a Comment