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

📄 2543.asm

📁 ADtlc2543和AT89C51子程序,已做试验无问题./QQ403553171
💻 ASM
字号:
CLK     EQU     P2.4     
DI      EQU     P2.5       
DO      EQU     P2.6   
CS25    EQU     P2.7     
       ORG     0000H  
       LJMP    START  
START: MOV   78H,#00H
       MOV   79H,#01H
		 MOV   7AH,#02H
		 MOV   7BH,#03H
		 MOV   7CH,#04H
		 MOV   7DH,#05H
AA:    LCALL ADCJ
  ;     MOV  36H,#0EH
	;    MOV  37H,#08H
	    LCALL DISP
       MOV  36H,20H
       MOV  37H,21H
       LCALL BCD
       MOV  A,38H
       MOV  B,#10H
	    DIV  AB
		 MOV  7DH,A
		 MOV  7CH,B
		 MOV  A,39H
		 MOV  B,#10H
		 DIV  AB
		 MOV  7BH,A
		 MOV  7AH,B
		 MOV  A,3AH
		 MOV  B,#10H
		 DIV  AB
		 MOV  79H,A
		 MOV  78H,B
       LCALL DISP
		 AJMP  AA
;2CH,2BH,  2EH,2FH,30H
BCD:CLR	A	;;BCD码初始化
	MOV	38H,A
	MOV	39H,A
	MOV	3AH,A
	MOV	R2,#10H	;;转换双字节十六进制整数
HB3:MOV	A,36H	;;从高端移出待转换数的一位到CY中
	RLC	A
	MOV	36H,A
	MOV	A,37H
	RLC	A
	MOV	37H,A
	MOV	A,3AH	;;BCD码带进位自身相加,相当于乘2
	ADDC	A,3AH
	DA	A	;;十进制调整
	MOV	3AH,A
	MOV	A,39H
	ADDC	A,39H
	DA	A
	MOV	39H,A
	MOV	A,38H
	ADDC	A,38H
	MOV	38H,A	;;双字节十六进制数的万位数不超过6,不用调整
	DJNZ	R2,HB3	;;处理完16bit
	RET 	
;20H,21H,  22H,23H,  24H,25H,  26H,27H,  28H,29H,  2AH,2BH,  2CH,2D  2EH,2FH,  30H,31H  32H,33H  34H,35H  A/D结果首址 
;   0         1         2         3         4         5         6        7        8        9        10      
ADCJ:   MOV     R0,#021H
        MOV     R1,#020H
        MOV     DPTR,#DZSJ25
                   ;AD采集
        MOV     R4,#0BH         ;五个通道
DTDZ25: MOV     R3,#01H         ;多通道采值起始,每个4次
DCCZ25: MOV     A,#000H
        MOVC     A,@A+DPTR
        LCALL    RD_AD
        LCALL    RD_AD
        INC      R0
        INC      R0
        INC      R1
        INC      R1
        DJNZ     R3,DCCZ25
        INC      DPTR
        DJNZ     R4,DTDZ25
        RET
RD_AD:      MOV     @R0,#00H       ;2543串行数据输出高位
            MOV     @R1,#00H
            CLR CLK
            SETB CS25
				LCALL DLAY
            CLR  CS25
            MOV R2,#08H
            LCALL DLAY
LOP1:       LCALL DLAY
            MOV C,DO
            RLC A
            MOV DI,C
            SETB CLK
            LCALL DLAY
            CLR CLK
            DJNZ R2,LOP1
            SWAP A
            XCHD A,@R0         ;EXCHANGE LOW 4 BITS
            SWAP A
            MOV R2,#04H
LOP2:       LCALL DLAY
            MOV C,DO
            RLC A
            SETB CLK
				LCALL DLAY
            CLR  CLK
            DJNZ R2,LOP2
            MOV @R1,A
            SETB CS25
            RET
DZSJ25:     DB      00H,10H,20H,30H,40H       
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;扫描显示P0,P2。0-2。5,78-7DH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP:  MOV     R1,#78H            ;赋显示数据单元首址
       MOV     R2,#0FEH           ;扫描字
PLAY:  MOV     P1,#00H      	  ;关显示
       MOV     A,R2          	  ;取扫描字
       ANL     P3,A               ;开显示
       MOV     A,@R1              ;取显示数据
       MOV     DPTR,#TAB          ;取段码表首址
       MOVC    A,@A+DPTR          ;查显示数据对应段码
       CJNE    R1,#79H,ORLB1
       SJMP    ORLD0
ORLB1: CJNE    R1,#7AH,ORLB2
       SJMP    ORLD1
ORLB2: CJNE    R1,#7BH,ORLE
       SJMP    ORLD2
ORLD0: ORL     A,28H
       SJMP    ORLE
ORLD1: ORL     A,29H
       SJMP    ORLE
ORLD2: ORL     A,30H
ORLE:  MOV     P1,A 
       LCALL   DL1MS              ;显示1MS
       INC     R1                 ;指向下一地址
       MOV     A,P3           ;取P3口扫描字
       JNB     ACC.5,ENDOUT       ;四位显示完转ENDOUT结束
       RL      A                  ;扫描字循环左移
       MOV     R2,A               ;扫描字放入R5暂存
       MOV     P3,#0FFH           ;显示暂停
       AJMP    PLAY               ;转PLAY循环
ENDOUT: MOV    P3,#0FFH           ;显示结束,端口置1
       MOV     P1,#00H            ;
       MOV     R0,#00H
       RET                        ;子程序返回
;
TAB:   DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;,77H,7CH,39H,5EH,79H,71H;,40H,00H,76H,38H
;          0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F   10- 11 12H  13L
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DLAY:    MOV  R5,#10H
DLAY1:   DJNZ R5,DLAY1
         RET
DL1MS:   MOV  R3,#14H
DL1:     MOV  R4,#19H
DL2:     DJNZ R4,DL2
         DJNZ R3,DL1
         RET
DL512:   MOV   R5,#0FFH
LOOP1:   DJNZ  R5,LOOP1
         RET
DL10MS:  MOV   R3,#14H
LOOP2:   LCALL DL512
         DJNZ  R3,LOOP2
         RET
DL05S:   MOV   R4,#0FFH
LOOP3:   LCALL DL10MS
         DJNZ  R4,LOOP3
         RET 
END

⌨️ 快捷键说明

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