📄 up2dsptest1.lst
字号:
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN up2dsptest1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE up2dsptest1.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2 ;FILE: microp2dsp.ASM
3 ;
4 ; This program allows reading or writing values to and from the DSP
5 ; through hyperterminal serial port interface.
6 ;
7 ; command -- function description
8 ; dr.... -- data memory read, eg dr22aa, reading data mem 0x22aa
9 ; dw.... xxxx -- data memory write, eg dw22aa 12bb, writing data mem addr=0x22aa value = 0x
12bb
10 ; pr.... -- prog memory read, eg pr22aa, reading prog mem 0x22aa
11 ; pw.... xxxx -- prog memory write, eg pw22aa 12bbcc, writing prog mem addr=0x22aa value =0
x12bbcc
12 ;
13 ; register used:
14 ; R0,1,2,3,4,5,6,7 in bank 0
15 ; R0,1,2,3,4,5 in bank 1, 0xe,f,a,b,c
16 ; A, B
17 ;
18 ; B -- used in interrupt routine
19 ;
20 ; by Francis Tiong
21 ; 11th July 2005
22 ;
23 ;*********************************************************
24 CODE_SEG segment code
25 reg_seg segment data
26 data_seg segment data
27 bit_seg segment bit
28 stack_seg segment idata
29
30
31
32
33
34
35
36
37
38 ; PCON EQU 87H
39
40
41 ;********************************************************************
42 ; Interrupt vector table
43 ;********************************************************************
0000 44 org 0 ; System reset RST
0000 020000 F 45 ljmp MAIN
46
0003 47 org 3 ; External 0 IE0
0003 32 48 reti
49
000B 50 org 0bh ; Timer 0 TF0
000B 32 51 reti
52
0013 53 org 13h ; External 1 IE1
0013 32 54 reti
55
56 ;org 1bh ; Timer 1 TF1
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 2
57 ;reti
58
0023 59 org 23h
0023 020000 F 60 ljmp ser_isr ; Serial port TI or RI
61
002B 62 org 2bh ; Timer 2 TF2 or EXF2
002B 32 63 reti
64
---- 65 rseg reg_seg
0000 66 ds 18h
67
68 ; define variables
---- 69 rseg stack_seg
0040 70 org 40h
0040 71 stack: ds 20
72
---- 73 rseg data_seg
0000 74 tmp_space: ds 20 ; bit addressable space should not be used for data
75
---- 76 rseg data_seg
77 ; needed in case of extra copy in rxbuf
0014 78 rxbuf: ds 40
003C 79 rxbuf_ptr: ds 1 ; num values not processed in rxbuf,
80 ; if pointer exceeds half size of r
xb then send xoff
003D 81 txbuf: ds 1
003E 82 tmp_sav:ds 1
83
---- 84 rseg bit_seg
0000 85 sign_tst: dbit 8
0008 86 txflag: dbit 1 ; 1=there is data in txbuf need to be sent
0009 87 rxflag: dbit 1
000A 88 rxdone: dbit 1 ; set to 1 when no more data need to be processed i
n rxbuf
89
000B 90 sav_C: dbit 1 ; saving the carry bit in interrupt
91
000C 92 flow_control: dbit 1 ; 1= transmitted xoff
000D 93 download: dbit 1 ; 1= downloading code
000E 94 last_byte : dbit 0 ;flag to indicate the last byte of program
0035 95 byte0high EQU 35h;
0034 96 byte0middle EQU 34h;
0037 97 byte0low EQU 37h;
98 ;********************************************************************
99
---- 100 rseg code_seg
0040 101 ORG 40H
102
0040 103 MAIN:
0040 758100 F 104 MOV SP, #stack ; init stack pointer
105
106 ; setting timer and serial port
107 ;S_INIT:
108
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 3
130
131 ; setting timer and serial port
0043 759850 132 MOV SCON,#50H ;SET SERIAL PORT FOR MODE 1 OPERATION
0046 758780 133 MOV PCON,#80H ;80h SET DOUBLE BAUD RATE BIT to 38.4k
0049 758920 134 MOV TMOD,#20H ;SET TIMER 1 TO AUTO RELOAD
004C 758DFD 135 MOV TH1,#0FDH ;LOAD RELOAD VALUE FOR 19.2k BAUD AT 16MHZ
004F 758840 136 MOV TCON,#40H ;START TIMER 1
0052 C299 137 CLR TI
0054 759962 138 MOV SBUF,#62H ;TRANSMIT b=62 HEX OUT THE TXD LINE
139
0057 7420 140 MOV A, #20H ;transmit space
0059 120000 F 141 CALL TRANS_BYTE
142
143
005C D2AC 144 SETB ES ; enable srial interrupts
005E D2AF 145 SETB EA ; enable all
146
147
0060 C200 F 148 CLR TXFLAG ; no data left in txbuf
0062 C200 F 149 clr rxflag
150 ; SETB TXDONE ; no data need to be sent
0064 D200 F 151 SETB rxdone ; no data need to be processed
0066 C200 F 152 clr flow_control ; xoff not yet sent
0068 E4 153 clr A;
0069 750000 F 154 MOV rxbuf_ptr, #0
155
156
157
006C C3 158 CLR C ;zero ALU carry flag
159 ;8E=address of AUXR
006D 758E03 160 MOV 8EH, #03H ;set EXTRAM and AO to one
161 ; AO one will disable ALE
0070 759002 162 MOV P1, #02 ; p1.0 = cs = LOW, p1.1=rst = HIGH
163
0073 7462 164 MOV A, #62H ;transmit b=62 hex
0075 120000 F 165 CALL TRANS_BYTE
166
167
168
169 ; begin
170
0078 120000 F 171 call intro ;print out welcome message
007B 750000 F 172 MOV rxbuf_ptr, #0
007E 173 label:
007E 758000 174 MOV P0, #0H
175
0081 120000 F 176 CALL RECEI_BYTE
177
178
179
180 ; check for commands, mem flag
181
182
0084 B41B05 183 CJNE A,#1BH,NOT_FILE
0087 D200 F 184 SETB download ; downloading file
185
0089 020000 F 186 JMP FILE_XFR
A51 MACRO ASSEMBLER UP2DSPTEST1 04/12/2006 14:30:29 PAGE 4
187
188
008C 189 NOT_FILE:
008C C200 F 190 CLR download ;not downloading file
191
008E 7A00 192 MOV R2, #0 ; R2 = flag for dm=0x40 or pm dm=0
0090 B46404 193 CJNE A,#64H,check_p ; d = 0x64
194
195 ; command 'd' received
0093 7A40 196 MOV R2, #40H
0095 8003 197 SJMP GOT_MEM_FLAG
198
0097 B470E4 199 check_p: CJNE A,#70H,label ; p = 0x70
200
009A 120000 F 201 GOT_MEM_FLAG: CALL TRANS_BYTE
202
203
204 ; check for commands, read/write flag
009D 120000 F 205 CALL RECEI_BYTE
206
00A0 7C00 207 MOV R4, #0 ; R4 = flag for read=0 or write =1
00A2 B47704 208 CJNE A,#77H,check_r ; w = 0x77
209
210 ; command 'd' received
00A5 7C01 211 MOV R4, #1H
00A7 8003 212 SJMP GOT_RW_FLAG
213
00A9 B472D2 214 check_r: CJNE A,#72H,label ; R = 0x72
215
00AC 120000 F 216 GOT_RW_FLAG: CALL TRANS_BYTE
217
218
219 ; get high byte of address , send in addr 04
00AF 120000 F 220 CALL GET_BCD ; getting a BCD valued byte in A
221
00B2 4A 222 ORL A, R2 ; mem flag set in
223 ; high byte ready
224
225 ; this section not using movx
226
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -