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

📄 uart3.lst

📁 aduc842原程序代码 ad公司芯片应用笔记
💻 LST
字号:
UART3                                                                                                         PAGE 1

                       1    ;====================================================================
                       2    ;
                       3    ; Author        : ADI - Apps
                       4    ;
                       5    ; Date          : October 2003
                       6    ;
                       7    ; File          : UART.asm
                       8    ;
                       9    ; Hardware      : ADuC842/ADuC843
                      10    ;
                      11    ; Description   : This Program transmits a number (starting at 0) 
                      12    ;                 down the UART every second. Pressing the INT0 
                      13    ;                 button increases the number being outputted.
                      14    ;                 Pressing a key on the keyboard causes the ASCII 
                      15    ;                 char to be transmitted. Eg Pressing the 'A' button
                      16    ;                 causes the number '41h' to appear on the 
                      17    ;                 hyperterminal program.
                      18    ;
                      19    ;====================================================================
                      20    ;              
                      21    $MOD842                                  ;Use 8052 predefined Symbols
                      22    
  00B4                23    LED     EQU     P3.4
                      24    
                      25    ;____________________________________________________________________
                      26                                       ; DEFINE VARIABLES IN INTERNAL RAM
----                  27    DSEG
0060                  28    ORG 0060h
0060                  29    INPUT:     DS   1               ; data byte received by SPI
0061                  30    OUTPUT:    DS   1               ; data byte to send by SPI
                      31    
                      32    ;____________________________________________________________________
                      33                                                      ; BEGINNING OF CODE
----                  34    CSEG
0000                  35    ORG 0000H
                      36    
0000 020060           37            JMP MAIN
                      38    ;____________________________________________________________________
                      39                                                 ; INTERRUPT VECTOR SPACE
0003                  40    ORG 0003h ; (.................... INT0 ISR)
                      41    
0003 0561             42            INC     OUTPUT
0005 32               43            RETI
                      44    ;____________________________________________________________________
                      45    
0060                  46    ORG 0060H                    ; Start code at address above interrupts                   
                      47    
                      48    
0060                  49    MAIN:                          ; Main program
0060 75D703           50            MOV     PLLCON,#03H     
0063 759E83           51            MOV     T3CON,#83h
0066 759D2D           52            MOV     T3FD,#02Dh
0069 759852           53            MOV     SCON,#52h
                      54    
                      55    
                      56    ; CONFIGURE INTERRUPT 0...
                      57    
006C D288             58            SETB    IT0             ; INT0 edge triggered
UART3                                                                                                         PAGE 2

006E D2A8             59            SETB    EX0             ; enable INT0 interrupt
                      60    
                      61    ; ENABLE INTERRUPTS & ENTER MAIN LOOP...
                      62    
0070 756100           63            MOV     OUTPUT,#0       ; set initial value for output byte
0073 D2AF             64            SETB    EA              ; enable inturrupts
                      65    
0075                  66    TXDATA:        
0075 B2B4             67            CPL      LED          ; CPL LED with each transmission
                      68    
0077 E561             69            MOV      A, OUTPUT    ; output value 
0079 1200B1           70            CALL     SENDVAL
007C 9000DD           71            MOV      DPTR,#SEPERATOR ; send line-feed & crdg-return..
007F 120091           72            CALL     SENDSTRING      ; ..out the UART
                      73    
0082 7464             74            MOV      A, #100
0084 1200D1           75            CALL     DELAY        ; delay for 1s
                      76    
0087 3098EB           77            JNB      RI, TXDATA   ; check if data is received from keyboard
                      78    
008A 859961           79            MOV      OUTPUT, SBUF
008D C298             80            CLR      RI
008F 80E4             81            JMP      TXDATA
                      82            
                      83    
                      84    ;____________________________________________________________________
                      85                                                             ; SENDSTRING
                      86    
0091                  87    SENDSTRING:     ; sends ASCII string to UART starting at location
                      88                    ; DPTR and ending with a null (0) value
                      89    
0091 C0E0             90            PUSH    ACC
0093 C0F0             91            PUSH    B
0095 E4               92            CLR     A
0096 F5F0             93            MOV     B,A
0098 E5F0             94    IO0010: MOV     A,B
009A 05F0             95            INC     B
009C 93               96            MOVC    A,@A+DPTR
009D 6005             97            JZ      IO0020
009F 1200A9           98            CALL    SENDCHAR
00A2 80F4             99            JMP     IO0010
00A4 D0F0            100    IO0020: POP     B
00A6 D0E0            101            POP     ACC
                     102    
00A8 22              103            RET
                     104    
                     105    ;____________________________________________________________________
                     106                                                               ; SENDCHAR
                     107    
00A9                 108    SENDCHAR:       ; sends ASCII value contained in A to UART
                     109    
00A9 3099FD          110            JNB     TI,$            ; wait til present char gone
00AC C299            111            CLR     TI              ; must clear TI
00AE F599            112            MOV     SBUF,A
                     113    
00B0 22              114            RET
                     115    
                     116    ;____________________________________________________________________
UART3                                                                                                         PAGE 3

                     117                                                                ; SENDVAL
                     118    
00B1                 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    
00B1 C0E0            123            PUSH    ACC
00B3 C4              124            SWAP    A
00B4 1200C5          125            CALL    HEX2ASCII
00B7 11A9            126            CALL    SENDCHAR        ; send high nibble
00B9 D0E0            127            POP     ACC
00BB C0E0            128            PUSH    ACC
00BD 1200C5          129            CALL    HEX2ASCII
00C0 11A9            130            CALL    SENDCHAR        ; send low nibble
00C2 D0E0            131            POP     ACC
                     132    
00C4 22              133            RET
                     134    
                     135    
                     136    ;____________________________________________________________________
                     137                                                              ; HEX2ASCII
                     138    
00C5                 139    HEX2ASCII:      ; converts A into the hex character representing the
                     140                    ; value of A's least significant nibble
                     141    
00C5 540F            142            ANL     A,#00Fh
00C7 B40A00          143            CJNE    A,#00Ah,$+3
00CA 4002            144            JC      IO0030
00CC 2407            145            ADD     A,#007h
00CE 2430            146    IO0030: ADD     A,#'0'
                     147    
00D0 22              148            RET
                     149    
                     150    ;____________________________________________________________________
                     151                                                                  ; DELAY
00D1                 152    DELAY:                                  ; Delays by 100ms * A
                     153                                            ; 100mSec based on 2.097152MHZ 
                     154                                            ; Core Clock 
                     155                                            
00D1 FD              156                    MOV     R5,A            ; Acc holds delay variable (1 clock)
00D2 7E1B            157     DLY0:          MOV     R6,#01Bh        ; Set up delay loop0 (2 clocks)
00D4 7FFF            158     DLY1:          MOV     R7,#0FFh        ; Set up delay loop1 (2 clocks)
00D6 DFFE            159                    DJNZ    R7,$            ; Dec R7 & Jump here until R7 is 0 (3 clocks)
00D8 DEFA            160                    DJNZ    R6,DLY1         ; Dec R6 & Jump DLY1 until R6 is 0 (3 clocks)
00DA DDF6            161                    DJNZ    R5,DLY0         ; Dec R5 & Jump DLY0 until R5 is 0 (3 clocks)
00DC 22              162                    RET                     ; Return from subroutine
                     163    ;____________________________________________________________________
                     164    
00DD 0A0D00          165    SEPERATOR:      DB 10,13,0
                     166    
                     167    
                     168    END

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
UART3                                                                                                         PAGE 4

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
DELAY. . . . . . . . . . . . . .  C ADDR  00D1H  
DLY0 . . . . . . . . . . . . . .  C ADDR  00D2H  
DLY1 . . . . . . . . . . . . . .  C ADDR  00D4H  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00C5H  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  NOT USED  
IO0010 . . . . . . . . . . . . .  C ADDR  0098H  
IO0020 . . . . . . . . . . . . .  C ADDR  00A4H  
IO0030 . . . . . . . . . . . . .  C ADDR  00CEH  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
MAIN . . . . . . . . . . . . . .  C ADDR  0060H  
OUTPUT . . . . . . . . . . . . .  D ADDR  0061H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
PLLCON . . . . . . . . . . . . .  D ADDR  00D7H  PREDEFINED  
RI . . . . . . . . . . . . . . .  B ADDR  0098H  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00A9H  
SENDSTRING . . . . . . . . . . .  C ADDR  0091H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00B1H  
SEPERATOR. . . . . . . . . . . .  C ADDR  00DDH  
T3CON. . . . . . . . . . . . . .  D ADDR  009EH  PREDEFINED  
T3FD . . . . . . . . . . . . . .  D ADDR  009DH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TXDATA . . . . . . . . . . . . .  C ADDR  0075H  

⌨️ 快捷键说明

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