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

📄 831slave.lst

📁 大量ADuc831的程序员代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                =1   170    
                =1   171    ;____________________________________________________________________
                =1   172                                                               ; SENDCHAR
                =1   173    
009B            =1   174    SENDCHAR:       ; sends ASCII value contained in A to UART
831SLAVE                                                                                                      PAGE 4

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

00DA 4007       =1   233            JC      IO0040          ; if 'F'<char<'a', return FAIL
00DC 9420       =1   234            SUBB    A,#20h
00DE B41000     =1   235            CJNE    A,#10h,$+3
00E1 4003       =1   236            JC      IO0050          ; if 'a'<=char<='f', return OK..
                =1   237    
00E3 C3         =1   238    IO0040: CLR     C               ; ..else return FAIL
00E4 74FF       =1   239            MOV     A,#0FFh
                =1   240    
00E6 B3         =1   241    IO0050: CPL     C
00E7 22         =1   242            RET
                =1   243    
                =1   244    ;____________________________________________________________________
                =1   245                                                                ; GETCHAR
                =1   246    
00E8            =1   247    GETCHAR:        ; waits for a single ASCII character to be received
                =1   248                    ; by the UART.  places this character into A.
                =1   249    
00E8 3098FD     =1   250            JNB     RI,$
00EB E599       =1   251            MOV     A,SBUF
00ED C298       =1   252            CLR     RI
                =1   253    
00EF 22         =1   254            RET
                =1   255    
                =1   256    ;____________________________________________________________________
                =1   257                                                                 ; GETVAL
                =1   258    
00F0            =1   259    GETVAL:         ; waits for two ASCII hex digits to be received by
                =1   260                    ; the UART.  returns the hex value in A.
                =1   261    
00F0 C0F0       =1   262            PUSH    B
00F2 C000       =1   263            PUSH    0
00F4 C298       =1   264    IO0060: CLR     RI
00F6 11E8       =1   265            CALL    GETCHAR         ; first nibble
00F8 F500       =1   266            MOV     0,A             ; store received char
00FA 11C3       =1   267            CALL    ASCII2HEX
00FC 40F6       =1   268            JC      IO0060          ; if not '0' thru 'F', don't accept
00FE C4         =1   269            SWAP    A               ; swap nibbles
00FF F5F0       =1   270            MOV     B,A             ; store nibble in B
0101 E500       =1   271            MOV     A,0             ; echo received char
0103 119B       =1   272            CALL    SENDCHAR
0105 C298       =1   273    IO0070: CLR     RI
0107 11E8       =1   274            CALL    GETCHAR         ; second nibble
0109 F500       =1   275            MOV     0,A             ; store received char
010B 11C3       =1   276            CALL    ASCII2HEX
010D 40F6       =1   277            JC      IO0070          ; if not '0' thru 'F', don't accept
010F 45F0       =1   278            ORL     A,B             ; combine nibbles
0111 F5F0       =1   279            MOV     B,A             ; store results in B
0113 E500       =1   280            MOV     A,0             ; echo received char
0115 119B       =1   281            CALL    SENDCHAR
0117 E5F0       =1   282            MOV     A,B             ; final result
0119 D000       =1   283            POP     0
011B D0F0       =1   284            POP     B
                =1   285    
011D 22         =1   286            RET
                =1   287    
                     288    
                     289    ;____________________________________________________________________
                     290                                                       ; TEXT DATA TABLES
831SLAVE                                                                                                      PAGE 6

                     291    
011E 0A0D00          292    SEPERATOR:      DB 10,13,0
                     293    
                     294    ;____________________________________________________________________
                     295    
                     296    END
                     297    

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  00C3H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
GETCHAR. . . . . . . . . . . . .  C ADDR  00E8H  
GETVAL . . . . . . . . . . . . .  C ADDR  00F0H  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00B7H  
IEIP2. . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  
IO0010 . . . . . . . . . . . . .  C ADDR  008AH  
IO0020 . . . . . . . . . . . . .  C ADDR  0096H  
IO0030 . . . . . . . . . . . . .  C ADDR  00C0H  
IO0040 . . . . . . . . . . . . .  C ADDR  00E3H  
IO0050 . . . . . . . . . . . . .  C ADDR  00E6H  
IO0060 . . . . . . . . . . . . .  C ADDR  00F4H  
IO0070 . . . . . . . . . . . . .  C ADDR  0105H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
LOOP . . . . . . . . . . . . . .  C ADDR  0069H  
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  009BH  
SENDSTRING . . . . . . . . . . .  C ADDR  0083H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00A3H  
SEPERATOR. . . . . . . . . . . .  C ADDR  011EH  
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 + -