共2条
1/1 1 跳转至页
ㄐ偶际?PTR8000 菜鸟求助--关于PTR8000
问
小弟我刚买回来两块PTR8000的模块.
想看看是否能和我用的C8051F330接通.想法很简单,就是向NRF905里面的配置寄存器里面写数据,然后再原封不动的把它读出来,看看是不是我写的.
如果是的,证明应该是通了.但是发现一个问题,不管我写的是什么,读出来的都是FF.....这个我是用调试工具在内存中看的.百思不得其解,请大家帮帮忙,谢谢了.下面是我的源程序代码:
$include (c8051f330.inc)
cd equ p0.7
pwr equ p0.6
trx_ce equ p0.5
txen equ p0.4
am equ p1.0
dr equ p1.1
sck equ p1.2
miso equ p1.3
mosi equ p1.4
csn equ p1.5
org 0000h
ljmp main
org 0030h
main: anl PCA0MD, #NOT(040h) ;关闭看门狗
MOV SP,#60H
MOV OSCICN,#080H ;设置时钟频率为3.0625M
mov P0MDOUT, #0FFh
mov P1MDOUT, #03Fh
mov P0SKIP, #0FFh
mov P1SKIP, #0FFh
mov XBR1, #040h ;以上为初始化IO引脚定义
ini: setb pwr
clr trx_ce ;进入空闲编程模式
setb csn
mov r0,#00h
clr csn ;开启SPI
acall spiout ;发送命令为向配置寄存器0000H写数据
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout ;以上用很笨的方法发了十个数据 全为0
setb csn ;关闭SPI
mov r0,#10h ;读地址为0000H 的配置寄存器
clr csn
acall spiout ;发送命令为读数据(待发送)
acall spiin ;接受数据
mov 20h,r0
acall spiin
mov 21h,r0
acall spiin
mov 22h,r0
acall spiin
mov 23h,r0
acall spiin
mov 24h,r0
acall spiin
mov 25h,r0
acall spiin
mov 26h,r0
acall spiin
mov 27h,r0
acall spiin
mov 28h,r0
acall spiin
mov 29h,r0 ;以上用很笨的方法存了十个数据全为FF
;理论上应该读到的数据为0
setb csn
sjmp $
;***********************************************************
;spi通讯子程序
;**************************************************************
;read返回参数在R0中
spiin: nop
clr c
clr a
mov r1,#08h
spiin1: clr sck
nop
nop
mov c,miso
rlc a
setb sck
nop
nop
djnz r1,spiin1
mov r0,a
ret
;write入口参数在RO中
spiout: clr sck
clr c
mov r1,#08h
mov a,r0
spiout1: nop
MOV C,ACC.7
MOV MOSI,C
rlc a
setb sck
nop
nop
clr sck
djnz r1,spiout1
setb sck
ret
end
想看看是否能和我用的C8051F330接通.想法很简单,就是向NRF905里面的配置寄存器里面写数据,然后再原封不动的把它读出来,看看是不是我写的.
如果是的,证明应该是通了.但是发现一个问题,不管我写的是什么,读出来的都是FF.....这个我是用调试工具在内存中看的.百思不得其解,请大家帮帮忙,谢谢了.下面是我的源程序代码:
$include (c8051f330.inc)
cd equ p0.7
pwr equ p0.6
trx_ce equ p0.5
txen equ p0.4
am equ p1.0
dr equ p1.1
sck equ p1.2
miso equ p1.3
mosi equ p1.4
csn equ p1.5
org 0000h
ljmp main
org 0030h
main: anl PCA0MD, #NOT(040h) ;关闭看门狗
MOV SP,#60H
MOV OSCICN,#080H ;设置时钟频率为3.0625M
mov P0MDOUT, #0FFh
mov P1MDOUT, #03Fh
mov P0SKIP, #0FFh
mov P1SKIP, #0FFh
mov XBR1, #040h ;以上为初始化IO引脚定义
ini: setb pwr
clr trx_ce ;进入空闲编程模式
setb csn
mov r0,#00h
clr csn ;开启SPI
acall spiout ;发送命令为向配置寄存器0000H写数据
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout
mov r0,#00h
acall spiout ;以上用很笨的方法发了十个数据 全为0
setb csn ;关闭SPI
mov r0,#10h ;读地址为0000H 的配置寄存器
clr csn
acall spiout ;发送命令为读数据(待发送)
acall spiin ;接受数据
mov 20h,r0
acall spiin
mov 21h,r0
acall spiin
mov 22h,r0
acall spiin
mov 23h,r0
acall spiin
mov 24h,r0
acall spiin
mov 25h,r0
acall spiin
mov 26h,r0
acall spiin
mov 27h,r0
acall spiin
mov 28h,r0
acall spiin
mov 29h,r0 ;以上用很笨的方法存了十个数据全为FF
;理论上应该读到的数据为0
setb csn
sjmp $
;***********************************************************
;spi通讯子程序
;**************************************************************
;read返回参数在R0中
spiin: nop
clr c
clr a
mov r1,#08h
spiin1: clr sck
nop
nop
mov c,miso
rlc a
setb sck
nop
nop
djnz r1,spiin1
mov r0,a
ret
;write入口参数在RO中
spiout: clr sck
clr c
mov r1,#08h
mov a,r0
spiout1: nop
MOV C,ACC.7
MOV MOSI,C
rlc a
setb sck
nop
nop
clr sck
djnz r1,spiout1
setb sck
ret
end
共2条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
| 【S32K3XX】LIN 通讯模块使用被打赏¥31元 | |
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
我要赚赏金
