音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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)試問(wèn)題
我用 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
奇怪,現(xiàn)在又行了。感覺(jué) ICD 2 怪怪的。
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用PIC16C56實(shí)現(xiàn)硬件加密
高手請(qǐng)進(jìn)討論
求教燒錄器如何燒紫外線擦除芯片
16C450及16C550 DIP封裝及PLCC封裝,有哪位要嗎,價(jià)格特低!
請(qǐng)大家相告代16F84的OTP片子有什么型號(hào)的?
免費(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)