Re: 求救 16F690 EEPROM 搞不定 !
|
||||
---|---|---|---|---|
資深會員
|
我真的很想把這文章關掉 但天不從
睡眠不足 心情不好 才 PO 了上來 有關 ( 3 ) : 我忘記加 TO_WRITE 的旗標測試 當然會一直停在這裡 而且 EE_DAT 我也忘了更新 但雖然更正後 只要一執行到這裡它依舊停在這裡 這是參考 DATA SHEET 的範例 我也試過 右邊範例程式中的寫法 雖然我記的以前有試過 範例程式 也成功過(但不知放到那裡了) 但這次好像不行 只好在這裡繼續向各位高手求救了 !!!
發表於: 2007/1/8 2:21
|
|||
|
求救 16F690 EEPROM 搞不定 !
|
||||
---|---|---|---|---|
資深會員
|
1. 試著在 程式裡宣告 EEPROM 啟始值 但似乎無用
2.讀不到 EEPROM 可是用 PICkit 2 確定裏面有資料 3.這段程式更神奇 , 明明沒執行到 但只要一加進去 整顆 uC 就死在那裡 4.救命啊 .......... ! (1). ORG 0X2101 my_data de 5,6,0 , 3 (2). ; READ EEPROM ; +++++++++ READ START +++++++++++ MOVLW B1 MOVWF FSR MOVLW 1 MOVWF EE_ADR READ_NEXT: BANK2 MOVLW EE_ADR MOVWF EEADR BANK3 BCF EECON1 , EEPGD ; POINT TO DATA BCF EECON1 , RD ; EE READ BANK2 MOVF EEDAT , W BANK0 MOVWF INDF INCF FSR , F INCF EE_ADR , F BTFSS FSR , 2 GOTO READ_NEXT CHECK_DAT: MOVLW .10 SUBWF B1 , W BTFSC CARRY GOTO GET_DAT ; C = 1 --> F >= W (3). PS. BANK1 , BANK2 ... IS MACRO IS_TO_WRITE: ; ++++++ WRITE EE ++++++++ BCF T1CON , TMR1ON ; STOP TIMER 1 BCF INTCON , GIE MOVLW 0X03 ; 修飾 變數 ANDWF L_BYTE , F ; ONLY bit 0 & 1 有用 MOVLW B1 ; 變數指標 MOVWF FSR CALL STOP_BEEP ; STOP PWM MOVLW 0XDF ; TURN OFF LIGHT MOVWF PORTC MOVLW 1 ; EE ADR MOVWF EE_ADR BANK1 BCF PIE1 , TMR1IE ; DISABLE TIMER 1 INTERRUPT BSF PIE2 , EEIE ; ENABLE EE INTERRUPT ITW_1: BANK2 MOVF EE_ADR , W ; EE_ADR & EE_DAT AT 0X71 0X72 MOVWF EEADR MOVF EE_DAT , W ; +++++++++++++++ MOVWF EEDAT BANK3 BCF EECON1,EEPGD ; Selected Data EEPROM for Writing BSF EECON1,WREN ; Enable write function BCF INTCON , GIE MOVLW 0x55 ; Write Sequence control MOVWF EECON2 MOVLW 0xAA MOVWF EECON2 BSF EECON1,WR ; Start EEPROM write operation BSF INTCON , GIE SLEEP ; IN ISR HAVE BCF EEIF BCF EECON1 , WREN BANK0 INCF EE_ADR , F INCF FSR , F ; +++++++++++++++ BTFSS FSR , 2 ; 4 BYTE GOTO ITW_1 BANK1 BSF PIE1 , TMR1IE ; ENABLE TIMER 1 INTERRUPT BCF PIE2 , EEIE ; DISABLE EE INTERRUPT BANK0 MOVLW B1 MOVWF FSR BSF T1CON , TMR1ON ; START TIMER 1 BSF INTCON , GIE BSF T1CON , TMR1ON ; +++++++ END WRITE EE +++++++
發表於: 2007/1/5 13:29
|
|||
|