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

📄 812slave.lst

📁 aduc812的汇编例子
💻 LST
📖 第 1 页 / 共 2 页
字号:

0098 80F4       =1   175            JMP     IO0010
009A D0F0       =1   176    IO0020: POP     B
009C D0E0       =1   177            POP     ACC
                =1   178    
009E 22         =1   179            RET
                =1   180    
                =1   181    ;____________________________________________________________________
                =1   182                                                               ; SENDCHAR
                =1   183    
009F            =1   184    SENDCHAR:       ; sends ASCII value contained in A to UART
                =1   185    
009F 3099FD     =1   186            JNB     TI,$            ; wait til present char gone
00A2 C299       =1   187            CLR     TI              ; must clear TI
00A4 F599       =1   188            MOV     SBUF,A
                =1   189    
00A6 22         =1   190            RET
                =1   191    
                =1   192    ;____________________________________________________________________
                =1   193                                                                ; SENDVAL
                =1   194    
00A7            =1   195    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                =1   196                    ; and then spits these two characters up the UART.
                =1   197                    ; does not change the value of A.
                =1   198    
00A7 C0E0       =1   199            PUSH    ACC
00A9 C4         =1   200            SWAP    A
00AA 1200BB     =1   201            CALL    HEX2ASCII
00AD 119F       =1   202            CALL    SENDCHAR        ; send high nibble
00AF D0E0       =1   203            POP     ACC
00B1 C0E0       =1   204            PUSH    ACC
00B3 1200BB     =1   205            CALL    HEX2ASCII
00B6 119F       =1   206            CALL    SENDCHAR        ; send low nibble
00B8 D0E0       =1   207            POP     ACC
                =1   208    
00BA 22         =1   209            RET
                =1   210    
                =1   211    ;____________________________________________________________________
                =1   212                                                              ; HEX2ASCII
                =1   213    
00BB            =1   214    HEX2ASCII:      ; converts A into the hex character representing the
                =1   215                    ; value of A's least significant nibble
                =1   216    
00BB 540F       =1   217            ANL     A,#00Fh
00BD B40A00     =1   218            CJNE    A,#00Ah,$+3
00C0 4002       =1   219            JC      IO0030
00C2 2407       =1   220            ADD     A,#007h
00C4 2430       =1   221    IO0030: ADD     A,#'0'
                =1   222    
00C6 22         =1   223            RET
                =1   224    
                =1   225    ;____________________________________________________________________
                =1   226                                                              ; ASCII2HEX
                =1   227    
00C7            =1   228    ASCII2HEX:      ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
                =1   229                    ; into the corresponding number (0-15).  returns C=1
                =1   230                    ; when input is other than an ASCII digit,
                =1   231                    ; indicating invalid output (returned as 255).
                =1   232    
812SLAVE                                                                                                      PAGE 5

00C7 C3         =1   233            CLR     C
00C8 9430       =1   234            SUBB    A,#'0'
00CA B40A00     =1   235            CJNE    A,#10,$+3
00CD 401B       =1   236            JC      IO0050          ; if '0'<=char<='9', return OK
00CF B41100     =1   237            CJNE    A,#17,$+3
00D2 4013       =1   238            JC      IO0040          ; if '9'<char<'A', return FAIL
00D4 9407       =1   239            SUBB    A,#7
00D6 B41000     =1   240            CJNE    A,#10h,$+3
00D9 400F       =1   241            JC      IO0050          ; if 'A'<=char<='F', return OK
00DB B42A00     =1   242            CJNE    A,#42,$+3
00DE 4007       =1   243            JC      IO0040          ; if 'F'<char<'a', return FAIL
00E0 9420       =1   244            SUBB    A,#20h
00E2 B41000     =1   245            CJNE    A,#10h,$+3
00E5 4003       =1   246            JC      IO0050          ; if 'a'<=char<='f', return OK..
                =1   247    
00E7 C3         =1   248    IO0040: CLR     C               ; ..else return FAIL
00E8 74FF       =1   249            MOV     A,#0FFh
                =1   250    
00EA B3         =1   251    IO0050: CPL     C
00EB 22         =1   252            RET
                =1   253    
                =1   254    ;____________________________________________________________________
                =1   255                                                                ; GETCHAR
                =1   256    
00EC            =1   257    GETCHAR:        ; waits for a single ASCII character to be received
                =1   258                    ; by the UART.  places this character into A.
                =1   259    
00EC 3098FD     =1   260            JNB     RI,$
00EF E599       =1   261            MOV     A,SBUF
00F1 C298       =1   262            CLR     RI
                =1   263    
00F3 22         =1   264            RET
                =1   265    
                =1   266    ;____________________________________________________________________
                =1   267                                                                 ; GETVAL
                =1   268    
00F4            =1   269    GETVAL:         ; waits for two ASCII hex digits to be received by
                =1   270                    ; the UART.  returns the hex value in A.
                =1   271    
00F4 C0F0       =1   272            PUSH    B
00F6 C000       =1   273            PUSH    0
00F8 C298       =1   274    IO0060: CLR     RI
00FA 11EC       =1   275            CALL    GETCHAR         ; first nibble
00FC F500       =1   276            MOV     0,A             ; store received char
00FE 11C7       =1   277            CALL    ASCII2HEX
0100 40F6       =1   278            JC      IO0060          ; if not '0' thru 'F', don't accept
0102 C4         =1   279            SWAP    A               ; swap nibbles
0103 F5F0       =1   280            MOV     B,A             ; store nibble in B
0105 E500       =1   281            MOV     A,0             ; echo received char
0107 119F       =1   282            CALL    SENDCHAR
0109 C298       =1   283    IO0070: CLR     RI
010B 11EC       =1   284            CALL    GETCHAR         ; second nibble
010D F500       =1   285            MOV     0,A             ; store received char
010F 11C7       =1   286            CALL    ASCII2HEX
0111 40F6       =1   287            JC      IO0070          ; if not '0' thru 'F', don't accept
0113 45F0       =1   288            ORL     A,B             ; combine nibbles
0115 F5F0       =1   289            MOV     B,A             ; store results in B
0117 E500       =1   290            MOV     A,0             ; echo received char
812SLAVE                                                                                                      PAGE 6

0119 119F       =1   291            CALL    SENDCHAR
011B E5F0       =1   292            MOV     A,B             ; final result
011D D000       =1   293            POP     0
011F D0F0       =1   294            POP     B
                =1   295    
0121 22         =1   296            RET
                =1   297    
                     298    
                     299    ;____________________________________________________________________
                     300                                                       ; TEXT DATA TABLES
                     301    
0122 0A0D00          302    SEPERATOR:      DB 10,13,0
                     303    
                     304    ;____________________________________________________________________
                     305    
                     306    END
                     307    

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  00C7H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
GETCHAR. . . . . . . . . . . . .  C ADDR  00ECH  
GETVAL . . . . . . . . . . . . .  C ADDR  00F4H  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00BBH  
IE2. . . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  
IO0010 . . . . . . . . . . . . .  C ADDR  008EH  
IO0020 . . . . . . . . . . . . .  C ADDR  009AH  
IO0030 . . . . . . . . . . . . .  C ADDR  00C4H  
IO0040 . . . . . . . . . . . . .  C ADDR  00E7H  
IO0050 . . . . . . . . . . . . .  C ADDR  00EAH  
IO0060 . . . . . . . . . . . . .  C ADDR  00F8H  
IO0070 . . . . . . . . . . . . .  C ADDR  0109H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
LOOP . . . . . . . . . . . . . .  C ADDR  006DH  
MAIN . . . . . . . . . . . . . .  C ADDR  004BH  
OUTPUT . . . . . . . . . . . . .  D ADDR  0061H  
P1 . . . . . . . . . . . . . . .  D ADDR  0090H  PREDEFINED  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RI . . . . . . . . . . . . . . .  B ADDR  0098H  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  009FH  
SENDSTRING . . . . . . . . . . .  C ADDR  0087H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00A7H  
SEPERATOR. . . . . . . . . . . .  C ADDR  0122H  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
SPICON . . . . . . . . . . . . .  D ADDR  00F8H  PREDEFINED  
SPIDAT . . . . . . . . . . . . .  D ADDR  00F7H  PREDEFINED  
TH1. . . . . . . . . . . . . . .  D ADDR  008DH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TMOD . . . . . . . . . . . . . .  D ADDR  0089H  PREDEFINED  
TR1. . . . . . . . . . . . . . .  B ADDR  008EH  PREDEFINED  

⌨️ 快捷键说明

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