?? mspi.asm
字號:
; 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 + -