📄 spi.lst
字号:
A51 MACRO ASSEMBLER SPI 04/12/2007 15:50:05 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN spi.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE spi.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4 $nomod51
5
6 NAME SPI
7
8 ;MOSI BIT 90H.2
9 ;MISO BIT 90H.3
10 ;SCK BIT 90H.4
00B5 11 MOSI BIT 0B0H.5
00B4 12 MISO BIT 0B0H.4
00B2 13 SCK BIT 0B0H.2
00E0 14 ACC DATA 0E0H
00D0 15 PSW DATA 0D0H
0082 16 DPL DATA 82H
0083 17 DPH DATA 83H
18
19 ?PR?_WBYTE?SPI SEGMENT CODE
20 ?PR?RBYTE?SPI SEGMENT CODE
21 ?PR?INIT?SPI SEGMENT CODE
22 ?PR?_READ_MEM?SPI SEGMENT CODE
23 ?PR?_WRITE_MEM?SPI SEGMENT CODE
24 ?PR?DELAY10?SPI SEGMENT CODE
25 PUBLIC _WBYTE
26 PUBLIC RBYTE
27 PUBLIC INIT
28 PUBLIC _READ_MEM
29 PUBLIC _WRITE_MEM
30 PUBLIC DELAY10
31 ;-------------------------------------------------------------------------
32 ;C调用形式为:VOID WBYTE(UNSIGNED CHAR VALUE)
33 ;VALUR放在R7中
34 ;-------------------------------------------------------------------------
---- 35 RSEG ?PR?_WBYTE?SPI
36 USING 0
0000 37 _WBYTE:
0000 7B08 38 MOV R3,#08H
0002 EF 39 MOV A,R7
0003 C3 40 CLR C
0004 33 41 W1: RLC A
0005 92B5 42 MOV MOSI,C
0007 00 43 NOP
0008 D2B2 44 SETB SCK
000A 00 45 NOP
000B C2B2 46 CLR SCK
000D 00 47 NOP
000E DBF4 48 DJNZ R3,W1
0010 22 49 RET
50 ;-------------------------------------------------------------------------
51 ;C调用形式为:UNSIGNED CHAR RBYTE(VOID)
52 ;VALUR放在R7中
53 ;-------------------------------------------------------------------------
---- 54 RSEG ?PR?RBYTE?SPI
55 USING 0
0000 56 RBYTE:
0000 D2B4 57 SETB MISO
0002 7B08 58 MOV R3,#08H
A51 MACRO ASSEMBLER SPI 04/12/2007 15:50:05 PAGE 2
0004 D2B2 59 RE1: SETB SCK
0006 00 60 NOP
0007 A2B4 61 MOV C,MISO
0009 C2B2 62 CLR SCK
000B 00 63 NOP
000C 33 64 RLC A
000D DBF5 65 DJNZ R3,RE1
000F FF 66 MOV R7,A
0010 22 67 RET
68 ;-------------------------------------------------------------------------
69 ;C调用形式为: VOID INIT(VOID)
70 ;-------------------------------------------------------------------------
---- 71 RSEG ?PR?INIT?SPI
72 USING 0
0000 73 INIT:
0000 C2B5 74 CLR MOSI
0002 C2B4 75 CLR MISO
0004 C2B2 76 CLR SCK
0006 22 77 RET
78 ;-------------------------------------------------------------------------
79 ;C调用形式为:VOID WRITE_MEM(UNSIGNED INT ADDR,UNSIGNED CHAR VALUE)
80 ;VALUR放在R5中,ADDR IN R6,R7
81 ;-------------------------------------------------------------------------
---- 82 RSEG ?PR?_WRITE_MEM?SPI
83 USING 0
0000 84 _WRITE_MEM:
0000 8E83 85 MOV DPH,R6
0002 8F82 86 MOV DPL,R7
0004 7F40 87 MOV R7,#40H
0006 120000 F 88 LCALL _WBYTE
0009 AF83 89 MOV R7,DPH
000B 120000 F 90 LCALL _WBYTE
000E AF82 91 MOV R7,DPL
0010 120000 F 92 LCALL _WBYTE
0013 AF05 93 MOV R7,AR5
0015 120000 F 94 LCALL _WBYTE
0018 22 95 RET
96 ;-------------------------------------------------------------------------
97 ;C调用形式为:UNSIGNED CHAR READ_MEM(UNSIGNED INT ADDR)
98 ;VALUR放在R7中,ADDR IN R6,R7
99 ;-------------------------------------------------------------------------
---- 100 RSEG ?PR?_READ_MEM?SPI
101 USING 0
0000 102 _READ_MEM:
0000 8E83 103 MOV DPH,R6
0002 8F82 104 MOV DPL,R7
0004 7F20 105 MOV R7,#20H
0006 120000 F 106 LCALL _WBYTE
0009 AF83 107 MOV R7,DPH
000B 120000 F 108 LCALL _WBYTE
000E AF82 109 MOV R7,DPL
0010 120000 F 110 LCALL _WBYTE
0013 120000 F 111 LCALL RBYTE
0016 22 112 RET
113 ;-------------------------------------------------------------------------
114 ;C调用形式为:VOID DELAY10(VOID)
115 ;1 MES DELAY
116 ;-------------------------------------------------------------------------
---- 117 RSEG ?PR?DELAY10?SPI
0000 118 DELAY10:
0000 7CC8 119 MOV R4,#0C8H
0002 00 120 DEL: NOP
0003 00 121 NOP
0004 00 122 NOP
0005 DCFB 123 DJNZ R4,DEL
0007 22 124 RET
A51 MACRO ASSEMBLER SPI 04/12/2007 15:50:05 PAGE 3
125 END
A51 MACRO ASSEMBLER SPI 04/12/2007 15:50:05 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?PR?DELAY10?SPI. . C SEG 0008H REL=UNIT
?PR?INIT?SPI . . . C SEG 0007H REL=UNIT
?PR?RBYTE?SPI. . . C SEG 0011H REL=UNIT
?PR?_READ_MEM?SPI. C SEG 0017H REL=UNIT
?PR?_WBYTE?SPI . . C SEG 0011H REL=UNIT
?PR?_WRITE_MEM?SPI C SEG 0019H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
AR5. . . . . . . . D ADDR 0005H A
DEL. . . . . . . . C ADDR 0002H R SEG=?PR?DELAY10?SPI
DELAY10. . . . . . C ADDR 0000H R SEG=?PR?DELAY10?SPI
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
INIT . . . . . . . C ADDR 0000H R SEG=?PR?INIT?SPI
MISO . . . . . . . B ADDR 00B0H.4 A
MOSI . . . . . . . B ADDR 00B0H.5 A
PSW. . . . . . . . D ADDR 00D0H A
RBYTE. . . . . . . C ADDR 0000H R SEG=?PR?RBYTE?SPI
RE1. . . . . . . . C ADDR 0004H R SEG=?PR?RBYTE?SPI
SCK. . . . . . . . B ADDR 00B0H.2 A
SPI. . . . . . . . N NUMB -----
W1 . . . . . . . . C ADDR 0004H R SEG=?PR?_WBYTE?SPI
_READ_MEM. . . . . C ADDR 0000H R SEG=?PR?_READ_MEM?SPI
_WBYTE . . . . . . C ADDR 0000H R SEG=?PR?_WBYTE?SPI
_WRITE_MEM . . . . C ADDR 0000H R SEG=?PR?_WRITE_MEM?SPI
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -