spi.a51
来自「用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245」· A51 代码 · 共 142 行
A51
142 行
;
; Copyright (c) 2004,成都港顺科技发展有限公司
; All rights reserved.
;
; 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
; 工程名称:POS-Test.UV2
; 文件名称:M25P80SendRec.asm
; 摘 要:SPI总线驱动
;
; 单 片 机:uPSD3254
; 当前版本:0.4
; 作 者:雍继兵
; 完成日期:2004-12-7 14:45
;
ChipType EQU 6DFBH
DatLen EQU 6DFCH
Adrress EQU 6DFDH
RxdAdr EQU 6E00H
TxdAdr EQU 6F00H
P4 DATA 0C0H;
CLK BIT P4.4;时钟
SDI BIT P4.5;单片机输入
SDO BIT P4.6;单片机输出
DD SEGMENT CODE
PUBLIC _SpiSendChar ;从SPI总线上发送一个字节数据
RSEG DD
_SpiSendChar:
MOV R1,#8
MOV A,R7
CLR C
LOOPS:
CLR CLK
RLC A
MOV SDO,C
SETB CLK
DJNZ R1,LOOPS
RET
PUBLIC SpiReceiveChar ;从SPI总线上接收一个字节数据
RSEG DD
SpiReceiveChar:
MOV R1,#8
CLR C
LOOPR:
CLR CLK
MOV C,SDI
RLC A
SETB CLK
DJNZ R1,LOOPR
MOV R7,A
RET
;接收LEN个数据接收在SPI总线上
PUBLIC SpiReceiveData
RSEG DD
SpiReceiveData:
MOV R7,#0BH ;读命令//0bh
LCALL _SpiSendChar
MOV DPTR,#Adrress
MOVX A,@DPTR ;address_H
MOV R7,A
LCALL _SpiSendChar
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
MOV R7,#55H
LCALL _SpiSendChar
MOV DPTR,#DatLen
MOVX A,@DPTR
MOV R5,A;长度
MOV DPTR,#RxdAdr ;接收数据缓冲区开始地址
LOOPRE:
LCALL SpiReceiveChar
MOV A,R7
MOVX @DPTR,A
INC DPTR
DJNZ R5,LOOPRE
RET
;发送LEN个数据在SPI总线上
PUBLIC SpiSendData ;从SPI总线上发送len个数据
RSEG DD
SpiSendData:
MOV DPTR,#ChipType ;M45Pe80 is 0xAA and M25P80 is 0x55
MOVX A,@DPTR
CJNE A,#0AAH,M25P ;not eneu
MOV R7,#0AH ;eneu
LJMP Flash ;page program
M25P:
MOV R7,#02H ;写数据指令 page write
Flash:
LCALL _SpiSendChar
MOV DPTR,#Adrress ;地址1
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
INC DPTR ;地址2
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
INC DPTR ;地址3
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
MOV DPTR,#DatLen ;数据长度高位
MOVX A,@DPTR
MOV R5,A ;数据长度低位
MOV DPTR,#TxdAdr ;发送开始地址
LOOP_S:
MOVX A,@DPTR
MOV R7,A
LCALL _SpiSendChar
INC DPTR
DJNZ R5,LOOP_S
RET
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?