|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
救命啊!為什么16F877的EEPROM寫不進去 |
| 作者:bean_cheng 欄目:單片機 |
請問16F877的EEPROM為什么寫不進去啊 ,急啊 。! 求助那位大俠幫看看, 我用的仿真器是PICMATE 2002 編譯器是HI-TECH PICC Version 8.05PL2 下面是程序 #include <pic.h> main() { #asm BSF _STATUS,6 BCF _STATUS,5 //選定體2 MOVLW 06H //取地址 MOVWF _EEADR //送地址寄存器 MOVLW 01H //取數(shù)據(jù) MOVWF _EEDATA //送數(shù)據(jù)寄存器 BSF _STATUS,5 //選定體3 BCF _EECON1,7 //選定EEPROM為訪問對向 BSF _EECON1,2 //開放寫操作使能控制 BCF _INTCON,7 MOVLW 55H // MOVWF _EECON2 //送55H到寄存器EECON2 MOVLW 0AAH // MOVWF _EECON2 //送AAH到寄存器EECON2 BSF _EECON1,1 //啟動寫操作 BSF _INTCON,7 BCF _EECON1,2 //禁止寫操作發(fā)生 WAIT BTFSC _EECON1,1 GOTO WAIT BCF _STATUS,5 //選體2為當前體 BSF _STATUS,6 // MOVLW 06H //取地址 MOVWF _EEADR //送地址寄存器 BSF _STATUS,5 //選體3為當前體 BCF _EECON1,7 //選定EEPROM為訪問對象 BSF _EECON1,0 //啟動讀操作 BCF _STATUS,5 //體2為當前體 MOVF _EEDATA,W //取數(shù)據(jù) BCF _STATUS,6 //體0為當前體 MOVWF 50H // 數(shù)據(jù)移到體0地址為50H寄存器 #endasm while(1) {}; } //我的目的是將1寫入EEPROM 06 中 讀06將值放入FLASH 50中 //全速運行或單步運行EEDATA,EEADR,EECON1,EECON2均無變化,在WAIT出無停留 |
| 2樓: | >>參與討論 |
| 作者: systemchip 于 2006/6/2 18:00:00 發(fā)布:
你也牛,匯編式C語音 既然用C,何苦呢! main(void) { EEADR=0x06 EEDATA=0x55; EEPGD=0; WREN=1; GIE=0; EECON2=0x55; EECON2=0xaa; WR=1; while(WR); wait write finish WREN=0; ; EEADR=0x06; EEPGD=0; RD=1; DATA=EEDATA; while(1); } |
|
| 3樓: | >>參與討論 |
| 作者: stghl 于 2006/6/3 15:07:00 發(fā)布:
樓上兩位都費勁 HI-TECH PICC 里面就有EEPRAM的庫函數(shù), 5 EEPROM and FLASH MEMORY macros are defined for convenience and are available for chips that have EEPROM or FLASH MEMORY on-board. The predefined EEPROM and FLASH MEMORY macros can be used in the following manner: To write a byte-size VALUE to an address in EEPROM MEMORY: EEPROM_WRITE(address,VALUE); To read a byte of data from an address in EEPROM MEMORY, and store it in a variable: variable=EEPROM_READ(address); For convenience, EEPROM_SIZE predefines the total size of data EEPROM available on chip. To write a byte-size VALUE to an address in FLASH MEMORY: FLASH_WRITE(address,VALUE); To read a byte of data from an address in FLASH MEMORY, and store in in a variable: variable=FLASH_READ(address); |
|
| 4樓: | >>參與討論 |
| 作者: 騰飛HK 于 2006/6/7 1:19:00 發(fā)布:
re 匯編程序很少有人看的,很短的例外! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |