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

📄 spifram.lst

📁 aduc814的汇编程序例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
00F2 3099FD     =1   151            JNB     TI,$            ; wait til present char gone
00F5 C299       =1   152            CLR     TI              ; must clear TI
00F7 F599       =1   153            MOV     SBUF,A
                =1   154    
00F9 22         =1   155            RET
                =1   156    
                =1   157    ;____________________________________________________________________
                =1   158                                                                ; SENDVAL
                =1   159    
00FA            =1   160    SENDVAL:        ; converts the hex value of A into two ASCII chars,
                =1   161                    ; and then spits these two characters up the UART.
                =1   162                    ; does not change the value of A.
                =1   163    
00FA C0E0       =1   164            PUSH    ACC
00FC C4         =1   165            SWAP    A
00FD 12010E     =1   166            CALL    HEX2ASCII
0100 11F2       =1   167            CALL    SENDCHAR        ; send high nibble
0102 D0E0       =1   168            POP     ACC
0104 C0E0       =1   169            PUSH    ACC
0106 12010E     =1   170            CALL    HEX2ASCII
0109 11F2       =1   171            CALL    SENDCHAR        ; send low nibble
010B D0E0       =1   172            POP     ACC
                =1   173    
010D 22         =1   174            RET
SPIFRAM                                                                                                       PAGE 4

                =1   175    
                =1   176    ;____________________________________________________________________
                =1   177                                                              ; HEX2ASCII
                =1   178    
010E            =1   179    HEX2ASCII:      ; converts A into the hex character representing the
                =1   180                    ; value of A's least significant nibble
                =1   181    
010E 540F       =1   182            ANL     A,#00Fh
0110 B40A00     =1   183            CJNE    A,#00Ah,$+3
0113 4002       =1   184            JC      IO0030
0115 2407       =1   185            ADD     A,#007h
0117 2430       =1   186    IO0030: ADD     A,#'0'
                =1   187    
0119 22         =1   188            RET
                =1   189    
                =1   190    ;____________________________________________________________________
                =1   191                                                              ; ASCII2HEX
                =1   192    
011A            =1   193    ASCII2HEX:      ; converts A from an ASCII digit ('0'-'9' or 'A'-'F')
                =1   194                    ; into the corresponding number (0-15).  returns C=1
                =1   195                    ; when input is other than an ASCII digit,
                =1   196                    ; indicating invalid output (returned as 255).
                =1   197    
011A C3         =1   198            CLR     C
011B 9430       =1   199            SUBB    A,#'0'
011D B40A00     =1   200            CJNE    A,#10,$+3
0120 401B       =1   201            JC      IO0050          ; if '0'<=char<='9', return OK
0122 B41100     =1   202            CJNE    A,#17,$+3
0125 4013       =1   203            JC      IO0040          ; if '9'<char<'A', return FAIL
0127 9407       =1   204            SUBB    A,#7
0129 B41000     =1   205            CJNE    A,#10h,$+3
012C 400F       =1   206            JC      IO0050          ; if 'A'<=char<='F', return OK
012E B42A00     =1   207            CJNE    A,#42,$+3
0131 4007       =1   208            JC      IO0040          ; if 'F'<char<'a', return FAIL
0133 9420       =1   209            SUBB    A,#20h
0135 B41000     =1   210            CJNE    A,#10h,$+3
0138 4003       =1   211            JC      IO0050          ; if 'a'<=char<='f', return OK..
                =1   212    
013A C3         =1   213    IO0040: CLR     C               ; ..else return FAIL
013B 74FF       =1   214            MOV     A,#0FFh
                =1   215    
013D B3         =1   216    IO0050: CPL     C
013E 22         =1   217            RET
                =1   218    
                =1   219    ;____________________________________________________________________
                =1   220                                                                ; GETCHAR
                =1   221    
013F            =1   222    GETCHAR:        ; waits for a single ASCII character to be received
                =1   223                    ; by the UART.  places this character into A.
                =1   224    
013F 3098FD     =1   225            JNB     RI,$
0142 E599       =1   226            MOV     A,SBUF
0144 C298       =1   227            CLR     RI
                =1   228    
0146 22         =1   229            RET
                =1   230    
                =1   231    ;____________________________________________________________________
                =1   232                                                                 ; GETVAL
SPIFRAM                                                                                                       PAGE 5

                =1   233    
0147            =1   234    GETVAL:         ; waits for two ASCII hex digits to be received by
                =1   235                    ; the UART.  returns the hex value in A.
                =1   236    
0147 C0F0       =1   237            PUSH    B
0149 C000       =1   238            PUSH    0
014B C298       =1   239    IO0060: CLR     RI
014D 313F       =1   240            CALL    GETCHAR         ; first nibble
014F F500       =1   241            MOV     0,A             ; store received char
0151 311A       =1   242            CALL    ASCII2HEX
0153 40F6       =1   243            JC      IO0060          ; if not '0' thru 'F', don't accept
0155 C4         =1   244            SWAP    A               ; swap nibbles
0156 F5F0       =1   245            MOV     B,A             ; store nibble in B
0158 E500       =1   246            MOV     A,0             ; echo received char
015A 11F2       =1   247            CALL    SENDCHAR
015C C298       =1   248    IO0070: CLR     RI
015E 313F       =1   249            CALL    GETCHAR         ; second nibble
0160 F500       =1   250            MOV     0,A             ; store received char
0162 311A       =1   251            CALL    ASCII2HEX
0164 40F6       =1   252            JC      IO0070          ; if not '0' thru 'F', don't accept
0166 45F0       =1   253            ORL     A,B             ; combine nibbles
0168 F5F0       =1   254            MOV     B,A             ; store results in B
016A E500       =1   255            MOV     A,0             ; echo received char
016C 11F2       =1   256            CALL    SENDCHAR
016E E5F0       =1   257            MOV     A,B             ; final result
0170 D000       =1   258            POP     0
0172 D0F0       =1   259            POP     B
                =1   260    
0174 22         =1   261            RET
                =1   262    
                     263    end

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
SPIFRAM                                                                                                       PAGE 6

ACC. . . . . . . . . . . . . . .  D ADDR  00E0H  PREDEFINED  
ASCII2HEX. . . . . . . . . . . .  C ADDR  011AH  
B. . . . . . . . . . . . . . . .  D ADDR  00F0H  PREDEFINED  
CFG814 . . . . . . . . . . . . .  D ADDR  009CH  PREDEFINED  
EXIT . . . . . . . . . . . . . .  C ADDR  00D8H  NOT USED  
GETCHAR. . . . . . . . . . . . .  C ADDR  013FH  
GETVAL . . . . . . . . . . . . .  C ADDR  0147H  NOT USED  
HEX2ASCII. . . . . . . . . . . .  C ADDR  010EH  
IO0010 . . . . . . . . . . . . .  C ADDR  00E1H  
IO0020 . . . . . . . . . . . . .  C ADDR  00EDH  
IO0030 . . . . . . . . . . . . .  C ADDR  0117H  
IO0040 . . . . . . . . . . . . .  C ADDR  013AH  
IO0050 . . . . . . . . . . . . .  C ADDR  013DH  
IO0060 . . . . . . . . . . . . .  C ADDR  014BH  
IO0070 . . . . . . . . . . . . .  C ADDR  015CH  
ISPI . . . . . . . . . . . . . .  B ADDR  00FFH  PREDEFINED  
LOOP . . . . . . . . . . . . . .  C ADDR  0099H  
LOOP2. . . . . . . . . . . . . .  C ADDR  00C7H  
P3 . . . . . . . . . . . . . . .  D ADDR  00B0H  PREDEFINED  
RCAP2H . . . . . . . . . . . . .  D ADDR  00CBH  PREDEFINED  
RCAP2L . . . . . . . . . . . . .  D ADDR  00CAH  PREDEFINED  
RI . . . . . . . . . . . . . . .  B ADDR  0098H  PREDEFINED  
SBUF . . . . . . . . . . . . . .  D ADDR  0099H  PREDEFINED  
SCON . . . . . . . . . . . . . .  D ADDR  0098H  PREDEFINED  
SENDCHAR . . . . . . . . . . . .  C ADDR  00F2H  
SENDSTRING . . . . . . . . . . .  C ADDR  00DAH  NOT USED  
SENDVAL. . . . . . . . . . . . .  C ADDR  00FAH  
SPICON . . . . . . . . . . . . .  D ADDR  00F8H  PREDEFINED  
SPIDAT . . . . . . . . . . . . .  D ADDR  00F7H  PREDEFINED  
SS . . . . . . . . . . . . . . .    NUMB  00B5H  
T2CON. . . . . . . . . . . . . .  D ADDR  00C8H  PREDEFINED  
TH2. . . . . . . . . . . . . . .  D ADDR  00CDH  PREDEFINED  
TI . . . . . . . . . . . . . . .  B ADDR  0099H  PREDEFINED  
TL2. . . . . . . . . . . . . . .  D ADDR  00CCH  PREDEFINED  

⌨️ 快捷键说明

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