📄 led3.asm
字号:
; 使用LPC932的SPI接口对74HC595进行操作
; 其中使用74HC595的低3位对三色LED进行控制,为0时点亮。
; 使用单主方式,CPOL=1,CPHA=1,即空闲是为SPICLK高电平,且SPICLK在上CS_595
P2M1 DATA 0A4H
P2M2 DATA 0A5H
SPCTL DATA 0E2H ; SPI设置寄存器
SPSTAT DATA 0E1H ; SPI状态寄存器
SPDAT DATA 0E3H ; SPI数据寄存器
CS_595 BIT P2.4
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: MOV R7,#0 ; 延时
DJNZ R7,$
MOV P2M1,#00H
MOV P2M2,#00H
SPI_INI: MOV A,#MSTRMODE1+SCPOL ; 设置SPI总线,上升沿有效
ACALL SETSPI
SEND_DAT:
MOV R0,#0
MOV A,R0
SEND_DL1: MOV DPTR,#SENDDAT
MOVC A,@A+DPTR
CLR CS_595
ACALL MSEND_DAT ; 子程序中不能改R0
SETB CS_595
INC R0
MOV A,R0
ACALL DELAYS ; 子程序中不能改R0
CJNE A,#8,SEND_DL1
SJMP SEND_DAT
SENDDAT: DB 00H,01H,02H,04H,03H,05H,06H,07H
; 延时函数
DELAYS:
MOV R7,#100
DELAYS_L1: MOV R6,#0
DELAYS_L2: MOV R5,#0
DJNZ R5,$
DJNZ R6,DELAYS_L2
DJNZ R7,DELAYS_L1
RET
$INCLUDE (LPC932SPI.INC)
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -