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 + -
显示快捷键?