急求:单片机 0809AD转换汇编程序

急求:单片机 0809AD转换汇编程序,第1张

st

equ

p37

eoc

equ

p36

oe

equ

p35

BAI

EQU

30H

SHI

EQU

31H

GEWEI

EQU

32H

org

0000h

MOV

DPTR,#0FEF8H

;AD转换IN0通道地址

MOV

A,#00H

MOVX

@DPTR,A

;启动AD转换

START:

clr

st

setb

st

clr

st

jnb

eoc,$

setb

oe

mov

30H,P2

clr

oe

mov

a,30h

mov

b,#100

div

ab

LOOP:

MOV

BAI,A

MOV

SHI,B

MOV

A,SHI

MOV

B,#10

DIV

AB

MOV

SHI,A

MOV

GEWEI,B

MOV

A,BAI

MOV

P1,A

CLR

P32

LCALL

DELAY

SETB

P32

MOV

A,SHI

MOV

P1,A

CLR

P31

LCALL

DELAY

SETB

P31

MOV

A,GEWEI

mov

p1,a

CLR

P30

LCALL

DELAY

SETB

P30

SJMP

START

DELAY:

mov

R6,#5

D1:

MOV

R7,#200

DJNZ

R7,$

DJNZ

R6,D1

RET

end

这是我编的程序,可以用,你只用0通道的话那就把那个通道选择的三个引脚全接地就是了。

MOV

DPTR,#0FEF8H

;AD转换IN0通道地址

MOV

A,#00H

MOVX

@DPTR,A

;启动AD转换

这个是启动转换的语句

以上的程序是实现,电位器调节过程中,数码管从0到255变化

ADC0809要工作得在单片机的ALE脚上接个四分频的器件,不然ADC0809是不会工作的。QQ:77254708

比如8位的AD转换吧,转换0~5V为数字量信号,就是把5V分成256份,每份是5/256,这个也就是精度,最小一份就是5/256 V,002V左右,比如输入信号为5V,就占了256份,AD输出结果换成16进制就是0xff,比如说输入是31V,就占了31/(5/256)=15872份,所以输出结果只能是158份,0x9e,就偏差了072份,就是0725/256=0014V,就偏差了0014V左右,如果10位的AD转换,每份就是5/1024,精度也就高了很多,反过来DA转换也是一样的,不明白可以继续问

ORG 0000H

AJMP START1

ORG 0040H

START1:

MOV SP,#80H

MOV 0E1H,#00110100B ;启动看门狗

ACALL ADC_Power_On ;开ADC电源, 第一次使用时要打开内部模拟电源

;开ADC电源, 可适当加延时,1mS以内就足够了

ACALL Set_P17_ASF ;设置 P17 为模拟功能口

ACALL Set_ADC_Channel_7 ;设置 P17 作为A/D转换通道

MOV TL0,#0B0H

MOV TH0,#3CH

MOV TMOD,#21H ;置计数器模式

MOV IE,#8AH ;;EA,ET0,ET1

SETB TR0 ;启动定时器

START2:

NOP

NOP

ACALL Get_AD_Result

MOV 30H, ADC_Channel_7_Result

ACALL DISP ;调入其他程序,或AD取值在中断中

;------------------------------

ADC_CONTR EQU 0BCH ;A/D转换寄存器

ADC_RES EQU 0BDH ;8位A/D转换结果寄存器

P1ASF EQU 9DH ;P1口中的相应位作为模拟功能使用时的控制寄存器,如做A/D用,相应位要置1

ADC_Power_On_Speed_Channel_7 EQU 10100111 ;P17作为A/D输入

ADC_Channel_7_Result EQU 32H ;7通道A/D转换结果(32H,31H)

;数据在A中,地址按8951芯片 10H

BYTE_ADDR_HIGH EQU 00H ;字节地址高位

BYTE_ADDR_LOW EQU 00H

SECTOR_ADDR_HIGH EQU 00H ;扇区地址高位

SECTOR_ADDR_LOW EQU 00H

IAP_DATA EQU 0C2H

IAP_ADDRH EQU 0C3H

IAP_ADDRL EQU 0C4H

IAP_CMD EQU 0C5H

IAP_TRIG EQU 0C6H

IAP_CONTR EQU 0C7H

;定义ISP/IAP命令及等待时间

ISP_IAP_BYTE_READ EQU 1 ;字节读

ISP_IAP_BYTE_PROGRAM EQU 2 ;字节写

ISP_IAP_SECTOR_ERASE EQU 3 ;扇区擦除

WAIT_TIME EQU 3 ;等待时间

;--------------------------------------------------------------

ADC_Power_On:

PUSH ACC

ORL ADC_CONTR, #80H ;开A/D转换电源

;MOV A, #20H

ACALL Delay ;开A/D转换电源后要加延时,1mS以内就足够了

POP ACC

RET

;-------------------------------------------------------------

;设置P17为模拟功能

Set_P17_ASF:

PUSH ACC

MOV A, #10000000B

ORL P1ASF, A

POP ACC

RET

;-------------------------------------------------------------

;设置 P17 为普通IO

Set_P17_Normal_IO:

PUSH ACC

MOV A, #01111111B

ANL P1ASF, A

POP ACC

RET

;-------------------------------------------------------------

Set_ADC_Channel_7:

MOV ADC_CONTR, #ADC_Power_On_Speed_Channel_7

;选择P17作为A/D转换通道

;MOV A, #05H ;更换 A/D 转换通道后要适当延时, 使输入电压稳定

;以后如果不更换 A/D 转换通道的话, 不需要加延时

ACALL Delay ;切换 A/D 转换通道,加延时20uS~200uS就可以了,与输入电压源的内阻有关

;如果输入电压信号源的内阻在10K以下,可不加延时

RET

;-------------------------------------------------------------

Get_AD_Result:

PUSH ACC ;入栈保护

MOV ADC_RES, #0

ORL ADC_CONTR, #00001000B ;启动 AD 转换

NOP ;在对ADC_CONTR寄存器进行写 *** 作后,要加4个空 *** 作延时,才能够正确读到ADC_CONTR的值

NOP

NOP

NOP

Wait_AD_Finishe:

MOV A, #00010000B ;判断 AD 转换是否完成

ANL A, ADC_CONTR

JZ Wait_AD_Finishe ;AD 转换尚未完成, 继续等待

ANL ADC_CONTR, #11100111B ;清0 ADC_FLAG, ADC_START 位, 停止A/D转换

MOV A, ADC_RES

MOV ADC_Channel_7_Result, A ;保存 AD 转换结果

POP ACC

RET

;---------------------------------------------------------------

Delay:

PUSH 02 ;将寄存器组0 的 R2 入栈

PUSH 03 ;将寄存器组0 的 R3 入栈

MOV R3, #02 ;2 CLOCK ---------------------+

Delay_Loop1: ;

MOV R2, #249 ;2 CLOCK ------+

Delay_Loop: ; | 1002 CLOCK

DJNZ R2, Delay_Loop ;4 CLOCK |

DJNZ R3, Delay_Loop1 ;4 CLOCK ------+

POP 03

POP 02

RET

;-------------------------------------------------------

END

以上就是关于急求:单片机 0809AD转换汇编程序全部的内容,包括:急求:单片机 0809AD转换汇编程序、单片机AD和DA转换具体过程是怎么样的、能给个STC单片机内部ad转换的程序吗万谢。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10133925.html

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

发表评论

登录后才能评论

评论列表(0条)

保存