gpio_spi.asm

来自「基于sunplus的16MCU产品,SPMC75的键盘和显示的例子,完整的工程,」· 汇编 代码 · 共 50 行

ASM
50
字号
.include Spmc75_regs.inc

.code
.define GPIO_SPI_CLK_Port 	P_IOB_Buffer_ADDR
.define GPIO_SPI_DAT_Port 	P_IOB_Buffer_ADDR
.define GPIO_SPI_Load_Port 	P_IOB_Buffer_ADDR
.define GPIO_SPI_CLK		0x0080
.define GPIO_SPI_DAT		0x0040
.define GPIO_SPI_Load		0x0100
			
.PUBLIC _GPIO_SPI_TXD
_GPIO_SPI_TXD:
			r2 = 13
GPIO_SPI_B:	test r1,0x1000
			jz GPIO_SPI_A
			r3 = [GPIO_SPI_DAT_Port]
			r3 |= GPIO_SPI_DAT
			[GPIO_SPI_DAT_Port] = r3
			r3 = [GPIO_SPI_CLK_Port]		//产生时钟
			r3 |= GPIO_SPI_CLK
			[GPIO_SPI_CLK_Port] = r3
			r3 &= ~GPIO_SPI_CLK
			[GPIO_SPI_CLK_Port] = r3
			r1 = r1 lsl 1
			r2 -= 1
			jnz GPIO_SPI_B
			jmp GPIO_SPI_C
GPIO_SPI_A: r3 = [GPIO_SPI_DAT_Port]
			r3 &= ~GPIO_SPI_DAT
			[GPIO_SPI_DAT_Port] = r3
			r3 = [GPIO_SPI_CLK_Port]		//产生时钟
			r3 |= GPIO_SPI_CLK
			[GPIO_SPI_CLK_Port] = r3
			r3 &= ~GPIO_SPI_CLK
			[GPIO_SPI_CLK_Port] = r3
			r1 = r1 lsl 1
			r2 -= 1
			jnz GPIO_SPI_B
GPIO_SPI_C: //发送结束
			retf
			
.PUBLIC _GPIO_SPI_Load
_GPIO_SPI_Load:
			r1 = [GPIO_SPI_Load_Port]
			r1 |= GPIO_SPI_Load
			[GPIO_SPI_Load_Port] = r1
			r1 &= ~GPIO_SPI_Load
			[GPIO_SPI_Load_Port] = r1
			retf
.end

⌨️ 快捷键说明

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