• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: 求救 16F690 EEPROM 搞不定 !
#3
資深會員
資深會員


查看用戶資訊
照 楊雲樟 大哥的寫法 終於可以正確的寫進去了
但還是不能正確讀出來
不信邪 將楊大哥 的程式改寫來確認 但他又是正確的 .... 真是的
將改寫的放在下面 原板請到右邊 範例程式 去抓
PS.我參考 41262A DATA SHEET 時BCF EECON1 , RD ....

又 頭痛的另一點 ; 照下面程式 應該由始到終 只有一個 LED 會亮
但卻會有其他的 LED 閃了一下 ??????????????
存取PIC16F877內部EEPROM的範例程式 楊雲樟 
修改  BEE
TEST EEPROM 配合 PICKIT 2 LOW PIN COUNT DEMOBOARD
有錯的話 靠 VR LED 會亮 PORTC 3
正確的話 靠 PUSH BUTTON 會亮  PORTC 0

    
list p=16f690
    
#include <p16F690.INC>
    
__CONFIG    _INTRC_OSC_NOCLKOUT _MCLRE_OFF  _WDT_OFF 
;
;- 
RAM LOCATIONS------
;
Reserve RAM location 0x70 for ICD
;
    
CBLOCK 0X71
    Data_EE_Addr 
Data_EE_Data 
    ENDC
;--------VECTORS------------
             
org       0x0 
        nop
             
goto      START
;-------PROGRAM--------------
             
org      0X20
START
    BSF        STATUS 
RP0
    MOVWF    0XF0
    MOVWF    TRISC
    BSF        STATUS 
RP0
    CLRF    PORTC

            call       INIT
;----   Test the WRITE EEPROM Routine ----
        
movlw    0x0
        movwf    Data_EE_Addr
        movlw    
'0'                Load a ASCII code "0" to W
        movwf    Data_EE_Data
EE_Write
        call    WRITE_EEPROM
        incf    Data_EE_Data
,F    0x30N
        incf    Data_EE_Addr
,F  Point to next EEPROM Address
        btfss    Data_EE_Addr
,5    Write 32 bytes ?
        goto    
EE_Write
;----   Test the READ EEPROM Routine ----
        
movlw    0x20        Get back EEPROM data to RAM with start addr at 0x20
        movwf    FSR
        MOVLW    
'0'        可故意更動此處 來測試
        MOVWF    Data_EE_Data
        movlw    0x0        
Point to EEPROM start address at 0x00
        movwf    Data_EE_Addr
EE_Read
        call    READ_EEPROM    
Read EEPROM data with curent address to W registre
;        movwf    INDF        move W --> RAM 
        SUBWF    Data_EE_Data 
W
        BTFSS        STATUS 
2        ZERO FLAG
        
GOTO    NO_GOOD
;        incf    FSR,F
        INCF    Data_EE_Data 
F
        incf    Data_EE_Addr
,F  Point to next EEPROM Address
        btfss    Data_EE_Addr
,5    Read 32 bytes ?                            原本 為 bit 6   ^^
        goto    
EE_Read
        BSF        PORTC 
0    ALL  RIGHT
            
GOTO       $   
NO_GOOD:
        
BSF        PORTC 3    有點問題 .....
        GOTO    $
;------ 
INTERNAL EEPROM READ ------
READ_EEPROM
        banksel    EEADR
        movf    Data_EE_Addr
,W        Load EEPROM Address into Pointer
        movwf    EEADR

        banksel    EECON1
        bcf    EECON1
,EEPGD
        bsf    EECON1
,RD

        banksel    EEDATA
        movf    EEDATA
,W
          bsf     INTCON
,GIE  

        banksel    PORTA
        
return
;----
INTERNAL EEPROM WRITE-----
WRITE_EEPROM
        banksel    EEADR        
        movf    Data_EE_Addr
,W        Load EEPROM Address Data into Register
        movwf    EEADR
        movf    Data_EE_Data
,W
        movwf    EEDATA

        banksel    EECON1
        bcf    EECON1
,EEPGD        Selected Data EEPROM for Writing
        bsf    EECON1
,WREN        Enable write function

        
movlw    0x55            Write Sequence control 
        movwf    EECON2    
        movlw    0xAA
        movwf    EECON2    
            
        bsf    EECON1
,WR        Start EEPROM write operation
        bcf    EECON1
,WREN        Disable write EEPROM  

        btfsc    EECON1
,WR        Waiting for writing completed (4mS)
        goto    $-
1            During write periodmust hold both EEADR EEDATA until complete

        banksel    PORTA
        
return        
;---------
INITIAL----------------
INIT      
            BCF     PIR2
,EEIF
        banksel    PIE2
              BCF     PIE2
,EEIE
             
RETURN
;--------------------------------
                
END

發表於: 2007/1/8 6:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 求救 16F690 EEPROM 搞不定 !
#2
資深會員
資深會員


查看用戶資訊
我真的很想把這文章關掉 但天不從
睡眠不足 心情不好 才 PO 了上來

有關 ( 3 ) : 我忘記加 TO_WRITE 的旗標測試 當然會一直停在這裡
而且 EE_DAT 我也忘了更新

但雖然更正後 只要一執行到這裡它依舊停在這裡
這是參考 DATA SHEET 的範例 我也試過 右邊範例程式中的寫法
雖然我記的以前有試過 範例程式 也成功過(但不知放到那裡了) 但這次好像不行

只好在這裡繼續向各位高手求救了 !!!

發表於: 2007/1/8 2:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


求救 16F690 EEPROM 搞不定 !
#1
資深會員
資深會員


查看用戶資訊
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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------