📄 x5045.lst
字号:
A51 MACRO ASSEMBLER X5045 05/22/2006 16:23:59 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN X5045.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE X5045.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;==============================================================
2 ; 文件名称: X5045.ASM
3 ; 功能描述:
4 ;==============================================================
0094 5 CS BIT 94H ; P1.4
6
0086 7 SPDR DATA 086H ; SPI寄存器声明
00AA 8 SPSR DATA 0AAH
00D5 9 SPCR DATA 0D5H
10
0030 11 ADDR DATA 30H
0031 12 BYTE DATA 31H
13
0000 14 ORG 0000H
0000 020100 15 LJMP START
16
0100 17 ORG 0100H
0100 00 18 START: NOP
0101 75D551 19 MOV SPCR, #51H ; 设置 SPI 的控制寄存器
0104 753000 20 MOV ADDR, #00H ; 写入X5045的地址
0107 753120 21 MOV BYTE, #20H ; 写入X5045的数据
010A 7C00 22 MOV R4, #00H ; 写数据个数计数
010C 12015F 23 STLP1: LCALL WRITE ; 调用写函数
010F 0530 24 INC ADDR
0111 0531 25 INC BYTE
0113 7E80 26 MOV R6, #80H ; 延时
0115 12013F 27 LCALL DELAY
0118 0C 28 INC R4
0119 BC10F0 29 CJNE R4, #16, STLP1
011C 7840 30 MOV R0, #40H ; 读出数据存放首地址
011E 7C00 31 MOV R4, #00H ; 计数
0120 753000 32 MOV ADDR, #00H ; 读取地址
0123 C294 33 CLR CS ; 设备使能
0125 7403 34 MOV A, #03H ; 读命令
0127 120146 35 LCALL SST_MASTERIO
012A E530 36 MOV A, ADDR ; 地址
012C 120146 37 LCALL SST_MASTERIO
012F 7400 38 STLP2: MOV A, #00H
0131 120146 39 LCALL SST_MASTERIO ; 读取数据
0134 E9 40 MOV A, R1
0135 F6 41 MOV @R0, A ; 保存数据
0136 08 42 INC R0
0137 0C 43 INC R4
0138 BC10F4 44 CJNE R4, #16, STLP2
013B D294 45 SETB CS
46
013D 80FE 47 SJMP $
48
49
50
51
52 ; 延时子程序
53 ; 入口参数: R6(增加延时)
54 ; 影响寄存器: R7
013F 7F0A 55 DELAY: MOV R7, #10
0141 DFFE 56 DLAY1: DJNZ R7, DLAY1
0143 DEFA 57 DJNZ R6, DELAY
0145 22 58 RET
A51 MACRO ASSEMBLER X5045 05/22/2006 16:23:59 PAGE 2
59
60 ; 处理主从控制器间的字节传输
61 ; 入口参数: A (SPI 输出)
62 ; 出口参数: R1
0146 63 SST_MASTERIO:
0146 F586 64 MOV SPDR, A
0148 E5AA 65 MIO1: MOV A, SPSR
014A 5480 66 ANL A, #80H
014C B480F9 67 CJNE A, #80H, MIO1
014F 53AA7F 68 ANL SPSR, #7FH
0152 A986 69 MOV R1, SPDR
0154 22 70 RET
71
72 ; 读取状态寄存器
73 ; 出口参数: R1
74 ;READ_STATUS_REG:
75 ; CLR CS ; 使能设备
76 ; MOV A, #05H ; 发送 RDSR 命令
77 ; LCALL SST_MASTERIO
78 ; MOV A, #00H
79 ; LCALL SST_MASTERIO ; 接收字节
80 ; SETB CS ; 禁止设备
81 ; RET
82
83 ; 写状态寄存器(看门狗设置)
84 ; 入口参数: R2 (状态字)
85 ;WRSR: CLR CS
86 ; MOV A, #01H
87 ; LCALL SST_MASTERIO
88 ; MOV A, R2
89 ; LCALL SST_MASTERIO
90 ; SETB CS
91 ; RET
92
93 ; 使能写操作
0155 C294 94 WREN: CLR CS
0157 7406 95 MOV A, #06H
0159 120146 96 LCALL SST_MASTERIO
015C D294 97 SETB CS
015E 22 98 RET
99
100 ; 禁止写操作
101 ;WRDI: CLR CS
102 ; MOV A, #04H
103 ; LCALL SST_MASTERIO
104 ; SETB CS
105 ; RET
106
107 ; 读一个字节
108 ; 入口参数: ADDR (操作地址)
109 ; 出口参数: R1
110 ;READ: CLR CS
111 ; MOV A, #03H
112 ; LCALL SST_MASTERIO
113 ; MOV A, ADDR
114 ; LCALL SST_MASTERIO
115 ; SETB CS
116 ; RET
117
118 ; 写一个字节
015F 120155 119 WRITE: LCALL WREN ; 写使能
0162 7E01 120 MOV R6, #01H
0164 12013F 121 LCALL DELAY ; 延时
0167 C294 122 CLR CS ; 设备使能
0169 7402 123 MOV A, #02H ; Write 命令
016B 120146 124 LCALL SST_MASTERIO
A51 MACRO ASSEMBLER X5045 05/22/2006 16:23:59 PAGE 3
016E E530 125 MOV A, ADDR
0170 120146 126 LCALL SST_MASTERIO
0173 E531 127 MOV A, BYTE
0175 120146 128 LCALL SST_MASTERIO
0178 D294 129 SETB CS ; 禁止设备
017A 22 130 RET
131
132 END
A51 MACRO ASSEMBLER X5045 05/22/2006 16:23:59 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ADDR . . . . . . . D ADDR 0030H A
BYTE . . . . . . . D ADDR 0031H A
CS . . . . . . . . B ADDR 0090H.4 A
DELAY. . . . . . . C ADDR 013FH A
DLAY1. . . . . . . C ADDR 0141H A
MIO1 . . . . . . . C ADDR 0148H A
SPCR . . . . . . . D ADDR 00D5H A
SPDR . . . . . . . D ADDR 0086H A
SPSR . . . . . . . D ADDR 00AAH A
SST_MASTERIO . . . C ADDR 0146H A
START. . . . . . . C ADDR 0100H A
STLP1. . . . . . . C ADDR 010CH A
STLP2. . . . . . . C ADDR 012FH A
WREN . . . . . . . C ADDR 0155H A
WRITE. . . . . . . C ADDR 015FH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -