请教一个关于AD转换器的程序问题,必须用汇编语言

请教一个关于AD转换器的程序问题,必须用汇编语言,第1张

给你一个AD转换程序,转换结果注释了,你自己根据需要槐埋改下就行了。

你的仿真图中,ADS7825的控制脚看不清,你根据自己的仿图改一下引脚定义就行了。

引脚定义为

BYTE BIT P1.2 ADS7825定义引脚

BUSY BIT P1.3

CS BIT P1.4

RC BIT P1.5

转换子程序如下:

**********AD转换子程序**********

ADSConvert: 通局肢道选择在R6中

MOV A , #0FCH

ADD A , R6

MOV P1, A P1口选择模拟量输入通道

CLR CS

CLR RC

SETB RC

JNB BUSY,$等待转换结束

CLR BYTE 先读高8位

MOV adnumh,P0 从P0口读出高8位,放在adnumh中,自己改成30H或32H

SETB BYTE 后读低8位

MOV adnuml,P0 从P0口读出低8位,放在adnuml中,自己改成31H或33H

SETB CS

RET 转换结束在adnumh,adnumh中

最后要说明一点,ADS7825输入的模拟电压范围是正负10V的,不知你的仿真图的电桐明世压是多少?

还有,读出的数据结果是16位的带符号数,即模拟电压是负时,转换的结束是负数。电压是正时,转换结果是正数。你要处理好正负数的显示。

接线:p3.6接srd

p3.7接swr

p3.0接pin

p3.1接clk

ad0809的clk接脉冲

cs接8000h的译码电路程序:ad0809 xdata 8000h

org 0000h

ajmp main

org 0030h

main:mov dptr,#8000h

mov a,#01h

movx @dptr,a

call delay

movx a,@dptr

mov r0,a

call disp

call delay

call delay

call delay

ajmp maindisp:mov a,r0

anl a,#00001111b

acall dsend

mov a,r0

swap a

anl a,#00001111b

acall dsend

ret

dsend:mov dptr,#tab

movc a,@a+dptr

mov sbuf,a

jnb ti,$

clr ti

ret delay:mov r4,#250

delay1:mov r5,#250

djnz r5,$

djnz r4,delay1

ret

tab:db 03h 0

db 9fh 1

db 25h 2

db 0dh 3

db 99h 4

db 49h 5

db 41h 6

db 1fh 7

db 01h 8

db 09h 9

db 11h 灭

db 11h

db 0c1h

db 63h

db 85h

db 61h

db 71h

db 00h

end

显示程序:

假如AD转换后的数据在桥空唤40H单元敏凯

汇编程序这样写:

MOV A,40H

ANL A,#0F0H

SWAP A

MOV DISP_BUF_H,A

MOV A,40H

ANL A,#0FH

MOV DISP_BUF_L,A

RET

LCALL LED_DISP//亏扒LED显示程序


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12425276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存