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

📄 uart1.lst

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

                       1    ;====================================================================
                       2    ;
                       3    ; Author        : ADI - Apps
                       4    ;
                       5    ; Date          : Febuary 2001
                       6    ;
                       7    ; File          : UART.asm
                       8    ;
                       9    ; Hardware      : ADuC814
                      10    ;
                      11    ; Description   : This Program saves 16 numbers in order initially 
                      12    ;                 starting with 0 into memory locations 40h to 50h. 
                      13    ;                 When finished the values in these locations are 
                      14    ;                 transmitted down the UART in ASCII form to the PC
                      15    ;                 where they can be viewed using the preconfigured 
                      16    ;                 Hyperterminal program. (c:\ADuC\9600com1.ht)
                      17    ;                 
                      18    ;                 After the transmission of the 16 bytes a 5 second
                      19    ;                 delay is called and the process is repeated, this 
                      20    ;                 time starting with the saving of 10h to location 
                      21    ;                 40h. 
                      22    ;
                      23    ;====================================================================
                      24    ;              
                      25    $MOD814                                 ;Use 8052 predefined Symbols
                      26    
  00B3                27    LED     EQU     P3.3
                      28    
                      29    ;____________________________________________________________________
                      30                                                      ; BEGINNING OF CODE
----                  31    CSEG
0000                  32    ORG 0000H
                      33    
0000 020060           34            JMP MAIN
                      35    
0060                  36    ORG 0060H                    ; Start code at address above interrupts                   
                      37    
                      38    
0060                  39    MAIN:                        ; Main program
                      40    
0060 75CBFF           41            MOV     RCAP2H,#0FFh ; config UART for 9600 baud
0063 75CAF9           42            MOV     RCAP2L,#-7   ; 
0066 75CDFF           43            MOV     TH2,#0FFh
0069 75CCF9           44            MOV     TL2,#-7
006C 759852           45            MOV     SCON,#52h
006F 75C834           46            MOV     T2CON,#34h
                      47    
0072 7800             48            MOV     R0, #00       ; start output data at 0 
0074 7940             49            MOV     R1, #40h      ; initialise R1 to 40 to store the 
                      50                                  ; input data from memory location 40
0076                  51    SAVENOS: 
0076 E8               52            MOV     A,R0
0077 F7               53            MOV     @R1, A        ; move R0 into memory location R1
0078 09               54            INC     R1            ; increment memory location and data so 
                      55                                  ; new data is stored in new address
0079 08               56            INC     R0
007A B950F9           57            CJNE    R1, #50H, SAVENOS  ; reset memory location to 40h 
                      58                                    ; when memory location reaches 50h
UART1                                                                                                         PAGE 2

                      59                                    ; saving 16 bytes of data
                      60    
                      61    ; Transmit the values in locations 40h->50h up the UART wait for 
                      62    ; 5 seconds and then repeat
                      63    
                      64    
007D B2B3             65    START:  CPL      LED          ;CPL LED with each transmission
007F 9000F6           66            MOV      DPTR, #TITLE 
0082 1200AA           67            CALL     SENDSTRING   ; write title block on screen
                      68    
0085 7940             69            MOV      R1, #40h     ; move value at address 40 into R2
0087 E7               70            MOV      A, @R1     
0088 FA               71            MOV      R2, A                           
                      72    
0089                  73    NEXT:                        ; Put new value on a new line
0089 740A             74            MOV      A, #10      ; Transmit a linefeed (= ASCII 10)
008B 1200C2           75            CALL     SENDCHAR
008E 740D             76            MOV      A, #13      ;Transmit a carriage return (=ASCII 13)
0090 1200C2           77            CALL     SENDCHAR
                      78    
0093 EA               79            MOV      A, R2       ; Transmit R2 i.e. value @ address R1
0094 1200CA           80            CALL     SENDVAL
0097 09               81            INC      R1          ; Increment address
0098 E7               82            MOV      A, @R1
0099 FA               83            MOV      R2, A       ; R2 holds the value @ addrR1
                      84    
009A E9               85            MOV      A, R1       ; Check if at address 50h
009B B450EB           86            CJNE     A, #50h, NEXT   ; if not jump to Next 
009E 0200A1           87            JMP      WAIT5S          ; if so wait 5s and repeat
                      88    
00A1 7432             89    WAIT5S: MOV      A, #50
00A3 1200EA           90            CALL     DELAY           ; Wait 5 seconds
00A6 7940             91            MOV      R1, #40h 
00A8 80CC             92            JMP      SAVENOS       ; Resave new numbers to same addresses
                      93            
                      94    
                      95    ;____________________________________________________________________
                      96                                                             ; SENDSTRING
                      97    
00AA                  98    SENDSTRING:     ; sends ASCII string to UART starting at location
                      99                    ; DPTR and ending with a null (0) value
                     100    
00AA C0E0            101            PUSH    ACC
00AC C0F0            102            PUSH    B
00AE E4              103            CLR     A
00AF F5F0            104            MOV     B,A
00B1 E5F0            105    IO0010: MOV     A,B
00B3 05F0            106            INC     B
00B5 93              107            MOVC    A,@A+DPTR
00B6 6005            108            JZ      IO0020
00B8 1200C2          109            CALL    SENDCHAR
00BB 80F4            110            JMP     IO0010
00BD D0F0            111    IO0020: POP     B
00BF D0E0            112            POP     ACC
                     113    
00C1 22              114            RET
                     115    
                     116    ;____________________________________________________________________
UART1                                                                                                         PAGE 3

                     117                                                               ; SENDCHAR
                     118    
00C2                 119    SENDCHAR:       ; sends ASCII value contained in A to UART
                     120    
00C2 3099FD          121            JNB     TI,$            ; wait til present char gone
00C5 C299            122            CLR     TI              ; must clear TI
00C7 F599            123            MOV     SBUF,A
                     124    
00C9 22              125            RET
                     126    
                     127    ;____________________________________________________________________
                     128                                                                ; SENDVAL
                     129    
00CA                 130    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                     131                    ; and then spits these two characters up the UART.
                     132                    ; does not change the value of A.
                     133    
00CA C0E0            134            PUSH    ACC
00CC C4              135            SWAP    A
00CD 1200DE          136            CALL    HEX2ASCII
00D0 11C2            137            CALL    SENDCHAR        ; send high nibble
00D2 D0E0            138            POP     ACC
00D4 C0E0            139            PUSH    ACC
00D6 1200DE          140            CALL    HEX2ASCII
00D9 11C2            141            CALL    SENDCHAR        ; send low nibble
00DB D0E0            142            POP     ACC
                     143    
00DD 22              144            RET
                     145    
                     146    
                     147    ;____________________________________________________________________
                     148                                                              ; HEX2ASCII
                     149    
00DE                 150    HEX2ASCII:      ; converts A into the hex character representing the
                     151                    ; value of A's least significant nibble
                     152    
00DE 540F            153            ANL     A,#00Fh
00E0 B40A00          154            CJNE    A,#00Ah,$+3
00E3 4002            155            JC      IO0030
00E5 2407            156            ADD     A,#007h
00E7 2430            157    IO0030: ADD     A,#'0'
                     158    
00E9 22              159            RET
                     160    
                     161    ;____________________________________________________________________
                     162                                                                  ; DELAY
                     163                                                            ; 100ms DELAY
00EA                 164    DELAY:                                  ; Delays by 100ms * A
                     165                                            ; 100mSec based on 2.097152MHZ 
                     166                                            ; Core Clock 
                     167                                            ; i.e. default ADuC814 Clock
                     168    
00EA F9              169                    MOV     R1,A            ; Acc holds delay variable
00EB 7A22            170     DLY0:          MOV     R2,#022h        ; Set up delay loop0
00ED 7BFF            171     DLY1:          MOV     R3,#0FFh        ; Set up delay loop1
00EF DBFE            172                    DJNZ    R3,$            ; Dec R3 & Jump here until R3 is 0
00F1 DAFA            173                    DJNZ    R2,DLY1         ; Dec R2 & Jump DLY1 until R2 is 0
00F3 D9F6            174                    DJNZ    R1,DLY0         ; Dec R1 & Jump DLY0 until R1 is 0
UART1                                                                                                         PAGE 4

00F5 22              175                    RET                     ; Return from subroutine
                     176    
                     177    
                     178    ;____________________________________________________________________
                     179    
                     180    
00F6 0A0A0D5F        181    TITLE:    DB 10,10,13,'____________________________________',10,13
00FA 5F5F5F5F   
00FE 5F5F5F5F   
0102 5F5F5F5F   
0106 5F5F5F5F   
010A 5F5F5F5F   
010E 5F5F5F5F   
0112 5F5F5F5F   
0116 5F5F5F5F   
011A 5F5F5F0A   
011E 0D         
011F 416E616C        182              DB 'Analog Devices MicroConverter ADuC814',10,13
0123 6F672044   
0127 65766963   
012B 6573204D   
012F 6963726F   
0133 436F6E76   
0137 65727465   
013B 72204144   
013F 75433831   
0143 340A0D     
0146 20202020        183              DB '         UART Demo Routine',10,13
014A 20202020   
014E 20554152   
0152 54204465   
0156 6D6F2052   
015A 6F757469   
015E 6E650A0D   
0162 20204461        184              DB '  Data Stored in Memory in Hex Form',10,13,0
0166 74612053   
016A 746F7265   
016E 6420696E   
0172 204D656D   
0176 6F727920   
017A 696E2048   
017E 65782046   
0182 6F726D0A   
0186 0D00       
                     185    
                     186    
                     187    END

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
DELAY. . . . . . . . . . . . . .  C ADDR  00EAH  
DLY0 . . . . . . . . . . . . . .  C ADDR  00EBH  
DLY1 . . . . . . . . . . . . . .  C ADDR  00EDH  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00DEH  
IO0010 . . . . . . . . . . . . .  C ADDR  00B1H  
IO0020 . . . . . . . . . . . . .  C ADDR  00BDH  
IO0030 . . . . . . . . . . . . .  C ADDR  00E7H  
LED. . . . . . . . . . . . . . .    NUMB  00B3H  
MAIN . . . . . . . . . . . . . .  C ADDR  0060H  
NEXT . . . . . . . . . . . . . .  C ADDR  0089H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RCAP2H . . . . . . . . . . . . .  D ADDR  00CBH  PREDEFINED  
RCAP2L . . . . . . . . . . . . .  D ADDR  00CAH  PREDEFINED  
SAVENOS. . . . . . . . . . . . .  C ADDR  0076H  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00C2H  
SENDSTRING . . . . . . . . . . .  C ADDR  00AAH  
SENDVAL. . . . . . . . . . . . .  C ADDR  00CAH  
START. . . . . . . . . . . . . .  C ADDR  007DH  NOT USED  
T2CON. . . . . . . . . . . . . .  D ADDR  00C8H  PREDEFINED  
TH2. . . . . . . . . . . . . . .  D ADDR  00CDH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TITLE. . . . . . . . . . . . . .  C ADDR  00F6H  
TL2. . . . . . . . . . . . . . .  D ADDR  00CCH  PREDEFINED  
WAIT5S . . . . . . . . . . . . .  C ADDR  00A1H  

⌨️ 快捷键说明

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