串行DataFlash存储器及其与单片机的接口
fPORTB,SCK;模式0
bcfPORTB,cs;片选
movlw82H;加载操作码
movwfspi_out;置入寄存器
callspiout;调用子程序输出操作码
movfPA1,w;加载第一字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA1,w
xorwfPA2,w;获得第二字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA2,w;加载第三字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfspi_wt,w;加载待写数据
movwfspi_out;置入寄存器
callspiout;调用子程序输出
bsfPORTB,cs;触发写入操作
nop;延时
retlw0;从子程序返回
;输出子程序,用spiout名称调用
spioutmovlw0x08;加载输出位数
movwfspi_cnt;置入寄存器
nspioutrlfspi_out;先输出最高位
btfscSTATUS,C;是否为1
bsfPORTB,SDO;输出1
btfssSTATUS,C;是否为0
bcfPORTB,SDO;输出0
nop;延时
bsfPORTB,SCK;时钟信号上升沿
nop;延时
bcfPORTB,SCK;时钟信号下降沿
decfszspi_cnt;检查输出位数
gotonspiout;输出下一位
retlw0;从子程序返回
;顺序读子程序,用名称spicrd调用
spicrdbcfSTATUS,RP0
bcfPORTB,cs;片选
bcfPORTB,SCK;模式0
movlwE8H;加载操作码
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfPA1,w;加载第一字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA1,w
xorwfPA2,w;获得第二字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA2,w;加载第三字节地址
movwfspi_out;置入寄存器
callspi 《串行DataFlash存储器及其与单片机的接口(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/142442.html
bcfPORTB,cs;片选
movlw82H;加载操作码
movwfspi_out;置入寄存器
callspiout;调用子程序输出操作码
movfPA1,w;加载第一字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA1,w
xorwfPA2,w;获得第二字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA2,w;加载第三字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfspi_wt,w;加载待写数据
movwfspi_out;置入寄存器
callspiout;调用子程序输出
bsfPORTB,cs;触发写入操作
nop;延时
retlw0;从子程序返回
;输出子程序,用spiout名称调用
spioutmovlw0x08;加载输出位数
movwfspi_cnt;置入寄存器
nspioutrlfspi_out;先输出最高位
btfscSTATUS,C;是否为1
bsfPORTB,SDO;输出1
btfssSTATUS,C;是否为0
bcfPORTB,SDO;输出0
nop;延时
bsfPORTB,SCK;时钟信号上升沿
nop;延时
bcfPORTB,SCK;时钟信号下降沿
decfszspi_cnt;检查输出位数
gotonspiout;输出下一位
retlw0;从子程序返回
;顺序读子程序,用名称spicrd调用
spicrdbcfSTATUS,RP0
bcfPORTB,cs;片选
bcfPORTB,SCK;模式0
movlwE8H;加载操作码
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfPA1,w;加载第一字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA1,w
xorwfPA2,w;获得第二字节地址
movwfspi_out;置入寄存器
callspiout;调用子程序输出
movfBA2,w;加载第三字节地址
movwfspi_out;置入寄存器
callspi 《串行DataFlash存储器及其与单片机的接口(第3页)》