| 网站首页 | 技术文章 | 专业论文 | PLC可编程 | 单片机 | 变频器 | 传感器 | 嵌入式系统 | 电源技术 | 运动与伺服 | 
 | 校园招聘 | 留言板 | 
您现在的位置: 自动化学习网 >> 技术文章 >> 单片机 >> 文章正文 用户登录 新用户注册
ADC0809输入的两个不同电压数相加显示出来         ★★★ 【字体:
ADC0809输入的两个不同电压数相加显示出来
作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-3-23    

7.2 十六进制两位数加法器(数码显示)

程序介绍:将ADC0809输入的两个不同电压(相同电

压也可相加,只是为举例说明,所以取不同电压)所对应

16进制数相加显示出来。实际应用例如:取代加法运放

电路。

程序操作:程序写完上电运行后,用本机配带的钟表

起微调图16所示电位器,输入两个不同电压,数码管会显

示两个不同的对应16进制数,随后数码管会显示两个16

进制数相加的值。

程序实例(add2.asm):

ORG 0000H

MAIN:

ADNUMBER EQU 30H ;AD转换值

ADDNUMBER EQU 31H ;加数值1

ADL EQU 32H ;//

ADH EQU 33H ;ADL转换高低位值

DISL EQU 34H ;//

DISH EQU 35H ;显示高低位值

ADDTOTAL EQU 36H ;第一次AD转换值

ADDJW EQU 37H ;加法进位数

ADDHOLD EQU 38H

;赋初值////////////////////////////////////////////

MOV ADDHOLD,#00H

MOV ADDNUMBER,#00H

MOV ADL,#00H

MOV ADH,#00H

MOV DISL,#00H

22

MOV DISH,#00H

MOV ADDJW,#00H

MOV ADDTOTAL,#00H

;//////////////////////////////////////////////////

MAIN1:

ACALL AD ;呼叫AD子程序

ACALL DELAY ;延时

ACALL CAIFEN ;呼叫AD值拆分为高

低的程序

ACALL DISPLAY ;呼叫显示子程序

MOV A,ADNUMBER ;取AD值

CJNE A,ADDHOLD,ADD3 ;与上次AD值比

较,不相等,即输入了新的AD值,去AD3执行

AJMP MAIN1 ;是相等的,证

明没有输入新的AD值,回去显示老的AD值

ADD3: MOV A,ADDHOLD

CJNE A,#00H,ADD4

MOV ADDHOLD,ADNUMBER ;有一种情况就

是是第一次进来,AD保持值里面是放的初值00,与取的AD值

不同,是这种情况,也返回去

AJM MAIN1

ADD4: MOV ADDNUMBER,ADDHOLD ;是真的输入

了新的AD值,将上次AD值给加数,为调加法程序做准备

MOV ADDHOLD,ADNUMBER ;将这次的AD

值也保持起来。准备与上一个AD值相加

;显示这次输入的AD值////////////////////////////////

ACALL DELAY

ACALL CAIFEN

23

ACALL DISPLAY

;//////////////////////////////////////////////////

DISPLAY1:

ACALL DELAY ;延时

ACALL ADD1 ;呼叫加法子程序

ACALL DISPLAY ;显示

LOOP: AJMP LOOP ;返回主程序

;///////////////////////////////////////AD转换

AD:

MOV DPTR,#7F00H;指向转换地址

MOV A,#03H ;指向转换口

MOVX @DPTR,A ;转换

MOV R1,#64H

D1: DJNZ R1,D1 ;等100微秒转换完

MOVX A,@DPTR ;转换后的值给A

MOV ADNUMBER,A ;转换的值给30H

RET

;//////////////////////////////////////////////////

;拆分AD值程序//////////////////////////////////////

CAIFEN:

MOV A,ADNUMBER

ANL A,#0FH

MOV ADL,A ;取低位

MOV A,ADNUMBER

ANL A,#0F0H

SWAP A

MOV ADH,A ;取高位

MOV DISL,ADL

24

MOV DISH,ADH ;给显示值

RET

;//////////////////////////////////////////////////

;显示//////////////////////////////////////////////

DISPLAY:

MOV A,DISL

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D3: JNB TI,D3

CLR TI

MOV A,DISH

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D4: JNB TI,D4

CLR TI

MOV A,ADDJW

MOV DPTR,#SETTAB

MOVC A,@A+DPTR

MOV SBUF,A

D5: JNB TI,D5

CLR TI

MOV SBUF,#00H

D6: JNB TI,D6

CLR TI

RET

;//////////////////////////////////////////////////

25

;加法程序//////////////////////////////////////////

ADD1:

CLR C

MOV A,ADDNUMBER ;取上次AD值

ADDC A,ADDHOLD ;与这次AD值相加

MOV ADDTOTAL,A ;将此次加的值给和

JNC ADDJW1 ;有无进位?

INC ADDJW ;有进位,进位值给

ADDJW

ADDJW1: ANL A,#0FH

MOV DISL,A ;加值取低位

MOV A,ADDTOTAL

ANL A,#0F0H

SWAP A

MOV DISH,A ;加值取高位

RET

;//////////////////////////////////////////////////

DELAY: ;延时

MOV R3,#0AH

DD1: MOV R1,#0FFH

D2 : MOV R2,#0FFH

DJNZ R2,$

DJNZ R1,D2

DJNZ R3,DD1

RET

SETTAB:

DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,

26

0FEH,0F6H

DB 0EEH,3EH,9CH,7AH,9EH,8EH

END

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      最新热点   最新推荐   相关文章
    基于普通单片机的LIN协议实现…
    提高单片机系统可靠性的设计…
    利用单芯片MCU提高照明系统能…
    基于MCU的风光互补独立电源系…
    单片机控制GSM手机的技术及应…
    用51内核网络单片机构成的远…
    在Bank Switch基础上 实现大…
    用单片机实现DSP在线调试的一…
    利用Flash实现单片机系统的在…
    基于AT89C52单片机的自动存取…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)