?? spi_dataflash.asm
字號:
;順序寫子程序,用spiwt名稱調用
spiwt bcf STATUS,RP0
bcf PORTB,SCK ;模式0
bcf PORTB,cs ;片選
movlw 82H ;加載操作碼
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出操作碼
movf PA1,w ;加載第一字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf BA1,w
xorwf PA2,w ;獲得第二字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf BA2,w ;加載第三字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf spi_wt,w ;加載待寫數據
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
bsf PORTB,cs ;觸發寫入操作
nop ;延時
retlw 0 ;從子程序返回
;輸出子程序,用spiout名稱調用
spiout movlw 0x08 ;加載輸出位數
movwf spi_cnt ;置入寄存器
nspiout rlf spi_out ;先輸出最高位
btfsc STATUS,C ;是否為1
bsf PORTB,SDO ;輸出1
btfss STATUS,C ;是否為0
bcf PORTB,SDO ;輸出0
nop ;延時
bsf PORTB,SCK ;時鐘信號上升沿
nop ;延時
bcf PORTB,SCK ;時鐘信號下降沿
decfsz spi_cnt ;檢查輸出位數
goto nspiout ;輸出下一位
retlw 0 ;從子程序返回
;順序讀子程序,用名稱spicrd調用
spicrd bcf STATUS,RP0
bcf PORTB,cs ;片選
bcf PORTB,SCK ;模式0
movlw E8H ;加載操作碼
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf PA1,w ;加載第一字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf BA1,w
xorwf PA2,w ;獲得第二字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf BA2,w ;加載第三字節地址
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf DCRE,w ;加載任意位字節
movwf spi_out ;置入寄存器
call spiout ;調用子程序輸出
movf DCRE,w ;共需4個任意位字節
movwf spi_out
call spiout
movf DCRE,w
movwf spi_out
call spiout
movf DCRE,w
movwf spi_out
call spiout
retlw 0 ;從子程序返回
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -