📄 mspi.asm.bak
字号:
; SPI主机
; 使用LPC932的SPI总线和从机进行通讯。
; 向从机发送读数据命令(读从机RAM的内容),然后读出数据并显示输出。
; 定义LPC932的部分特殊寄存器
TRIM DATA 96H
DIVM DATA 95H ; CPU分频设置寄存器
P1M1 DATA 91H
P1M2 DATA 92H
P2M1 DATA 0A4H
P2M2 DATA 0A5H
SPCTL DATA 0E2H ; SPI设置寄存器
SPSTAT DATA 0E1H ; SPI状态寄存器
SPDAT DATA 0E3H ; SPI数据寄存器
CS_SLA BIT P2.4 ; 从机片选
LEDCON BIT P1.6
; 定义LPC932的I2C相关寄存器的定义
I2ADR DATA 0DBH
I2DAT DATA 0DAH
I2CON DATA 0D8H
I2STAT DATA 0D9H
I2SCLH DATA 0DDH
I2SCLL DATA 0DCH
STA BIT I2CON.5
SI BIT I2CON.3
;为平台定义变量
ACK BIT 10H ; 应答标志位
SLA DATA 50H ; 器件从地址
SUBA DATA 51H ; 器件子地址
NUMBYTE DATA 52H ; 读/写的字节数
; 使用前定义常量:
SDA EQU P1.3
SCL EQU P1.2
MTD EQU 30H ; 发送数据缓冲区首址 (缓冲区30H-3FH)
MRD EQU 30H ; 接收数据缓冲区首址 (缓冲区30H-3FH)
; 定义器件地址
SAA1064T EQU 70H
PCF8574 EQU 40H
;######################################################################
ORG 0000H
AJMP MAIN
ORG 0080H
; 程序功能:
; 对SAA1064进行设置--动态显示,电流等级3,接着显示good字样
MAIN: MOV DIVM,#2
MOV R7,#0
DJNZ R7,$
; 由于上电复位时所用IO口设置为高阻态,所以要进行IO设置
MOV P1M1,#2CH
MOV P1M2,#0CH
MOV P2M1,#00H
MOV P2M2,#00H
CPL LEDCON
MOV A,#MSTRMODE ; 初化硬件SPI接口
ACALL SETSPI
MAIN_L1:
MOV R1,#MTD
MOV @R1,#47H ; 设置SAA1064工作模式
INC R1
MOV @R1,#6FH ; 数字位1显示'g'
INC R1
MOV @R1,#5CH ; 数字位2显示'o'
INC R1
MOV @R1,#5CH ; 数字位3显示'o'
INC R1
MOV @R1,#5EH ; 数字位4显示'd'
MOV R5,#40 ; 长延时,使显示"Good"
DISP_LED:
MOV SUBA,#00H
MOV SLA,#SAA1064T
MOV NUMBYTE,#05H
LCALL IWRNBYTE ; 调用I2C软件包子程序
MAIN_L2:
MOV R7,#0 ; 软件延时
MAIN_L3:
MOV R6,#0
DJNZ R6,$
DJNZ R7,MAIN_L3
DJNZ R5,MAIN_L2
MOV SLA,#PCF8574 ; 读取拔码开关的值
ACALL IRDBYTE
JB ACK,MAIN_L4
CPL LEDCON
MAIN_L4:
CLR CS_SLA
MOV R7,A ; 保存要读取的地址
ACALL MSEND_DAT ; 发送要读取的地址给从机,并取出上一次要读出的数据
SETB CS_SLA ; SS=1,使从机能够发送数据(从机写数据入SPDAT)。
MOV R6,A
MOV R1,#MTD ; 显示缓冲区设置
MOV @R1,#47H ;设置SAA1064工作模式
INC R1
MOV A,R7 ; 第1、2显示位,显示操作地址
MOV DPTR,#TAB_IO
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV @R1,A
INC R1
MOV A,R7
ANL A,#0FH
MOVC A,@A+DPTR
MOV @R1,A
INC R1
MOV A,R6 ; 第3、4显示位,显示所读出的数据
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV @R1,A
INC R1
MOV A,R6
ANL A,#0FH
MOVC A,@A+DPTR
MOV @R1,A
MOV R5,#10
SJMP DISP_LED
; 共阴字模表
TAB_IO: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,73h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$INCLUDE (LPC932SPI.INC)
$INCLUDE (HI2C_ASM.INC) ; 引入LPC932硬件I2C软件包
END
;#####################################################################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -