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

📄 842mstr.lst

📁 aduc842原程序代码 ad公司芯片应用笔记
💻 LST
📖 第 1 页 / 共 2 页
字号:
                =1   186    
00B7 C0E0       =1   187            PUSH    ACC
00B9 C0F0       =1   188            PUSH    B
00BB E4         =1   189            CLR     A
00BC F5F0       =1   190            MOV     B,A
00BE E5F0       =1   191    IO0010: MOV     A,B
00C0 05F0       =1   192            INC     B
00C2 93         =1   193            MOVC    A,@A+DPTR
00C3 6005       =1   194            JZ      IO0020
00C5 1200CF     =1   195            CALL    SENDCHAR
00C8 80F4       =1   196            JMP     IO0010
00CA D0F0       =1   197    IO0020: POP     B
00CC D0E0       =1   198            POP     ACC
                =1   199    
00CE 22         =1   200            RET
                =1   201    
                =1   202    ;____________________________________________________________________
                =1   203                                                               ; SENDCHAR
                =1   204    
00CF            =1   205    SENDCHAR:       ; sends ASCII value contained in A to UART
                =1   206    
00CF 3099FD     =1   207            JNB     TI,$            ; wait til present char gone
00D2 C299       =1   208            CLR     TI              ; must clear TI
00D4 F599       =1   209            MOV     SBUF,A
                =1   210    
00D6 22         =1   211            RET
                =1   212    
                =1   213    ;____________________________________________________________________
                =1   214                                                                ; SENDVAL
                =1   215    
00D7            =1   216    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                =1   217                    ; and then spits these two characters up the UART.
                =1   218                    ; does not change the value of A.
                =1   219    
00D7 C0E0       =1   220            PUSH    ACC
00D9 C4         =1   221            SWAP    A
00DA 1200EB     =1   222            CALL    HEX2ASCII
00DD 11CF       =1   223            CALL    SENDCHAR        ; send high nibble
00DF D0E0       =1   224            POP     ACC
00E1 C0E0       =1   225            PUSH    ACC
00E3 1200EB     =1   226            CALL    HEX2ASCII
00E6 11CF       =1   227            CALL    SENDCHAR        ; send low nibble
00E8 D0E0       =1   228            POP     ACC
                =1   229    
00EA 22         =1   230            RET
                =1   231    
                =1   232    ;____________________________________________________________________
842MSTR                                                                                                       PAGE 5

                =1   233                                                              ; HEX2ASCII
                =1   234    
00EB            =1   235    HEX2ASCII:      ; converts A into the hex character representing the
                =1   236                    ; value of A's least significant nibble
                =1   237    
00EB 540F       =1   238            ANL     A,#00Fh
00ED B40A00     =1   239            CJNE    A,#00Ah,$+3
00F0 4002       =1   240            JC      IO0030
00F2 2407       =1   241            ADD     A,#007h
00F4 2430       =1   242    IO0030: ADD     A,#'0'
                =1   243    
00F6 22         =1   244            RET
                =1   245    
                =1   246    ;____________________________________________________________________
                =1   247                                                              ; ASCII2HEX
                =1   248    
00F7            =1   249    ASCII2HEX:      ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
                =1   250                    ; into the corresponding number (0-15).  returns C=1
                =1   251                    ; when input is other than an ASCII digit,
                =1   252                    ; indicating invalid output (returned as 255).
                =1   253    
00F7 C3         =1   254            CLR     C
00F8 9430       =1   255            SUBB    A,#'0'
00FA B40A00     =1   256            CJNE    A,#10,$+3
00FD 401B       =1   257            JC      IO0050          ; if '0'<=char<='9', return OK
00FF B41100     =1   258            CJNE    A,#17,$+3
0102 4013       =1   259            JC      IO0040          ; if '9'<char<'A', return FAIL
0104 9407       =1   260            SUBB    A,#7
0106 B41000     =1   261            CJNE    A,#10h,$+3
0109 400F       =1   262            JC      IO0050          ; if 'A'<=char<='F', return OK
010B B42A00     =1   263            CJNE    A,#42,$+3
010E 4007       =1   264            JC      IO0040          ; if 'F'<char<'a', return FAIL
0110 9420       =1   265            SUBB    A,#20h
0112 B41000     =1   266            CJNE    A,#10h,$+3
0115 4003       =1   267            JC      IO0050          ; if 'a'<=char<='f', return OK..
                =1   268    
0117 C3         =1   269    IO0040: CLR     C               ; ..else return FAIL
0118 74FF       =1   270            MOV     A,#0FFh
                =1   271    
011A B3         =1   272    IO0050: CPL     C
011B 22         =1   273            RET
                =1   274    
                =1   275    ;____________________________________________________________________
                =1   276                                                                ; GETCHAR
                =1   277    
011C            =1   278    GETCHAR:        ; waits for a single ASCII character to be received
                =1   279                    ; by the UART.  places this character into A.
                =1   280    
011C 3098FD     =1   281            JNB     RI,$
011F E599       =1   282            MOV     A,SBUF
0121 C298       =1   283            CLR     RI
                =1   284    
0123 22         =1   285            RET
                =1   286    
                =1   287    ;____________________________________________________________________
                =1   288                                                                 ; GETVAL
                =1   289    
0124            =1   290    GETVAL:         ; waits for two ASCII hex digits to be received by
842MSTR                                                                                                       PAGE 6

                =1   291                    ; the UART.  returns the hex value in A.
                =1   292    
0124 C0F0       =1   293            PUSH    B
0126 C000       =1   294            PUSH    0
0128 C298       =1   295    IO0060: CLR     RI
012A 311C       =1   296            CALL    GETCHAR         ; first nibble
012C F500       =1   297            MOV     0,A             ; store received char
012E 11F7       =1   298            CALL    ASCII2HEX
0130 40F6       =1   299            JC      IO0060          ; if not '0' thru 'F', don't accept
0132 C4         =1   300            SWAP    A               ; swap nibbles
0133 F5F0       =1   301            MOV     B,A             ; store nibble in B
0135 E500       =1   302            MOV     A,0             ; echo received char
0137 11CF       =1   303            CALL    SENDCHAR
0139 C298       =1   304    IO0070: CLR     RI
013B 311C       =1   305            CALL    GETCHAR         ; second nibble
013D F500       =1   306            MOV     0,A             ; store received char
013F 11F7       =1   307            CALL    ASCII2HEX
0141 40F6       =1   308            JC      IO0070          ; if not '0' thru 'F', don't accept
0143 45F0       =1   309            ORL     A,B             ; combine nibbles
0145 F5F0       =1   310            MOV     B,A             ; store results in B
0147 E500       =1   311            MOV     A,0             ; echo received char
0149 11CF       =1   312            CALL    SENDCHAR
014B E5F0       =1   313            MOV     A,B             ; final result
014D D000       =1   314            POP     0
014F D0F0       =1   315            POP     B
                =1   316    
0151 22         =1   317            RET
                =1   318    
                     319    
                     320    ;____________________________________________________________________
                     321                                                       ; TEXT DATA TABLES
                     322    
0152 0A0D00          323    SEPERATOR:      DB 10,13,0
                     324    
                     325    ;____________________________________________________________________
                     326    
                     327    END
                     328    

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
842MSTR                                                                                                       PAGE 7

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  00F7H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
DELAY. . . . . . . . . . . . . .  C ADDR  00A3H  
DLY1 . . . . . . . . . . . . . .  C ADDR  00A9H  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
GETCHAR. . . . . . . . . . . . .  C ADDR  011CH  
GETVAL . . . . . . . . . . . . .  C ADDR  0124H  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00EBH  
IEIP2. . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  
IO0010 . . . . . . . . . . . . .  C ADDR  00BEH  
IO0020 . . . . . . . . . . . . .  C ADDR  00CAH  
IO0030 . . . . . . . . . . . . .  C ADDR  00F4H  
IO0040 . . . . . . . . . . . . .  C ADDR  0117H  
IO0050 . . . . . . . . . . . . .  C ADDR  011AH  
IO0060 . . . . . . . . . . . . .  C ADDR  0128H  
IO0070 . . . . . . . . . . . . .  C ADDR  0139H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
LOOP . . . . . . . . . . . . . .  C ADDR  0066H  
MAIN . . . . . . . . . . . . . .  C ADDR  004BH  
OUTPUT . . . . . . . . . . . . .  D ADDR  0061H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RI . . . . . . . . . . . . . . .  B ADDR  0098H  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00CFH  
SENDSPI. . . . . . . . . . . . .  C ADDR  009DH  
SENDSTRING . . . . . . . . . . .  C ADDR  00B7H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00D7H  
SEPERATOR. . . . . . . . . . . .  C ADDR  0152H  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
SPICON . . . . . . . . . . . . .  D ADDR  00F8H  PREDEFINED  
SPIDAT . . . . . . . . . . . . .  D ADDR  00F7H  PREDEFINED  
SS . . . . . . . . . . . . . . .    NUMB  00B5H  
T3CON. . . . . . . . . . . . . .  D ADDR  009EH  PREDEFINED  
T3FD . . . . . . . . . . . . . .  D ADDR  009DH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  

⌨️ 快捷键说明

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