|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
救命!為什么16F877的EEPROM寫(xiě)不進(jìn)去 |
| 作者:bean_cheng 欄目:單片機(jī) |
請(qǐng)問(wèn)16F877的EEPROM為什么寫(xiě)不進(jìn)去啊 ,急啊 !! 求助那位大俠幫看看, 我用的仿真器是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為訪問(wèn)對(duì)向 BSF _EECON1,2 //開(kāi)放寫(xiě)操作使能控制 BCF _INTCON,7 MOVLW 55H // MOVWF _EECON2 //送55H到寄存器EECON2 MOVLW 0AAH // MOVWF _EECON2 //送AAH到寄存器EECON2 BSF _EECON1,1 //啟動(dòng)寫(xiě)操作 BSF _INTCON,7 BCF _EECON1,2 //禁止寫(xiě)操作發(fā)生 WAIT BTFSC _EECON1,1 GOTO WAIT BCF _STATUS,5 //選體2為當(dāng)前體 BSF _STATUS,6 // MOVLW 06H //取地址 MOVWF _EEADR //送地址寄存器 BSF _STATUS,5 //選體3為當(dāng)前體 BCF _EECON1,7 //選定EEPROM為訪問(wèn)對(duì)象 BSF _EECON1,0 //啟動(dòng)讀操作 BCF _STATUS,5 //體2為當(dāng)前體 MOVF _EEDATA,W //取數(shù)據(jù) BCF _STATUS,6 //體0為當(dāng)前體 MOVWF 50H // 數(shù)據(jù)移到體0地址為50H寄存器 #endasm while(1) {}; } //我的目的是將1寫(xiě)入EEPROM 06 中 讀06將值放入FLASH 50中 //全速運(yùn)行或單步運(yùn)行EEDATA,EEADR,EECON1,EECON2均無(wú)變化,在WAIT出無(wú)停留 |
| 2樓: | >>參與討論 |
| 作者: systemchip 于 2006/6/2 18:00:00 發(fā)布:
你也牛,匯編式C語(yǔ)音 既然用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ā)布:
樓上兩位都費(fèi)勁 HI-TECH PICC 里面就有EEPRAM的庫(kù)函數(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èi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.hbjingang.com 浙ICP證030469號(hào) |