⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 up2dsptest1.lst

📁 This program allows reading or writing values to and from the DSP through hyperterminal serial por
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -