📄 fft.lst
字号:
* M16C FAMILY ASSEMBLER * SOURCE LIST Sat Apr 09 03:16:50 2005 PAGE 001
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
1 ;*****************************************************************
2 ;* PROGRAM : 256 Bit FFT Program *
3 ;* FILE NAME : fft.A30 *
4 ;* FUNCTION : 256 fft *
5 ;*****************************************************************
6 ;
7 ;---------- INCLUDE OF SFR FILE ----------------
8 ;
9 .list off ; don't draw up a prpgram list
10 .list on ; draw up a program list
11 ;
12 ;---------- DEFINE OF SYMBOLS ------------------
13 ;
14 00000400h VramTOP .equ 000400H ; top address of internal RAM
15 00002BFFh VramEND .equ 002BFFH ; end address of internal RAM
16 000F0000h VprogTOP.equ 0F0000H ; top address of program area
17 000FA000h Vintbase.equ 0FA000H ; top address of variable vector table
18 00002C00h VIstack .equ 002C00H ; stack pointer
19 000FFFDCh Vvector .equ 0FFFDCH ; top address of fixed vector table
20 00000400h SB_base .equ 000400H ; base address of SB recative
21 000E0000h wnk .equ 0e0000h ; wnk of fft
22 ;
23 ;---------- KEEP OF RAM AREA -------------------
24 ;
25 .section memory,data
26 00400 .org VramTOP
27
28 00400(000200H) numr: .blkw 256
29 00600(000200H) numi: .blkw 256
30 00800(000001H) flag: .blkb 1
31 00801(000001H) addr: .blkb 1
32 00802(000002H) temp: .blkw 1
33 ;-----------------------------------------------
34 .section prog,code
35 F0000 .org VprogTOP
36 .sb SB_base ; assings aprovisional SB register value
37 .sbsym num ; place data in SB addressing mode
38 .sbsym addr
39 .sbsym flag
40 .sbsym temp
41 ;---------- CLEAR OF RAM -----------------------
42 F0000 reset:
43 F0000 EB40002C ldc #VIstack,ISP ; set Interrupt Stack Pointer
44 F0004 EB600004 ldc #SB_base,SB ; set SB register
45 F0008 EB200F00 ldintb #Vintbase ; set Interrupt TaBle register
EB1000A0
46
47 F0010 D900 Q mov.w #0,r0 ; 0 clear
48 F0012 75C30014 mov.w #(VramEND+1-VramTOP)/2,r3 ; number of times
49 F0016 AA0004 S mov.w #VramTOP,a1 ; start address
50 F0019 7DEA sstr.w
51
52 ;---------- INITIALLIZE ------------------------
53 F001B EB200F00 LDINTB #USER_vector_table
EB1000A0
54 F0023 C7065D00 S mov.b #00000110B,int0ic
55 F0027 B7F203 Z mov.b #0,pd8
56 F002A C701FE03 S mov.b #1,pur2
57 F002E D900 Q mov.w #0,r0
58 F0030 75C30001 mov.w #256,r3
59 F0034 AA0004 S mov.w #numr,a1
60 F0037 7DEA sstr.w
* M16C FAMILY ASSEMBLER * SOURCE LIST Sat Apr 09 03:16:50 2005 PAGE 002
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
61 F0039 75C0FF7F mov.w #7fffh,r0
62 F003D 75C38000 mov.w #128,r3
63 F0041 AA4004 S mov.w #numr+64,a1
64 F0044 7DEA sstr.w
65 F0046 D900 Q mov.w #0,r0
66 F0048 75C30001 mov.w #256,r3
67 F004C AA0006 S mov.w #numi,a1
68 F004F 7DEA sstr.w
69 ;---------- MAIN PROGRAM -----------------------
70 ;-----------------------------调整顺序输入顺序的程序-----------------
71 F0051 C480 S mov.b #080h,r0l
72 F0053 A20004 S mov.w #numr,a0
73 F0056 huan:
74 F0056 C308 S mov.b #8,r0h
75 F0058 7341 mov.w a0,r1
76 F005A 77510004 sub.w #numr,r1
77 F005E E981 shl.w #-1,r1
78 F0060 br:
79 F0060 E002 rot.b #1,r1l
80 F0062 76B3 rorc.b r1h
81 F0064 AB dec.b r0h
82 F0065 6EFA jnz br
83 F0067 7235 mov.b r1h,a1
84 F0069 E905 shl.w #1,a1
85 F006B 77450004 add.w #numr,a1
86 F006F 7361 mov.w [a0],r1
87 F0071 7B17 xchg.w r1,[a1]
88 F0073 7316 mov.w r1,[a0]
89
90 F0075 C924 Q add.w #2,a0
91 F0077 AC dec.b r0l
92 F0078 6EDD jnz huan
93 ;-----------------------------
94 F007A C480 S mov.b #80h,r0l
95 F007C A20006 S mov.w #numi,a0
96 F007F huani:
97 F007F C308 S mov.b #8,r0h
98 F0081 7341 mov.w a0,r1
99 F0083 77510006 sub.w #numi,r1
100 F0087 E981 shl.w #-1,r1
101 F0089 bri:
102 F0089 E002 rot.b #1,r1l
103 F008B 76B3 rorc.b r1h
104 F008D AB dec.b r0h
105 F008E 6EFA jnz bri
106 F0090 7235 mov.b r1h,a1
107 F0092 E905 shl.w #1,a1
108 F0094 77450006 add.w #numi,a1
109 F0098 7361 mov.w [a0],r1
110 F009A 7B17 xchg.w r1,[a1]
111 F009C 7316 mov.w r1,[a0]
112 F009E C924 Q add.w #2,a0
113 F00A0 AC dec.b r0l
114 F00A1 6EDD jnz huani
115 ;----------------------------------------------
116 F00A3 D81E0008 Q mov.b #1,flag[sb] ;8级蝶形运算
117 F00A7 dft_fft:
118 ;---------------------级间旋转因子的计算程序------------------
119 F00A7 D80E0108 Q mov.b #0,addr[sb]
120 F00AB rotate:
121 F00AB 72E00108 mov.b addr[sb],r0l
122 F00AF 72E10008 mov.b flag[sb],r0h
* M16C FAMILY ASSEMBLER * SOURCE LIST Sat Apr 09 03:16:50 2005 PAGE 003
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
123 F00B3 E880 lp1: shl.b #-1,r0l ;rotate factor
124 F00B5 AB dec.b r0h
125 F00B6 6EFC jnz lp1
126 F00B8 6805 jc n5
127 F00BA D904 Q mov.w #0,a0
128 F00BC FE2C B jmp n1
129 F00BE 72E00108 n5: mov.b addr[sb],r0l
130 F00C2 C309 S mov.b #9,r0h
131 F00C4 A8E10008 sub.b flag[sb],r0h
132 F00C8 E800 lp2: shl.b #1,r0l
133 F00CA AB dec.b r0h
134 F00CB 6EFC jnz lp2
135 F00CD C309 S mov.b #9,r0h
136 F00CF A8E10008 sub.b flag[sb],r0h
137 F00D3 E880 lp3: shl.b #-1,r0l
138 F00D5 AB dec.b r0h
139 F00D6 6EFC jnz lp3
140
141 F00D8 C308 S mov.b #8,r0h
142 F00DA A8E10008 sub.b flag[sb],r0h
143 F00DE 6A06 jz n2
144 F00E0 E800 lp4: shl.b #1,r0l
145 F00E2 AB dec.b r0h
146 F00E3 6EFC jnz lp4
147 ;------------------
148 F00E5 7204 n2: mov.b r0l,a0
149 F00E7 E904 shl.w #1,a0 ;retate factor
150 F00E9 n1:
151 F00E9 73E50108 mov.w addr[sb],a1
152 F00ED E905 shl.w #1,a1 ;data address
153 ;------------------
154 F00EF 73D00006 mov.w numi[a1],r0 ;the real part
155 F00F3 759300000E lde.w sin[a0],r3
156 F00F8 7930 mul.w r3,r0
157 F00FA 732E0208 mov.w r2,temp[sb]
158 F00FE 73D00004 mov.w numr[a1],r0
159 F0102 759300020E lde.w cos[a0],r3
160 F0107 7930 mul.w r3,r0
161 F0109 A9E20208 sub.w temp[sb],r2
162 F010D 732D0004 mov.w r2,numr[a1]
163 ;------------------
164 F0111 73D00004 mov.w numr[a1],r0 ;the image part
165 F0115 759300000E lde.w sin[a0],r3
166 F011A 7930 mul.w r3,r0
167 F011C 732E0208 mov.w r2,temp[sb]
168 F0120 73D00006 mov.w numi[a1],r0
169 F0124 759300020E lde.w cos[a0],r3
170 F0129 7930 mul.w r3,r0
171 F012B A1E20208 add.w temp[sb],r2
172 F012F 732D0006 mov.w r2,numi[a1]
173 F0133 FE01 B jmp n4
174 ;------------------
175 F0135 72E30108 n4: mov.b addr[sb],r1h
176 F0139 C813 Q add.b #1,r1h
177 F013B 723E0108 mov.b r1h,addr[sb]
178 F013F 6A04 * jnz rotate
F469FF
179 ;---------------------蝶形运算程序--------------------
180 F0144 butter:
181 F0144 B3 Z mov.b #0,r0h
182 F0145 bl:
183 F0145 72E00008 mov.b flag[sb],r0l
* M16C FAMILY ASSEMBLER * SOURCE LIST Sat Apr 09 03:16:50 2005 PAGE 004
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
184 F0149 AC dec.b r0l
185 F014A 6A08 jz n3
186 F014C b2:
187 F014C E081 rot.b #-1,r0h
188 F014E 77B4 rorc.w a0
189 F0150 AC dec.b r0l
190 F0151 6EFA jnz b2
191
192 F0153 E984 n3: shl.w #-1,a0
193 F0155 7345 mov.w a0,a1
194 F0157 77350080 or.w #8000h,a1
195
196 F015B C409 S mov.b #9,r0l
197 F015D A8E00008 sub.b flag[sb],r0l
198 F0161 b3:
199 F0161 E081 rot.b #-1,r0h
200 F0163 77B4 rorc.w a0
201 F0165 E001 rot.b #1,r0h
202 F0167 E081 rot.b #-1,r0h
203 F0169 77B5 rorc.w a1
204 F016B AC dec.b r0l
205 F016C 6EF4 jnz b3
206
207 F016E E1D4 rot.w #-6,a0 ;butter address
208 F0170 E1D5 rot.w #-6,a1
209 F0172 7724FE01 and.w #01feh,a0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -