ADC0832数码管显示电压表汇编程序

admin 2024-11-21 129人围观 ,发现261个评论

;***********************************************************

;**

;*数字电压表演示程序*

;**

;***********************************************************

;功能:数码管显示ADC0832采样值

;适用于MCS-51开发板

;创作人:Jihao

;创作日期:2005/12/23

;=====================================================

AD_

AD_

AD_

DISSTARTEQU30H;显示单元首地址

LED_DATAEQUP0;数码管数据定义

AD_TEMPEQU2FH;AD采样值存放单元

ORG0000H

JMPSTART

ORG0030H

;====================================================

START:

MOVSP,00H

MOVAD_TEMP,A

MOVP0,0FFH

START1:

ACALLAD_CONV

MOVR4,08H;计数器初值,读取8位数据,

AD_READ:CLRAD_CLK;下降沿

MOVC,AD_DAT;读取DO端数据

RLCA;C移入A,高位在前

SETBAD_CLK;下一个脉冲

DJNZR1,AD_READ;没读完继续

SETBAD_CS

MOVAD_TEMP,A;转换结果存入AD_TEMP

RET

;====================================================

;AD采集值转为三位BCD码子程序

;转换后的三位BCD码分别存入DISSTART+2、

;DISSTART+1、DISSTART单元中。

;AD采集值在AD_TEMP单元中。

;255/51=5.00V运算

;====================================================

TUNBCD:

MOVA,AD_TEMP

MOVB,1AH;相减不够,C=1表示余数小于1AH(26)

MOVF0,C

MOVA,51

DIVAB;再除以51

JBF0,T_BCD1

ADDA,1AH

MOVF0,C

MOVA,51

DIVAB

JBF0,T_BCD2

ADDA,DISSTART;开始填充显示单元

MOVR2,TAB_NU;获得表头

MOVCA,@A+DPTR;获得编码数据

MOV@R0,A;保存编码数据

INCR0;指向下一个带转换数据

DJNZR2,DISP1;继续转换,直到完成

MOVR0,0FEH;从第一个数码管开始

MOVR2,7FH

MOV@R0,A

DISP4:LCALLDELAY2MS;延时2MS

LCALLDELAY2MS

LCALLDELAY2MS

DJNZR2,DISP2;重复显示下一个

POPPSW

RET;显示完成,返回

;====================================================

;延时子程序

;====================================================

DELAY2MS:

MOVR6,100

DJNZR7,$

DJNZR6,DEL1

RET

;====================================================

TAB_NU:

DB0c0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH

;====================================================

猜你喜欢
    不容错过