⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi_test_save.#2

📁 练习C8051F310的SPI口数据通信.
💻 #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
		LCALL UART0_Init
LOOP:
		JNB SPIF, $         ; 等待数据
    CLR SPIF            ; 清接收中断标志	
    MOV A, SPI0DAT      ; 接收数据
		MOV R0,A            ; 将接收到的数据保存在R0中

    CPL P0.7
		MOV SBUF0,A       
		JNB TI0,$
		CLR TI0
		CLR A

    AJMP LOOP


SYSCLK_Init:
    MOV OSCICN,#083H    ; 允许内部振荡器,不分频,最高频率
		MOV CLKSEL,#000H    ; 使用内部振荡器
		mov OSCXCN,#00H
		RET

Port_IO_Init:
    mov  XBR0,      #003h  ; SPI,UART 连到端口引脚
    mov  XBR1,      #040h  ; 弱上拉允许,交叉开关允许
    MOV P0MDOUT,#10010011B      ; P2 推挽输出
		SETB P0.7
		ret

SPI_Init:
    mov  SPI0CFG,   #000h  ; 允许从方式,在SCK的第一个边沿采样数据,SCK在空闲时处于低电平
    mov  SPI0CN,    #001h
		mov  SPI0CKR,   #04H   ; 
    ret

UART0_Init:
		MOV PCON,#000H
		MOV TMOD,#021H      ; 定时器1工作在方式2(8位自动重装)
		MOV CKCON,#004H      //*********************
		MOV TH1,#096H       ; 计数重装值
		MOV TL1,#096H       ; 定时器1计数初值(96=256-(24.5M/2/12/9600)),波特率9600bps(bit cond)
    MOV SCON0,#010H     ; SCON0:模式1,8位UART,启用RX

		SETB TR1            ; 启动定时器1
		CLR EA              ; 禁止所有中断
		CLR ES0             ; 禁止串行中断
		RET                 ; UART0的初始化子程序结束
		
    END







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -