ad.sdi

来自「数字钟」· SDI 代码 · 共 64 行

SDI
64
字号
,,,DBUF0   EQU             30H
,,,TEMP    EQU     40H
,,,DIN     BIT     0B0H
,,,CLK     BIT             0B1H
,,,                ORG     0000H
0000,78 30,START,START:  MOV             R0,#DBUF0       ;显示缓冲器存放0AH,0DH,—,0XH,0XH
0002,76 0A,,                MOV     @R0,#0AH        ;串行静态显示“AD XX”XX表示0--F
0004,08,,                INC     R0
0005,76 0D,,                MOV             @R0,#0DH
0007,08,,                INC     R0
0008,76 10,,                MOV     @R0,#10H
000A,08,,                INC     R0
000B,90 FE F3,,                MOV     DPTR,#0FEF3H    ;A/D地址
000E,74 00,,                MOV     A,#0            ;清零
0010,F0,,                MOVX    @DPTR,A         ;启动A/D
0011,30 B3 FD,,                JNB     P3.3,$          ;等待转换结果
0014,E0,,                MOVX    A,@DPTR         ;读入结果
0015,F5 90,,                MOV     P1,A                    ;转换结果送入发光二极管
0017,F5 F0,,                MOV     B,A                             ;累加器内容存入B中
0019,C4,,                SWAP    A                               ;A的内容高四位与低四位交换
001A,54 0F,,                ANL     A,#0FH                  ;A的内容高四位清零
001C,D6,,                XCHD    A,@R0                   ;A/D转换结果高四位送入DBUF3
001D,08,,                INC     R0
001E,E5 F0,,                MOV     A,B                             ;取出A/D转换后的结果
0020,54 0F,,                ANL     A,#0FH                  ;A的内容高四位清零
0022,D6,,                XCHD    A,@R0                   ;结果低位送入DBF4中
0023,11 29,,        ACALL   DISP1                   ;串行静态显示“AD XX”
0025,11 5F,,        ACALL   DELAY                   ;延时
0027,01 00,,        AJMP    START
0029,78 30,DISP1,DISP1:  MOV     R0,#DBUF0               ;静态显示子程序
002B,79 44,,                MOV             R1,#TEMP+4
002D,7A 05,,                MOV             R2,#5
002F,90 00 4D,DP10,DP10:   MOV             DPTR,#SEGTAB    ;表头地址
0032,E6,,                MOV             A,@R0
0033,93,,                MOVC    A,@A+DPTR               ;取段码
0034,F7,,                MOV             @R1,A                   ;到TEMP中
0035,08,,                INC     R0
0036,19,,                DEC             R1
0037,DA F6,,                DJNZ    R2,DP10
0039,78 40,,                MOV             R0,#TEMP                ;段码地址指针
003B,79 05,,                MOV             R1,#5                   ;段码字节数
003D,7A 08,DP12,DP12:   MOV             R2,#8                   ;移位次数
003F,E6,,                MOV     A,@R0                   ;取段码
0040,33,DP13,DP13:   RLC     A                               ;断码左移
0041,92 B0,,                MOV     DIN,C                   ;输出一位段码
0043,C2 B1,,                CLR     CLK                             ;发送一个位移脉冲
0045,D2 B1,,                SETB    CLK
0047,DA F7,,                DJNZ    R2,DP13
0049,08,,                INC             R0
004A,D9 F1,,                DJNZ    R1,DP12
004C,22,,                RET
004D,3F 06 5B 4F,SEGTAB,SEGTAB: DB              3FH,6,5BH,4FH,66H,6DH
0053,7D 07 7F 6F,,        DB              7DH,7,7FH,6FH,77H,7CH
0059,58 5E 79 71,,        DB              58H,5EH,79H,71H,0,40H
005F,7C AF,DELAY,DELAY:  MOV             R4,#0AFH
0061,7D FF,AA1,AA1:    MOV             R5,#0FFH
0063,00,AA,AA:     NOP
0064,00,,        NOP
0065,00,,        NOP
0066,DD FB,,        DJNZ    R5,AA
0068,DC F7,,        DJNZ    R4,AA1
006A,22,,        RET
000E,,,        END

⌨️ 快捷键说明

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