新會員
Joined
: 2004/8/27 22:43 最後登入時間
: 2022/6/18 15:51
From 新竹
Group:
註冊會員
Level : 1 HP : 0 / 11 MP : 2 / 678 EXP : 47
|
利用16F877的SPI模式寫入與讀取25LC0800A 並將結果存放於PORTD 可是我的程式都不會運作 可以幫我指點一下嗎?謝謝 程式如下: LIST P=16F877 #INCLUDE<P16F877.INC> D1 EQU 0X20 D2 EQU 0X21 CS EQU 0 SDI EQU 4 REG EQU 0X22 ;*************************************************** ;I/O設定 ;*************************************************** ORG 0X00 GOTO START START: NOP BSF STATUS,RP0 ; MOVLW B'00010000' ; MOVWF TRISC ; CLRF TRISD ; MOVLW B'01000000' MOVWF SSPSTAT BCF STATUS,RP0 MOVLW B'00100010' MOVWF SSPCON ;使用SPI Master Mode(CLK=Fosc/64),SPI Enable CLRF PORTC CLRF PORTD BSF PORTC,CS ;**************************************************** ;主程式 ;**************************************************** CALL WREN1 ;25LC0800A寫入致能 CALL WRSR ;清除 KK: CALL WREN1 CALL RDSR BTFSS REG,1 ;判斷WEL是否為1 GOTO KK CALL WRITE CALL READ MOVWF PORTD WAIT: NOP GOTO WAIT
;************************************************* ;25LC080A寫入致能的副程式 ;************************************************* WREN1: BCF PORTC,CS MOVLW B'00000110' CALL Send_Data BSF PORTC,CS RETURN ;************************************************* ;25LC080A寫入STATUS的副程式 ;************************************************* WRSR: BCF PORTC,CS MOVLW 0x01 CALL Send_Data MOVLW 0x00 CALL Send_Data BSF PORTC,CS CALL DELAY RETURN ;************************************************* ;25LC080A讀取STATUS的副程式 ;************************************************* RDSR: BCF PORTC,CS MOVLW B'00000101' CALL Send_Data CALL Send_Data BSF PORTC,CS RETURN ;************************************************* ;25LC080A寫入的副程式 ;************************************************* WRITE: BCF PORTC,CS MOVLW B'00000010' CALL Send_Data MOVLW 0X00 CALL Send_Data MOVLW 0X00 CALL Send_Data MOVLW 0X55 CALL Send_Data BSF PORTC,CS CALL DELAY RETURN ;************************************************* ;25LC080A讀取的副程式 ;************************************************* READ: BCF PORTC,CS MOVLW B'00000011' CALL Send_Data MOVLW 0X00 CALL Send_Data MOVLW 0X00 CALL Send_Data CALL Send_Data BSF PORTC,CS RETURN ;************************************************* ;傳送資料的副程式 ;************************************************* Send_Data: MOVWF SSPBUF BSF STATUS,RP0 Send_Data_Loop: BTFSS SSPSTAT,BF GOTO Send_Data_Loop BCF STATUS,RP0 MOVF SSPBUF,W MOVWF REG RETURN ;************************************************* ;延遲副程式 ;************************************************* DELAY: MOVLW .50 MOVWF D2 DLY1: MOVLW .249 MOVWF D1 DLY2: DECFSZ D1,F GOTO DLY2 DECFSZ D2,F GOTO DLY1 RETURN END
發表於: 2005/10/19 23:52
|