|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请给这个EEPROM 读写程序修正一下 |
作者:春来 栏目:单片机 |
我使用F630但是读写EEPROM成功不了布置始麽原因,列出来请高手指正: BSF STATUS,rp0; EEPROM写 地址20 低八位 movlw 20H movwf EEADR bcf status,rp0 movf temp9,w ;数据存储单元 bsf status,rp0 movwf EEDATA ;LOW 8BIT BCF INTCON,GIE ;关中断 BSF EECON1,WREN MOVLW 55 MOVWF EECON2 MOVLW 0XAA MOVWF EECON2 BSF EECON1,WR NOP NOP NOP nop movlw 21H ;EEPROM 写地址21 高八位 movwf EEADR bcf status,rp0 movf temp8 ;数据存储单元 bsf status,rp0 movwf EEDATA;HIGH 8BIT BSF EECON1,WREN MOVLW 55 MOVWF EECON2 MOVLW 0XAA MOVWF EECON2 BSF EECON1,WR BSF INTCON,GIE bcf STATUS,rp0 call dly1ms goto kCM ;返回程序 ; ; ; ; cb1 bsf status,rp0 ;读低八位 rrr movlw 20h movwf EEADR bsf EECON1,RD MOVF EEDATA,W BCF STATUS,rp0 MOVWF temp9 ;数据存放地 bsf status,rp0 movlw 21h ;读高八位 movwf EEADR bsf EECON1,RD MOVF EEDATA,W bcf status,rp0 MOVWF temp8;HIGH 8BIT; 数据存放 nop bsf portc,4 返回程序 |
2楼: | >>参与讨论 |
作者: OYGGJ 于 2005/3/15 21:16:00 发布:
先判WR,你还要加校验写是否正确. btfsc EECON1,WR goto $-1 BSF STATUS,rp0; EEPROM写 地址20 低八位 movlw 20H movwf EEADR bcf status,rp0 movf temp9,w ;数据存储单元 bsf status,rp0 movwf EEDATA ;LOW 8BIT BCF INTCON,GIE ;关中断 BSF EECON1,WREN MOVLW 55 MOVWF EECON2 MOVLW 0XAA MOVWF EECON2 BSF EECON1,WR btfsc EECON1,WR goto $-1 movlw 21H ;EEPROM 写地址21 高八位 movwf EEADR bcf status,rp0 movf temp8 ;数据存储单元 bsf status,rp0 movwf EEDATA;HIGH 8BIT BSF EECON1,WREN MOVLW 55 MOVWF EECON2 MOVLW 0XAA MOVWF EECON2 BSF EECON1,WR BSF INTCON,GIE bcf STATUS,rp0 ; call dly1ms btfsc EECON1,WR goto $-1 goto kCM ;返回程序 ; ; ; ; cb1 btfsc EECON1,WR retlw 0h bsf status,rp0 ;读低八位 rrr movlw 20h movwf EEADR bsf EECON1,RD MOVF EEDATA,W BCF STATUS,rp0 MOVWF temp9 ;数据存放地 bsf status,rp0 movlw 21h ;读高八位 movwf EEADR bsf EECON1,RD MOVF EEDATA,W bcf status,rp0 MOVWF temp8;HIGH 8BIT; 数据存放 nop bsf portc,4 返回程序 |
3楼: | >>参与讨论 |
作者: martin 于 2005/3/16 16:17:00 发布:
0x55,0xaa 如果你的MPLAB没该设定的话,你写的MOVLW 55是赋一个十进制55。 |
4楼: | >>参与讨论 |
作者: 龙斌 于 2005/3/17 10:35:00 发布:
我用18F452读写不了。大虾帮我看看。 uchar ReadEEPROM(uchar data_ee_addr) { EEDATA = 0; EEADR = data_ee_addr; EECON1bits.EEPGD = 0; EECON1bits.CFGS = 0; EECON1bits.RD = 1; return (EEDATA); } void WriteEEPROM(uchar data_ee_addr,uchar data_ee_data) { while (EECON1bits.WR); EEADR = data_ee_addr; EEDATA = data_ee_data; EECON1bits.EEPGD = 0; //access Data EEPROM MEMORY EECON1bits.CFGS = 0; //access FLASH Program or Data EEPROM INTCONbits.GIE = 0; EECON1bits.WREN = 1; EECON2 = 0X55; EECON2 = 0XAA; EECON1bits.WR = 1; while (EECON1bits.WR); EECON1bits.WREN = 0; INTCONbits.GIE = 1; } |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |