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 + -
显示快捷键?