我现在用的是MC9S12DJ64单片机,想利用他的内部的SPI模块和外围的一个标准的SPI功能模块进行通讯。 我先用清华的MC9S12DG128的开发写了个测试程序,用示波器可以看到SCK和MOSI有数据输出 然后我移植到自己做的MC9S12DJ64的板子上,板子可以正常工作,外接看门狗都是正常,就是没有SPI数据输出,硬件是没有问题的 我连续换了几个CPU都不行,在其他原来的MC9S12DJ64的单元板上运行此测试程序也无SPI数据输出, 版主能否帮助分析下:(查询方式)
;*********************************************************/
; SPI功能初始化
;*********************************************************/
SPI_init:
MOVB #$5F,SPI0CR1 ;控制寄存器1
;bit7_SPIE=1 --允许SPI中断
;bit6_SPE=1 --允许SPI
;bit5_STIE=1 --允许发送中断
;bit4_MSTR=1 --主机方式
;bit3_CPOL=1 --时钟极性选择
;bit2_CPHA=1 --时钟相位
;bit1_SSOE=1 --从机选择输出位允许
;bit0_LSBFE=1 --开始位定义
MOVB #$10,SPI0CR2 ;控制寄存器2
MOVB #$03,SPI0BR ;波特率寄存器 16分频
;--SPI分频器
;64倍分频
;2.457600*1000000/128=38400
RTS
;*********************************************************/
; SPI发送数据处理程序
;*********************************************************/
SPI_SEND:
SPI1_TXBT2:
LDAA SPI0SR
ANDA #$20 ;检查发送寄存器是否是空标志 SPTEF
STAA FLG1
BNE SPI1_TXBT3
JMP SPI1_TXBT2
;MOVB #$44,SPI1DR
SPI1_TXBT3:
LDAB #$55
STAB SPI0DR
;发送SPI数据
SPI_WAIT:
LDAA SPI0SR ;中断标志寄存器
ANDA #$80
STAA FLG2
BEQ SPI_WAIT
MOVB SPI0DR,SPI_RCVBUF
MOVB #$1,SPI_RCVFL1
RTS
;***************************
|