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

📄 up2dsptest1.lst

📁 This program allows reading or writing values to and from the DSP through hyperterminal serial por
💻 LST
📖 第 1 页 / 共 5 页
字号:
                     227     ;       MOV     R0, #04H        ; R0= external address
00B3 758004          228             MOV     P0, #04H
00B6 C2B2            229             CLR     P3.2
                     230     
00B8 F580            231             MOV     P0, A
00BA C2B6            232             CLR     P3.6
00BC D2B6            233             SETB    P3.6
00BE D2B2            234             SETB    P3.2
                             
                             
                                     
                                     
                             
                     240     
                     241     ; get low byte of address , send in addr 05
00C0 120000   F      242             CALL GET_BCD                    ; getting a BCD valued byte in A
                     243     
                     244     
                     245     
00C3 758005          246             MOV     P0, #05H
00C6 C2B2            247             CLR     P3.2
                     248     
00C8 F580            249             MOV     P0, A
00CA C2B6            250             CLR     P3.6
00CC D2B6            251             SETB    P3.6
00CE D2B2            252             SETB    P3.2
A51 MACRO ASSEMBLER  UP2DSPTEST1                                                          04/12/2006 14:30:29 PAGE     5

                             
                             
                             
                                     
                                     
                             
                     259     ; send RW request in addr 02
                     260     
00D0 EC              261             MOV     A, R4
                     262     
                     263     
                     264     
00D1 758002          265             MOV     P0, #02H
00D4 C2B2            266             CLR     P3.2
                     267     
00D6 F580            268             MOV     P0, A
00D8 C2B6            269             CLR     P3.6
00DA D2B6            270             SETB    P3.6
00DC D2B2            271             SETB    P3.2
                     272     
                             
                             
                                     
                                     
                             
                     278     ; check R or W , if W then fetch 16-bit data word
                     279     
00DE DC4C            280             DJNZ    R4, DO_READ
                     281     
                     282     ;write command process
00E0 120000   F      283     PROCESS_WRITE_CMD:      CALL RECEI_BYTE                         ; expect one space between 
                             address and data
00E3 B420FA          284             CJNE    A,#20H,PROCESS_WRITE_CMD        ; space = 0x20
                     285     
00E6 120000   F      286             CALL TRANS_BYTE
                     287     
                     288             ; get high byte of data
00E9 120000   F      289             CALL GET_BCD                    ; getting a BCD valued byte in A
00EC F50C            290             MOV     0CH, A                  ; high byte
                     291     
                     292             ; get low byte of data
00EE 120000   F      293             CALL GET_BCD                    ; getting a BCD valued byte in A
00F1 F50B            294             MOV     0BH, A                  ; 
                     295     
                     296             ;if PM write then there is one more
00F3 BA0005          297             CJNE    R2,#0H,WRITE_CMD_DM     ; if R2!=0 then DM
                     298     
00F6 120000   F      299             CALL GET_BCD                    ; getting a BCD valued byte in A
00F9 F50A            300             MOV     0AH, A                  ; lowest byte
                     301     
                     302             
                     303     ; sending data out, high order byte first
00FB                 304     WRITE_CMD_DM:   
                     305     
                     306     
                     307     
                     308     ; this section does not use movx
00FB 758006          309             MOV     P0, #06H        
00FE C2B2            310             CLR     P3.2
                     311     
0100 850C80          312             MOV     P0, 0CH         ; 0c
0103 C2B6            313             CLR     P3.6
0105 D2B6            314             SETB    P3.6
0107 D2B2            315             SETB    P3.2
                     316     
0109 758006          317             MOV     P0, #06H        
A51 MACRO ASSEMBLER  UP2DSPTEST1                                                          04/12/2006 14:30:29 PAGE     6

010C C2B2            318             CLR     P3.2
                     319     
010E 850B80          320             MOV     P0, 0BH         ; 0b
0111 C2B6            321             CLR     P3.6
0113 D2B6            322             SETB    P3.6
0115 D2B2            323             SETB    P3.2
                     324     
                     325             
0117 BA000E          326             CJNE    R2,#0H,end_wr_done      ; if R2!=0 then DM
                     327     
011A 758006          328             MOV     P0, #06H        
011D C2B2            329             CLR     P3.2
                     330     
011F 850A80          331             MOV     P0, 0AH         ; 0a
0122 C2B6            332             CLR     P3.6
0124 D2B6            333             SETB    P3.6
0126 D2B2            334             SETB    P3.2
                     335     
0128 00              336     end_wr_done:    nop
0129 020000   F      337             JMP label                  ;DO IT ALL OVER AGAIN        
                             
                             
                                     
                             
                             
                                     
                                     
                             
                                     
                                     
                                     
                                     
                             
                                     
                                     
                             
                                     
                             
                     356     
                     357     ;READ command process           
012C 00              358     DO_READ: NOP  
                     359     ;       CALL FUNC_DO_READ
                     360     ;       CALL FUNC_DO_READ
                     361     ;        JMP label                  ;DO IT ALL OVER AGAIN
                     362     
012D                 363     FUNC_DO_READ:   
012D 7420            364             MOV     A, #20H         ;sending a space
012F 120000   F      365             CALL    TRANS_BYTE
                     366     
                     367             ; get two nibbles
                     368     
                     369     
0132 758006          370             MOV     P0, #06H        
0135 C2B2            371             CLR     P3.2
                     372     
0137 7580FF          373             MOV     P0, #0FFH       ;prepare read input
                     374     
013A C2B7            375             CLR     P3.7
013C E580            376             MOV     A, P0           ;get one byte from DSP
013E D2B7            377             SETB    P3.7
0140 D2B2            378             SETB    P3.2
                             
                             
                                     
                                     
                             
A51 MACRO ASSEMBLER  UP2DSPTEST1                                                          04/12/2006 14:30:29 PAGE     7

                     384     
0142 FD              385             MOV     R5,A            ;R5= raw 2x 4 bits received
                     386     
                     387             ; do nibble 0
0143 120000   F      388             CALL    BCD_ASCII       ;input in A, return in A
                     389     
                     390     
0146 F50E            391             MOV     0EH, A          ;using location 13,12,11,10,9,8 to store result
                     392     
0148 ED              393             MOV     A, R5
0149 C4              394             SWAP    A
                     395     
                     396             ; do nibble 1
014A 120000   F      397             CALL    BCD_ASCII       ;input in A, return in A
                     398     
014D F50F            399             MOV     0FH, A          ;using location 13,12,11,10,9,8 to store result
                     400     
                     401             ; get two nibbles
                     402     
                     403     
014F 758006          404             MOV     P0, #06H        
0152 C2B2            405             CLR     P3.2
                     406     
0154 7580FF          407             MOV     P0, #0FFH       ;prepare read input
                     408     
0157 C2B7            409             CLR     P3.7
0159 E580            410             MOV     A, P0           ;get one byte from DSP
015B D2B7            411             SETB    P3.7
015D D2B2            412             SETB    P3.2
                             
                             
                                     
                                     
                             
                     418     
015F FD              419             MOV     R5,A            ;R5= raw 2x 4 bits received
                     420     
                     421             ; do nibble 2
0160 120000   F      422             CALL    BCD_ASCII       ;input in A, return in A
                     423             
0163 F50A            424             MOV     0AH, A          ;using location 13,12,11,10,9,8 to store result
                     425     
0165 ED              426             MOV     A, R5
0166 C4              427             SWAP    A
                     428     
                     429             ; do nibble 3
0167 120000   F      430             CALL    BCD_ASCII       ;input in A, return in A
                     431             
016A F50B            432             MOV     0BH, A          ;using location 13,12,11,10,9,8 to store result
                     433     
                     434     
                     435             ;check to see if PM word, if so then read two more nibbles
016C BA001D          436             CJNE    R2, #0, READ_DONE
                     437     
                     438             ; get two nibbles
                     439     
                     440     
016F 758006          441             MOV     P0, #06H        
0172 C2B2            442             CLR     P3.2
                     443     
0174 7580FF          444             MOV     P0, #0FFH       ;prepare read input
                     445     
0177 C2B7            446             CLR     P3.7
0179 E580            447             MOV     A, P0           ;get one byte from DSP
017B D2B7            448             SETB    P3.7
017D D2B2            449             SETB    P3.2
A51 MACRO ASSEMBLER  UP2DSPTEST1                                                          04/12/2006 14:30:29 PAGE     8

                     450     
                             
                             
                                     
                                     
                             
                     456     
017F FD              457             MOV     R5,A            ;R5= raw 2x 4 bits received
                     458     
                     459             ; do nibble 4
0180 120000   F      460             CALL    BCD_ASCII       ;input in A, return in A
                     461             
0183 F50C            462             MOV     0CH, A          ;using location 13,12,11,10,9,8 to store result

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -