|
|||||||||||
| 技術(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 |
ICD 2 調(diào)試問(wèn)題 |
| 作者:shiaf 欄目:單片機(jī) |
我用 ICD 2 調(diào)試 PIC18F6620,寫(xiě)了個(gè)讀寫(xiě) 內(nèi)部 E2PROM 的程序。但在寫(xiě)的時(shí)候發(fā)現(xiàn)會(huì)復(fù)位,不知道是什么原因?看門(mén)狗是關(guān)閉的。請(qǐng)大家?guī)臀铱纯础?br> List P = 18F6620 List n = 0 #include <P18F6620.inc> #include "eeprom.inc" ORG 0000H NOP GOTO START NOP NOP GOTO INTERRUPT1 NOP NOP NOP NOP NOP GOTO INTERRUPT2 START: BCF TRISC,0 ; RC0 輸出 BSF RCON,IPEN ; 設(shè)置 2 級(jí)中斷優(yōu)先級(jí) BSF INTCON,GIEH ; 允許高優(yōu)先中斷 BSF INTCON,GIEL ; 允許低優(yōu)先中斷 BSF PIE2,EEIE ; 允許寫(xiě) EEPROM 中斷 BCF IPR2,EEIP ; 寫(xiě) EEPROM 中斷低優(yōu)先 CALL EE_DATA_INIT START1: MOVLW 0x40 MOVWF EE_SIZE,1 MOVLW READ_EE_DATA_BUFFER MOVWF EE_DATA_ADDR,1 CLRF EE_ADDRH,1 CLRF EE_ADDR,1 CALL READ_BLOCK_EEPROM MOVLW 0x40 MOVWF EE_SIZE,1 MOVLW WRITE_EE_DATA_BUFFER MOVWF EE_DATA_ADDR,1 CLRF EE_ADDRH,1 CLRF EE_ADDR,1 CALL WRITE_BLOCK_EEPROM MAIN: NOP NOP GOTO MAIN EE_DATA_INIT: MOVLB 2 CLRF EE_ADDRH,1 CLRF EE_ADDR,1 MOVLW READ_EE_DATA_BUFFER MOVWF EE_DATA_ADDR,1 CLRF EE_SIZE,1 CLRF EE_COUNT,1 RETURN READ_BYTE_EEPROM: ; 入口 EEADRH = EEPROM Address High Bytes ; EEADR = EEPROM Address Low Bytss ; 出口 W = EEPROM 里面的內(nèi)容 BCF EECON1, EEPGD ; Point to DATA MEMORY BSF EECON1, RD ; EEPROM Read MOVF EEDATA, W ; W = EEDATA RETURN WRITE_BYTE_EEPROM: ; 入口 EEADRH = EEPROM Address High Bytes ; EEADR = EEPROM Address Low Bytss ; WREG = DATA MOVWF EEDATA ; Data MEMORY VALUE to write BCF EECON1, EEPGD ; Point to DATA MEMORY BSF EECON1, WREN ; Enable writes BCF INTCON, GIE ; Disable Interrupts MOVLW 0x55 ; MOVWF EECON2 ; Write 55h MOVLW 0xaa ; MOVWF EECON2 ; Write AAh BSF EECON1, WR ; Set WR bit to begin write BSF INTCON, GIE ; Enable Interrupts RETURN READ_BLOCK_EEPROM: MOVLB 2 MOVLW 2 MOVWF FSR0H READ_BLOCK_EEPROM1: MOVF EE_DATA_ADDR,w,1 MOVWF FSR0L MOVF EE_ADDRH,w,1 ; MOVWF EEADRH ; Upper bits of Data MEMORY Address to read MOVF EE_ADDR,w,1 ; MOVWF EEADR ; Lower bits of Data MEMORY Address to read CALL READ_BYTE_EEPROM MOVWF INDF0 INCF EE_DATA_ADDR,1 INFSNZ EE_ADDR,1 INCF EE_ADDRH DECFSZ EE_SIZE,1 GOTO READ_BLOCK_EEPROM1 RETURN WRITE_BLOCK_EEPROM: MOVLB 2 MOVLW 2 MOVWF FSR0H WRITE_BLOCK_EEPROM1: BTFSC EECON1,WR GOTO WRITE_BLOCK_EEPROM1 MOVF EE_DATA_ADDR,w,1 MOVWF FSR0L MOVF EE_ADDRH,w,1 MOVWF EEADRH MOVF EE_ADDR,w,1 ; MOVWF EEADR ; Lower bits of Data MEMORY Address to read MOVF INDF0,w CALL WRITE_BYTE_EEPROM INCF EE_DATA_ADDR,1 INFSNZ EE_ADDR,1 INCF EE_ADDRH DECFSZ EE_SIZE,1 GOTO WRITE_BLOCK_EEPROM1 RETURN INTERRUPT1: RETFIE INTERRUPT2: ; 低優(yōu)先級(jí)中斷 MOVWF WREG_TEMP2,0 ; 保護(hù) WREG MOVF BSR,w,0 MOVWF BSR_TEMP2,0 ; 保護(hù) BSR MOVF STATUS,w,0 MOVWF STATUS_TEMP2 ; 保護(hù) STATUS BTFSC PIR2,EEIF CALL EEPROM_INT MOVF STATUS_TEMP2,w,0 MOVWF STATUS ; 還原 STATUS MOVF BSR_TEMP2,w,0 MOVWF BSR ; 還原 BSR MOVF WREG_TEMP2,w,0 ; 還原 WREG RETFIE EEPROM_INT: BCF PIR2,EEIF RETURN END 調(diào)用 WRITE_BLOCK_EEPROM 時(shí)復(fù)位,本來(lái)是想寫(xiě)64個(gè)字節(jié)到0開(kāi)始的地址,但發(fā)現(xiàn) 調(diào)用 WRITE_BYTE_EEPROM 不到 3 次就復(fù)位,好奇怪。 |
| 2樓: | >>參與討論 |
| 作者: shiaf 于 2003/2/12 17:19:00 發(fā)布:
奇怪,現(xiàn)在又行了。感覺(jué) ICD 2 怪怪的。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |