⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mspi.asm.bak

📁 LPC932的SPI接口应用
💻 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 + -