📄 my93c46.lst
字号:
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MY93C46
OBJECT MODULE PLACED IN my93c46.OBJ
COMPILER INVOKED BY: E:\学习工具\Keil51\C51\BIN\C51.EXE my93c46.c LARGE DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 /**************************************************************
2 Program: Test 93C46 access
3
4 Author: Yu Liangyao, yly@mail.tsinghua.edu.cn
5
6 Date: 2002-9-22
7 Update: 2002-10-2
8
9 (for test only)
10
11 Note: It is very easy to expand to 93c56/66, ect,
12 but not implemented here.
13
14 **************************************************************/
15
16 #include "my93c46.h"
17
18 /**************************************************************/
19 //MW-Transfer function
20 uint mw_trans(uint dat,uchar bits)
21 {
22 1 uint res=0,idx;
23 1 uint tmp;
24 1
25 1 tmp=dat;
26 1
27 1 for(idx=0;idx<bits;idx++)
28 1 {
29 2 res<<=1;
30 2 SK_0;
31 2 SET_DI((tmp>>15)&0x01); _mynop_();
32 2 tmp<<=1;
33 2 SK_1; _mynop_();
34 2 res|=GET_DO(0);
35 2 SK_0; _mynop_();
36 2
37 2 }
38 1 SET_DI(0);
39 1
40 1 return res;
41 1 }
42
43 /**************************************************************/
44 //Erase a byte function
45 uchar mw_erase(uchar address)
46 {
47 1 mw_ewen();
48 1
49 1 CS_1;
50 1 mw_trans(MW_ERASE|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
51 1 CS_0;
52 1 _mynop_();
53 1 CS_1;
54 1 while(GET_DO(0)==0);
55 1 CS_0;
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 2
56 1
57 1 mw_ewds();
58 1
59 1 return TRUE;
60 1 }
61
62 /**************************************************************/
63 //Erase all function
64 uchar mw_eral(void)
65 {
66 1 mw_ewen();
67 1
68 1 CS_1;
69 1 mw_trans(MW_ERAL,CMD_LEN);
70 1 CS_0;
71 1 _mynop_();
72 1 CS_1;
73 1 while(GET_DO(0)==0);
74 1 CS_0;
75 1
76 1 mw_ewds();
77 1
78 1 return TRUE;
79 1 }
80
81 /**************************************************************/
82 //Erase/Write disable
83 uchar mw_ewds(void)
84 {
85 1 CS_1;
86 1 mw_trans(MW_EWDS,CMD_LEN);
87 1 CS_0;
88 1 return TRUE;
89 1 }
90
91 /**************************************************************/
92 //Erase/Write enable
93 uchar mw_ewen(void)
94 {
95 1 CS_1;
96 1
97 1 mw_trans(MW_EWEN,CMD_LEN);
98 1
99 1 CS_0;
100 1 return TRUE;
101 1 }
102
103 /**************************************************************/
104 //Test function
105 uchar mw_test(void)
106 {
107 1 uint res;
108 1 CS_1;
109 1
110 1 res=mw_trans(MW_READ,CMD_LEN);
111 1 mw_trans(DUMMY_WORD,DATA_LEN);
112 1
113 1 CS_0;
114 1
115 1 return ((res&0x01)==0)?TRUE:FALSE;
116 1 }
117 /**************************************************************/
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 3
118 //Read function
119 uint mw_read(uchar address)
120 {
121 1 uint res;
122 1 CS_1;
123 1 mw_trans(MW_READ|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
124 1 res=mw_trans(DUMMY_WORD,DATA_LEN);
125 1 CS_0;
126 1
127 1 return res;
128 1 }
129
130 /**************************************************************/
131 //Write funcion
132 uchar mw_write(uchar address,uint dat)
133 {
134 1 mw_ewen();
135 1
136 1 CS_1;
137 1
138 1 mw_trans(MW_WRITE|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
139 1 mw_trans(((uint)dat)<<(16-DATA_LEN),DATA_LEN);
140 1
141 1 CS_0;
142 1 _mynop_();
143 1 CS_1;
144 1 while(GET_DO(0)==0);
145 1 CS_0;
146 1
147 1 mw_ewds();
148 1
149 1 return TRUE;
150 1 }
151
152 /**************************************************************/
153 //Write all function
154 uchar mw_wral(uint dat)
155 {
156 1 mw_ewen();
157 1
158 1 CS_1;
159 1
160 1 mw_trans(MW_WRAL,CMD_LEN);
161 1 mw_trans(((uint)dat)<<(16-DATA_LEN),DATA_LEN);
162 1
163 1 CS_0;
164 1 _mynop_();
165 1 CS_1;
166 1 while(GET_DO(0)==0);
167 1 CS_0;
168 1
169 1 mw_ewds();
170 1
171 1 return TRUE;
172 1 }
173
174 /**************************************************************/
175 uchar mw_init(void)
176 {
177 1 CS_0;
178 1 SK_0;
179 1 DI_0;
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 4
180 1
181 1 return TRUE;
182 1 }
183 /**************************************************************/
184
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION L?0025 (BEGIN)
0000 7D09 MOV R5,#09H
0002 7F00 MOV R7,#00H
; FUNCTION _mw_trans (BEGIN)
; SOURCE LINE # 20
0004 900000 R MOV DPTR,#bits
0007 ED MOV A,R5
0008 F0 MOVX @DPTR,A
;---- Variable 'dat' assigned to Register 'R6/R7' ----
; SOURCE LINE # 21
; SOURCE LINE # 22
0009 E4 CLR A
000A A3 INC DPTR
000B F0 MOVX @DPTR,A
000C A3 INC DPTR
000D F0 MOVX @DPTR,A
; SOURCE LINE # 25
000E 900000 R MOV DPTR,#tmp
0011 EE MOV A,R6
0012 F0 MOVX @DPTR,A
0013 A3 INC DPTR
0014 EF MOV A,R7
0015 F0 MOVX @DPTR,A
; SOURCE LINE # 27
0016 E4 CLR A
0017 900000 R MOV DPTR,#idx
001A F0 MOVX @DPTR,A
001B A3 INC DPTR
001C F0 MOVX @DPTR,A
001D ?C0001:
001D 900000 R MOV DPTR,#bits
0020 E0 MOVX A,@DPTR
0021 FF MOV R7,A
0022 C3 CLR C
0023 900000 R MOV DPTR,#idx+01H
0026 E0 MOVX A,@DPTR
0027 9F SUBB A,R7
0028 900000 R MOV DPTR,#idx
002B E0 MOVX A,@DPTR
002C 9400 SUBB A,#00H
002E 4003 JC $ + 5H
0030 020000 R LJMP ?C0002
; SOURCE LINE # 28
; SOURCE LINE # 29
0033 900000 R MOV DPTR,#res+01H
0036 E0 MOVX A,@DPTR
0037 25E0 ADD A,ACC
0039 F0 MOVX @DPTR,A
003A 900000 R MOV DPTR,#res
003D E0 MOVX A,@DPTR
003E 33 RLC A
003F F0 MOVX @DPTR,A
; SOURCE LINE # 30
0040 7F01 MOV R7,#01H
0042 120000 E LCALL _map_io
0045 8F82 MOV DPL,R7
0047 8E83 MOV DPH,R6
0049 E0 MOVX A,@DPTR
004A 54FB ANL A,#0FBH
C51 COMPILER V7.09 MY93C46 03/27/2005 16:17:13 PAGE 6
004C FF MOV R7,A
004D C007 PUSH AR7
004F 7F01 MOV R7,#01H
0051 120000 E LCALL _map_io
0054 8F82 MOV DPL,R7
0056 8E83 MOV DPH,R6
0058 D0E0 POP ACC
005A F0 MOVX @DPTR,A
; SOURCE LINE # 31
005B 7F01 MOV R7,#01H
005D 120000 E LCALL _map_io
0060 8F82 MOV DPL,R7
0062 8E83 MOV DPH,R6
0064 E0 MOVX A,@DPTR
0065 54FD ANL A,#0FDH
0067 FD MOV R5,A
0068 900000 R MOV DPTR,#tmp
006B E0 MOVX A,@DPTR
006C C4 SWAP A
006D 13 RRC A
006E 13 RRC A
006F 13 RRC A
0070 5401 ANL A,#01H
0072 25E0 ADD A,ACC
0074 4D ORL A,R5
0075 FF MOV R7,A
0076 C007 PUSH AR7
0078 7F01 MOV R7,#01H
007A 120000 E LCALL _map_io
007D 8F82 MOV DPL,R7
007F 8E83 MOV DPH,R6
0081 D0E0 POP ACC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -