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

📄 842slave.lst

📁 aduc842原程序代码 ad公司芯片应用笔记
💻 LST
📖 第 1 页 / 共 2 页
字号:
                =1   170                                                               ; SENDCHAR
                =1   171    
009E            =1   172    SENDCHAR:       ; sends ASCII value contained in A to UART
                =1   173    
009E 3099FD     =1   174            JNB     TI,$            ; wait til present char gone
842SLAVE                                                                                                      PAGE 4

00A1 C299       =1   175            CLR     TI              ; must clear TI
00A3 F599       =1   176            MOV     SBUF,A
                =1   177    
00A5 22         =1   178            RET
                =1   179    
                =1   180    ;____________________________________________________________________
                =1   181                                                                ; SENDVAL
                =1   182    
00A6            =1   183    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                =1   184                    ; and then spits these two characters up the UART.
                =1   185                    ; does not change the value of A.
                =1   186    
00A6 C0E0       =1   187            PUSH    ACC
00A8 C4         =1   188            SWAP    A
00A9 1200BA     =1   189            CALL    HEX2ASCII
00AC 119E       =1   190            CALL    SENDCHAR        ; send high nibble
00AE D0E0       =1   191            POP     ACC
00B0 C0E0       =1   192            PUSH    ACC
00B2 1200BA     =1   193            CALL    HEX2ASCII
00B5 119E       =1   194            CALL    SENDCHAR        ; send low nibble
00B7 D0E0       =1   195            POP     ACC
                =1   196    
00B9 22         =1   197            RET
                =1   198    
                =1   199    ;____________________________________________________________________
                =1   200                                                              ; HEX2ASCII
                =1   201    
00BA            =1   202    HEX2ASCII:      ; converts A into the hex character representing the
                =1   203                    ; value of A's least significant nibble
                =1   204    
00BA 540F       =1   205            ANL     A,#00Fh
00BC B40A00     =1   206            CJNE    A,#00Ah,$+3
00BF 4002       =1   207            JC      IO0030
00C1 2407       =1   208            ADD     A,#007h
00C3 2430       =1   209    IO0030: ADD     A,#'0'
                =1   210    
00C5 22         =1   211            RET
                =1   212    
                =1   213    ;____________________________________________________________________
                =1   214                                                              ; ASCII2HEX
                =1   215    
00C6            =1   216    ASCII2HEX:      ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
                =1   217                    ; into the corresponding number (0-15).  returns C=1
                =1   218                    ; when input is other than an ASCII digit,
                =1   219                    ; indicating invalid output (returned as 255).
                =1   220    
00C6 C3         =1   221            CLR     C
00C7 9430       =1   222            SUBB    A,#'0'
00C9 B40A00     =1   223            CJNE    A,#10,$+3
00CC 401B       =1   224            JC      IO0050          ; if '0'<=char<='9', return OK
00CE B41100     =1   225            CJNE    A,#17,$+3
00D1 4013       =1   226            JC      IO0040          ; if '9'<char<'A', return FAIL
00D3 9407       =1   227            SUBB    A,#7
00D5 B41000     =1   228            CJNE    A,#10h,$+3
00D8 400F       =1   229            JC      IO0050          ; if 'A'<=char<='F', return OK
00DA B42A00     =1   230            CJNE    A,#42,$+3
00DD 4007       =1   231            JC      IO0040          ; if 'F'<char<'a', return FAIL
00DF 9420       =1   232            SUBB    A,#20h
842SLAVE                                                                                                      PAGE 5

00E1 B41000     =1   233            CJNE    A,#10h,$+3
00E4 4003       =1   234            JC      IO0050          ; if 'a'<=char<='f', return OK..
                =1   235    
00E6 C3         =1   236    IO0040: CLR     C               ; ..else return FAIL
00E7 74FF       =1   237            MOV     A,#0FFh
                =1   238    
00E9 B3         =1   239    IO0050: CPL     C
00EA 22         =1   240            RET
                =1   241    
                =1   242    ;____________________________________________________________________
                =1   243                                                                ; GETCHAR
                =1   244    
00EB            =1   245    GETCHAR:        ; waits for a single ASCII character to be received
                =1   246                    ; by the UART.  places this character into A.
                =1   247    
00EB 3098FD     =1   248            JNB     RI,$
00EE E599       =1   249            MOV     A,SBUF
00F0 C298       =1   250            CLR     RI
                =1   251    
00F2 22         =1   252            RET
                =1   253    
                =1   254    ;____________________________________________________________________
                =1   255                                                                 ; GETVAL
                =1   256    
00F3            =1   257    GETVAL:         ; waits for two ASCII hex digits to be received by
                =1   258                    ; the UART.  returns the hex value in A.
                =1   259    
00F3 C0F0       =1   260            PUSH    B
00F5 C000       =1   261            PUSH    0
00F7 C298       =1   262    IO0060: CLR     RI
00F9 11EB       =1   263            CALL    GETCHAR         ; first nibble
00FB F500       =1   264            MOV     0,A             ; store received char
00FD 11C6       =1   265            CALL    ASCII2HEX
00FF 40F6       =1   266            JC      IO0060          ; if not '0' thru 'F', don't accept
0101 C4         =1   267            SWAP    A               ; swap nibbles
0102 F5F0       =1   268            MOV     B,A             ; store nibble in B
0104 E500       =1   269            MOV     A,0             ; echo received char
0106 119E       =1   270            CALL    SENDCHAR
0108 C298       =1   271    IO0070: CLR     RI
010A 11EB       =1   272            CALL    GETCHAR         ; second nibble
010C F500       =1   273            MOV     0,A             ; store received char
010E 11C6       =1   274            CALL    ASCII2HEX
0110 40F6       =1   275            JC      IO0070          ; if not '0' thru 'F', don't accept
0112 45F0       =1   276            ORL     A,B             ; combine nibbles
0114 F5F0       =1   277            MOV     B,A             ; store results in B
0116 E500       =1   278            MOV     A,0             ; echo received char
0118 119E       =1   279            CALL    SENDCHAR
011A E5F0       =1   280            MOV     A,B             ; final result
011C D000       =1   281            POP     0
011E D0F0       =1   282            POP     B
                =1   283    
0120 22         =1   284            RET
                =1   285    
                     286    
                     287    ;____________________________________________________________________
                     288                                                       ; TEXT DATA TABLES
                     289    
0121 0A0D00          290    SEPERATOR:      DB 10,13,0
842SLAVE                                                                                                      PAGE 6

                     291    
                     292    ;____________________________________________________________________
                     293    
                     294    END
                     295    

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  00C6H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
GETCHAR. . . . . . . . . . . . .  C ADDR  00EBH  
GETVAL . . . . . . . . . . . . .  C ADDR  00F3H  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00BAH  
IEIP2. . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  
IO0010 . . . . . . . . . . . . .  C ADDR  008DH  
IO0020 . . . . . . . . . . . . .  C ADDR  0099H  
IO0030 . . . . . . . . . . . . .  C ADDR  00C3H  
IO0040 . . . . . . . . . . . . .  C ADDR  00E6H  
IO0050 . . . . . . . . . . . . .  C ADDR  00E9H  
IO0060 . . . . . . . . . . . . .  C ADDR  00F7H  
IO0070 . . . . . . . . . . . . .  C ADDR  0108H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
LOOP . . . . . . . . . . . . . .  C ADDR  006CH  
MAIN . . . . . . . . . . . . . .  C ADDR  004BH  
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  009EH  
SENDSTRING . . . . . . . . . . .  C ADDR  0086H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00A6H  
SEPERATOR. . . . . . . . . . . .  C ADDR  0121H  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
SPICON . . . . . . . . . . . . .  D ADDR  00F8H  PREDEFINED  
SPIDAT . . . . . . . . . . . . .  D ADDR  00F7H  PREDEFINED  
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 + -