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

📄 adc0832.asm

📁 基于PROTEUS的仿真 含带源代码 C语言编程
💻 ASM
字号:

;ADCS BIT P1.5;使能接口
;ADCLK BIT P1.6 ;时钟接口
;ADDO BIT P1.7 ;数据输出接口(复用)
;ADDI BIT P1.7 ;数据输入接口
     
     MOV 30H,#02H;方式字选择
     MOV R0,#31H;数据存储首地址
CONV:LCALL ADC0832;调用A/D转换子程序
     MOV A,@R0
     LCALL HBCD;调用单字节十六进制转BCD子程序
     MOV R2,#02H;N个待分离的BCD
     MOV R0,#34H;分离后BCD首地址
     MOV R1,#32H;待分离BCD首地址
     LCALL CBCD;分离压缩的BCD码
     MOV R0,#34H;显示缓冲区首地址
     LCALL DISPLAY;调用显示子程序
     MOV R0,#31H;恢复数据存储地址
     LJMP CONV
;========================================
ADC0832:SETB P1.7 ;初始化通道选择
        NOP
        NOP
        CLR P1.5;拉低/CS端
        NOP
        NOP
        SETB P1.6 ;拉高CLK端
        NOP
        NOP
        CLR P1.6 ;拉低CLK端,形成下降沿
        MOV A,30H
        MOV C,ACC.1 ;确定取值通道选择
        MOV P1.7,C
        NOP
        NOP
        SETB P1.6 ;拉高CLK端
        NOP
        NOP
        CLR P1.6 ;拉低CLK端,形成下降沿2
        MOV A,30H
        MOV C,ACC.0 ;确定取值通道选择
        MOV P1.7,C
        NOP
        NOP
        SETB P1.6 ;拉高CLK端
        NOP
        NOP
        CLR P1.6 ;拉低CLK端,形成下降沿3
        SETB P1.7
        NOP
        NOP
    MOV R7,#8 ;准备送下后8个时钟脉冲
ADH:MOV C,P1.7 ;接收数据
    MOV ACC.0,C
    RL A ;左移一次
    SETB P1.6
    NOP
    NOP
    CLR P1.6 ;形成一次时钟脉冲
    NOP
    NOP
    DJNZ R7,ADH ;循环8次
    MOV C,P1.7 ;接收数据
    MOV ACC.0,C
    MOV @R0,A
    MOV R7,#8
ADL:MOV C,P1.7 ;接收数据
    MOV ACC.0,C
    RR A ;左移一次
    SETB P1.6
    NOP
    NOP
    CLR P1.6 ;形成一次时钟脉冲
    NOP
    NOP
    DJNZ R7,ADL ;循环8次
    MOV B,@R0
    CJNE A,B,ADC0832 ;数据校验
    SETB P1.5;拉高/CS端
    CLR P1.6 ;拉低CLK端
    SETB P1.7 ;拉高数据端,回到初始状态
    RET
;=======================================
HBCD:	MOV	B,#100	
	DIV	AB
	MOV	R3,A
	MOV	A,#10	
	XCH	A,B
	DIV	AB
	SWAP	A
	ORL	A,B
	MOV 32H,R3
	MOV 33H,A
	RET
;======================================
CBCD:MOV A,@R1     ;分离后将占2N个单元
     MOV B,A
     ANL A,#0F0H
     SWAP A
     MOV 4CH,A
     MOV A,B
     ANL A,#0FH
     MOV 4DH,A
     MOV @R0,4CH
     INC R0
     MOV @R0,4DH
     INC R0
     INC R1
     DJNZ R2,CBCD
     RET
;===================================
DISPLAY:MOV R4,#04H;位数选择
        MOV R5,#00H
DISP:MOV A,R5
     SWAP A
     ORL A,@R0
     MOV P0,A
     ACALL DELAY1
     INC R5
     INC R0
     DJNZ R4,DISP
     RET

DELAY1:MOV R6,#10H
LOOP11:MOV R7,#38H
LOOP2:DJNZ R7,LOOP2
      DJNZ R6,LOOP11
      RET
;=============================

⌨️ 快捷键说明

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