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

📄 812mstr.lst

📁 aduc812精典源代码下载,适合初学者
💻 LST
📖 第 1 页 / 共 2 页
字号:
                =1   188                    ; DPTR and ending with a null (0) value
                =1   189    
00A1 C0E0       =1   190            PUSH    ACC
00A3 C0F0       =1   191            PUSH    B
00A5 E4         =1   192            CLR     A
00A6 F5F0       =1   193            MOV     B,A
00A8 E5F0       =1   194    IO0010: MOV     A,B
00AA 05F0       =1   195            INC     B
00AC 93         =1   196            MOVC    A,@A+DPTR
00AD 6005       =1   197            JZ      IO0020
00AF 1200B9     =1   198            CALL    SENDCHAR
00B2 80F4       =1   199            JMP     IO0010
00B4 D0F0       =1   200    IO0020: POP     B
00B6 D0E0       =1   201            POP     ACC
                =1   202    
00B8 22         =1   203            RET
                =1   204    
                =1   205    ;____________________________________________________________________
                =1   206                                                               ; SENDCHAR
                =1   207    
00B9            =1   208    SENDCHAR:       ; sends ASCII value contained in A to UART
                =1   209    
00B9 3099FD     =1   210            JNB     TI,$            ; wait til present char gone
00BC C299       =1   211            CLR     TI              ; must clear TI
00BE F599       =1   212            MOV     SBUF,A
                =1   213    
00C0 22         =1   214            RET
                =1   215    
                =1   216    ;____________________________________________________________________
                =1   217                                                                ; SENDVAL
                =1   218    
00C1            =1   219    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                =1   220                    ; and then spits these two characters up the UART.
                =1   221                    ; does not change the value of A.
                =1   222    
00C1 C0E0       =1   223            PUSH    ACC
00C3 C4         =1   224            SWAP    A
00C4 1200D5     =1   225            CALL    HEX2ASCII
00C7 11B9       =1   226            CALL    SENDCHAR        ; send high nibble
00C9 D0E0       =1   227            POP     ACC
00CB C0E0       =1   228            PUSH    ACC
00CD 1200D5     =1   229            CALL    HEX2ASCII
00D0 11B9       =1   230            CALL    SENDCHAR        ; send low nibble
00D2 D0E0       =1   231            POP     ACC
                =1   232    
812MSTR                                                                                                       PAGE 5

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

                =1   291                                                                 ; GETVAL
                =1   292    
010E            =1   293    GETVAL:         ; waits for two ASCII hex digits to be received by
                =1   294                    ; the UART.  returns the hex value in A.
                =1   295    
010E C0F0       =1   296            PUSH    B
0110 C000       =1   297            PUSH    0
0112 C298       =1   298    IO0060: CLR     RI
0114 3106       =1   299            CALL    GETCHAR         ; first nibble
0116 F500       =1   300            MOV     0,A             ; store received char
0118 11E1       =1   301            CALL    ASCII2HEX
011A 40F6       =1   302            JC      IO0060          ; if not '0' thru 'F', don't accept
011C C4         =1   303            SWAP    A               ; swap nibbles
011D F5F0       =1   304            MOV     B,A             ; store nibble in B
011F E500       =1   305            MOV     A,0             ; echo received char
0121 11B9       =1   306            CALL    SENDCHAR
0123 C298       =1   307    IO0070: CLR     RI
0125 3106       =1   308            CALL    GETCHAR         ; second nibble
0127 F500       =1   309            MOV     0,A             ; store received char
0129 11E1       =1   310            CALL    ASCII2HEX
012B 40F6       =1   311            JC      IO0070          ; if not '0' thru 'F', don't accept
012D 45F0       =1   312            ORL     A,B             ; combine nibbles
012F F5F0       =1   313            MOV     B,A             ; store results in B
0131 E500       =1   314            MOV     A,0             ; echo received char
0133 11B9       =1   315            CALL    SENDCHAR
0135 E5F0       =1   316            MOV     A,B             ; final result
0137 D000       =1   317            POP     0
0139 D0F0       =1   318            POP     B
                =1   319    
013B 22         =1   320            RET
                =1   321    
                     322    
                     323    ;____________________________________________________________________
                     324                                                       ; TEXT DATA TABLES
                     325    
013C 0A0D00          326    SEPERATOR:      DB 10,13,0
                     327    
                     328    ;____________________________________________________________________
                     329    
                     330    END
                     331    

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

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  00E1H  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
DELAY. . . . . . . . . . . . . .  C ADDR  008DH  
DLY1 . . . . . . . . . . . . . .  C ADDR  0093H  
EA . . . . . . . . . . . . . . .  B ADDR  00AFH  PREDEFINED  
EX0. . . . . . . . . . . . . . .  B ADDR  00A8H  PREDEFINED  
GETCHAR. . . . . . . . . . . . .  C ADDR  0106H  
GETVAL . . . . . . . . . . . . .  C ADDR  010EH  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  00D5H  
IE2. . . . . . . . . . . . . . .  D ADDR  00A9H  PREDEFINED  
INPUT. . . . . . . . . . . . . .  D ADDR  0060H  
IO0010 . . . . . . . . . . . . .  C ADDR  00A8H  
IO0020 . . . . . . . . . . . . .  C ADDR  00B4H  
IO0030 . . . . . . . . . . . . .  C ADDR  00DEH  
IO0040 . . . . . . . . . . . . .  C ADDR  0101H  
IO0050 . . . . . . . . . . . . .  C ADDR  0104H  
IO0060 . . . . . . . . . . . . .  C ADDR  0112H  
IO0070 . . . . . . . . . . . . .  C ADDR  0123H  
IT0. . . . . . . . . . . . . . .  B ADDR  0088H  PREDEFINED  
LED. . . . . . . . . . . . . . .    NUMB  00B4H  
LOOP . . . . . . . . . . . . . .  C ADDR  0068H  
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  00B9H  
SENDSPI. . . . . . . . . . . . .  C ADDR  0087H  
SENDSTRING . . . . . . . . . . .  C ADDR  00A1H  
SENDVAL. . . . . . . . . . . . .  C ADDR  00C1H  
SEPERATOR. . . . . . . . . . . .  C ADDR  013CH  
SP . . . . . . . . . . . . . . .  D ADDR  0081H  PREDEFINED  
SPICON . . . . . . . . . . . . .  D ADDR  00F8H  PREDEFINED  
SPIDAT . . . . . . . . . . . . .  D ADDR  00F7H  PREDEFINED  
SS . . . . . . . . . . . . . . .    NUMB  00B5H  
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 + -