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

📄 uart2.lst

📁 aduc814的汇编程序例子
💻 LST
字号:
UART2                                                                                                         PAGE 1

                       1    ;====================================================================
                       2    ;
                       3    ; Author        : ADI - Apps
                       4    ;
                       5    ; Date          : Febuary 2001
                       6    ;
                       7    ; File          : UART2.asm
                       8    ;
                       9    ; Hardware      : ADuC814
                      10    ;
                      11    ; Description   : This Program transmits the numbers 0->7F (starting
                      12    ;                 with 0) down the UART in ASCII form to the PC where
                      13    ;                 they can be viewed using the preconfigured 
                      14    ;                 Hyperterminal program.  (c:\ADuC\9600com1.ht)
                      15    ;                 After the transmission of the 16 bytes a 5 second
                      16    ;                 delay is called and the process is repeated.
                      17    ;
                      18    ;====================================================================
                      19    ;              
                      20    $MOD814                                ;Use 8052 predefined Symbols
                      21    
  00B3                22    LED     EQU     P3.3
                      23    
                      24    ;____________________________________________________________________
                      25                                                      ; BEGINNING OF CODE
----                  26    CSEG
0000                  27    ORG 0000H
                      28    
0000 020060           29            JMP MAIN
                      30    
0060                  31    ORG 0060H                    ; Start code at address above interrupts                   
                      32    
                      33    
0060                  34    MAIN:                          ; Main program
                      35           
0060 75CBFF           36            MOV     RCAP2H,#0FFh   ; config UART for 9830baud
0063 75CAF9           37            MOV     RCAP2L,#-7     ; (close enough to 9600baud)
0066 75CDFF           38            MOV     TH2,#0FFh
0069 75CCF9           39            MOV     TL2,#-7
006C 759852           40            MOV     SCON,#52h
006F 75C834           41            MOV     T2CON,#34h
                      42    
0072                  43    START:        
0072 B2B3             44            CPL      LED           ; CPL LED with each transmission
0074 9000F4           45            MOV      DPTR, #TITLE 
0077 1200A8           46            CALL     SENDSTRING    ; write title block on screen
                      47    
007A 7800             48            MOV      R0, #00H    ; Start transmissions from 0
007C 7908             49            MOV      R1, #08H    ; Start a new line after 8 transmissions
                      50          
007E                  51    LOOP1:                        ; Every eight transmissions start on a
                      52                                  ; new line
007E 740A             53            MOV      A, #10       ; Transmit a linefeed
0080 1200C0           54            CALL     SENDCHAR
0083 740D             55            MOV      A, #13       ; Transmit a carriage return
0085 1200C0           56            CALL     SENDCHAR
                      57    
0088 7908             58            MOV      R1, #08H 
UART2                                                                                                         PAGE 2

                      59          
008A                  60    LOOP2:  
008A 7420             61            MOV      A, #20H      ; Transmit a SPACE (=ASCII 20) between
                      62                                  ; transmissions on same line
008C 1200C0           63            CALL     SENDCHAR
                      64    
008F E8               65            MOV      A, R0        ; Transmit R0 = present data
0090 1200C8           66            CALL     SENDVAL
0093 08               67            INC      R0           ; increment data
                      68            
0094 B47F03           69            CJNE     A, #7FH, CONT ; check if data =7F, if no continue
0097 0200A1           70            JMP      WAIT5S        ; if = 7F wait 5s and repeat
                      71    
009A 19               72    CONT:   DEC      R1            ; decrement R1....
009B E9               73            MOV      A, R1          
009C B400EB           74            CJNE     A, #00H, LOOP2 ; and check if new line is required
                      75                                    ; jump to loop 2 for a space
009F 80DD             76            JMP      LOOP1          ; jump to loop 1 for a new line
                      77            
                      78    
00A1 7432             79    WAIT5S: MOV      A, #50         ; wait 5s 
00A3 1200E8           80            CALL     DELAY   
00A6 80CA             81            JMP      START        ; start transmissions again
                      82            
                      83    
                      84    ;____________________________________________________________________
                      85                                                             ; SENDSTRING
                      86    
00A8                  87    SENDSTRING:     ; sends ASCII string to UART starting at location
                      88                    ; DPTR and ending with a null (0) value
                      89    
00A8 C0E0             90            PUSH    ACC
00AA C0F0             91            PUSH    B
00AC E4               92            CLR     A
00AD F5F0             93            MOV     B,A
00AF E5F0             94    IO0010: MOV     A,B
00B1 05F0             95            INC     B
00B3 93               96            MOVC    A,@A+DPTR
00B4 6005             97            JZ      IO0020
00B6 1200C0           98            CALL    SENDCHAR
00B9 80F4             99            JMP     IO0010
00BB D0F0            100    IO0020: POP     B
00BD D0E0            101            POP     ACC
                     102    
00BF 22              103            RET
                     104    
                     105    ;____________________________________________________________________
                     106                                                               ; SENDCHAR
                     107    
00C0                 108    SENDCHAR:       ; sends ASCII value contained in A to UART
                     109    
00C0 3099FD          110            JNB     TI,$            ; wait til present char gone
00C3 C299            111            CLR     TI              ; must clear TI
00C5 F599            112            MOV     SBUF,A
                     113    
00C7 22              114            RET
                     115    
                     116    ;____________________________________________________________________
UART2                                                                                                         PAGE 3

                     117                                                                ; SENDVAL
                     118    
00C8                 119    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                     120                    ; and then spits these two characters up the UART.
                     121                    ; does not change the value of A.
                     122    
00C8 C0E0            123            PUSH    ACC
00CA C4              124            SWAP    A
00CB 1200DC          125            CALL    HEX2ASCII
00CE 11C0            126            CALL    SENDCHAR        ; send high nibble
00D0 D0E0            127            POP     ACC
00D2 C0E0            128            PUSH    ACC
00D4 1200DC          129            CALL    HEX2ASCII
00D7 11C0            130            CALL    SENDCHAR        ; send low nibble
00D9 D0E0            131            POP     ACC
                     132    
00DB 22              133            RET
                     134    
                     135    
                     136    ;____________________________________________________________________
                     137                                                              ; HEX2ASCII
                     138    
00DC                 139    HEX2ASCII:      ; converts A into the hex character representing the
                     140                    ; value of A's least significant nibble
                     141    
00DC 540F            142            ANL     A,#00Fh
00DE B40A00          143            CJNE    A,#00Ah,$+3
00E1 4002            144            JC      IO0030
00E3 2407            145            ADD     A,#007h
00E5 2430            146    IO0030: ADD     A,#'0'
                     147    
00E7 22              148            RET
                     149    
                     150    ;____________________________________________________________________
                     151                                                                  ; DELAY
                     152                                                            ; 100ms DELAY
00E8                 153    DELAY:                                  ; Delays by 100ms * A
                     154                                            ; 100mSec based on 2.097152MHZ 
                     155                                            ; Core Clock 
                     156                                            ; i.e. default ADuC814 Clock
                     157    
00E8 FA              158                    MOV     R2,A            ; Acc holds delay variable
00E9 7B22            159     DLY0:          MOV     R3,#022h        ; Set up delay loop0
00EB 7CFF            160     DLY1:          MOV     R4,#0FFh        ; Set up delay loop1
00ED DCFE            161                    DJNZ    R4,$            ; Dec R4 & Jump here until R4 is 0
00EF DBFA            162                    DJNZ    R3,DLY1         ; Dec R3 & Jump DLY1 until R3 is 0
00F1 DAF6            163                    DJNZ    R2,DLY0         ; Dec R2 & Jump DLY0 until R2 is 0
00F3 22              164                    RET                     ; Return from subroutine
                     165    
                     166    ;____________________________________________________________________
                     167    
                     168    
00F4 0A0A0D5F        169    TITLE:    DB 10,10,13,'____________________________________',10,13
00F8 5F5F5F5F   
00FC 5F5F5F5F   
0100 5F5F5F5F   
0104 5F5F5F5F   
0108 5F5F5F5F   
UART2                                                                                                         PAGE 4

010C 5F5F5F5F   
0110 5F5F5F5F   
0114 5F5F5F5F   
0118 5F5F5F0A   
011C 0D         
011D 416E616C        170              DB 'Analog Devices MicroConverter ADuC814',10,13
0121 6F672044   
0125 65766963   
0129 6573204D   
012D 6963726F   
0131 436F6E76   
0135 65727465   
0139 72204144   
013D 75433831   
0141 340A0D     
0144 20202020        171              DB '         UART Demo Routine',10,13
0148 20202020   
014C 20554152   
0150 54204465   
0154 6D6F2052   
0158 6F757469   
015C 6E650A0D   
0160 20205472        172              DB '  Transmission of Data from 0 to 7F',10,13,0
0164 616E736D   
0168 69737369   
016C 6F6E206F   
0170 66204461   
0174 74612066   
0178 726F6D20   
017C 3020746F   
0180 2037460A   
0184 0D00       
                     173    
                     174    END

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
UART2                                                                                                         PAGE 5

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
CONT . . . . . . . . . . . . . .  C ADDR  009AH  
DELAY. . . . . . . . . . . . . .  C ADDR  00E8H  
DLY0 . . . . . . . . . . . . . .  C ADDR  00E9H  
DLY1 . . . . . . . . . . . . . .  C ADDR  00EBH  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00DCH  
IO0010 . . . . . . . . . . . . .  C ADDR  00AFH  
IO0020 . . . . . . . . . . . . .  C ADDR  00BBH  
IO0030 . . . . . . . . . . . . .  C ADDR  00E5H  
LED. . . . . . . . . . . . . . .    NUMB  00B3H  
LOOP1. . . . . . . . . . . . . .  C ADDR  007EH  
LOOP2. . . . . . . . . . . . . .  C ADDR  008AH  
MAIN . . . . . . . . . . . . . .  C ADDR  0060H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RCAP2H . . . . . . . . . . . . .  D ADDR  00CBH  PREDEFINED  
RCAP2L . . . . . . . . . . . . .  D ADDR  00CAH  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00C0H  
SENDSTRING . . . . . . . . . . .  C ADDR  00A8H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00C8H  
START. . . . . . . . . . . . . .  C ADDR  0072H  
T2CON. . . . . . . . . . . . . .  D ADDR  00C8H  PREDEFINED  
TH2. . . . . . . . . . . . . . .  D ADDR  00CDH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TITLE. . . . . . . . . . . . . .  C ADDR  00F4H  
TL2. . . . . . . . . . . . . . .  D ADDR  00CCH  PREDEFINED  
WAIT5S . . . . . . . . . . . . .  C ADDR  00A1H  

⌨️ 快捷键说明

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