📄 spi_test.#2
字号:
// 3线主方式或3线从方式
$include (C8051F310.inc)
ORG 00H
LJMP Main
ORG 0100H
Main:
ANL PCA0MD,#0BFH ; 关闭看门狗
LCALL SYSCLK_Init
LCALL Port_IO_Init
LCALL SPI_Init
LOOP1:
CLR SPIF
MOV A,#05AH
MOV SPI0DAT,A
JNB SPIF,$
CLR SPIF
; ANL SPI0CN,#00001111B
; SETB SPIEN
LCALL delay25ms
CPL P0.6
AJMP LOOP1
SYSCLK_Init:
MOV CLKSEL,#000H ; 使用内部振荡器
MOV OSCICN,#083H ; 允许内部振荡器,不分频,最高频率
mov OSCXCN, #00H
RET
Port_IO_Init:
mov XBR0, #002h ; SPI 连到端口引脚
mov XBR1, #040h ; 弱上拉允许,交叉开关允许
MOV P0MDOUT,#01001111B ; P2 推挽输出
SETB P0.6
ret
SPI_Init:
mov SPI0CFG, #040h ; 允许主方式,在SCK的第一个边沿采样数据,SCK在空闲时处于低电平
mov SPI0CN, #001h
mov SPI0CKR, #04H ;
ret
delay25ms: mov r3, #80
delay25msa: mov r1, #200 ;2
delay25msb: mov r2, #164 ;2
djnz r2, $ ;2/3 2+164*3+2=496
nop ;1 496+1=497
djnz r1, delay25msb ;2/3 2+(497+3)*200+2=100004
djnz r3, delay25msa ;2/3 2+()*5+2=500024
ret ;1 500025 ;;;need 20MHz
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -