ad574的数据转换51汇编程序

ad574的数据转换51汇编程序,第1张

12位数按照你的格式,最低字节为0,我先将其除以16,转换成ABC后完成的运算。关于HEX转BCD,方法很多,我采用的是加权值查表法,16进制的每一位根据该位数据累加相应次数,也算是一种思路吧,也比较容易理解。加法运算采用的是4字节。结果放在内部RAM中30H开始的4个字节中(高到低顺序,十位、个位存在33H)。最小初值0010H、最大初值FFF0H和部份中间值已验证过没有问题。结果看明白程序后可自己调整一下。

更简单的算法:主要在HEX至BCD码转换上肯定有,映像中见过一个通用程序,还是多字节不定长的,只有40、50行指令,记得当时感觉算法挺好,只是没记住。

你设想的算法可能不对,不知你考虑到没有,比如ABC0H,A转换成10进制数是10,A0则是160,A00是2560,A000是40960。比如最后一个40960,既便不算最后一个0,也需要4位有效数字空间。所以16进制不同的位置上的数不能简单的转换。这种思路主要错误原因是无意中算法中默认了比如A000中后面3个0为10进制的。

BUFFER1 EQU 30H ;运算缓冲区1起始地址

BUFFER1_L EQU 33H ;4字节运算缓冲区1截止地址

BUFFER2 EQU 38H ;运算缓冲区2起始地址

BUFFER2_L EQU 3BH ;4字节运算缓冲区2截止地址

ORG 0000H

LJMP Main

ORG 0100H

main:

MOV SP, #60H

MOV R2, #0ABH

MOV R3, #0C0H

LCALL DIV_10H ;R2R3除以16变为0ABCH,仍存在R2R3中

LCALL MUL_24 ;R2R3乘以24,结果保存在R5R6R7中

LCALL CLR_BCDMEMORY ;清除最终结果存放缓冲区

LCALL HEXTOBCD_5 ;结果转换成BCD码,结果放在BUFFER1开始的4个字节中

JMP $ ;原地循环

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

;子程序CLR_BCDMEMORY

;功能: 4字节运算结果缓冲区清0

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

CLR_BCDMEMORY:

MOV R0, #BUFFER1

MOV R2, #04H

CLR A

C_LOOP1:

MOV @R0, A

INC R0

DJNZ R2, C_LOOP1

RET

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

;子程序HEXTOBCD_5

;功能: 5位16进制数转换成BCD码

;入口: 原数存放在R5R6R7中,R5高8位不考虑

;出口: 结果放在:BUFFER1中开始的4个字节

;说明: 最大转换值0FFFFFH

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

HEXTOBCD_5:

MOV A,#04H ;16进制万位标志

LCALL GET_MOD ;得到此位对应的10进制加权值并保存到BUFFER1中

MOV A, R5 ;万位数值为累加次数

LCALL MUL_4BYTE ;累加相应次数,结果保存到BUFFER1中

MOV A,#03H ;16进制千位标志

LCALL GET_MOD

MOV A, R6

SWAP A

LCALL MUL_4BYTE

MOV A,#02H ;16进制百位标志

LCALL GET_MOD

MOV A, R6

LCALL MUL_4BYTE

MOV A,#01H ;16进制十位标志

LCALL GET_MOD

MOV A, R7

SWAP A

LCALL MUL_4BYTE

MOV A,#00H ;16进制个位标志

LCALL GET_MOD

MOV A, R7

LCALL MUL_4BYTE

RET

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

;子程序MUL_4BYTE

;功能: 4字节10进制累加子程序

;入口: 被加数:放在BUFFER1开始的4个字节

; 加数:放在BUFFER2开始的4个字节

; A:BUFFER2内容加到BUFFER1的次数,A<16

;出口: 结果放在:BUFFER1中开始的4个字节

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

MUL_4BYTE:

ANL A, #0FH

CJNE A, #00H, M_BEGIN

RET

M_BEGIN:

MOV R2, A

M_LOOP1:

MOV R0, #BUFFER1_L

MOV R1, #BUFFER2_L

MOV R3, #04H

CLR C

M_LOOP2: ;从个位开始逐字节相加

MOV A, @R0

ADDC A, @R1

DA A ;10进制调整

MOV @R0,A

DEC R0

DEC R1

DJNZ R3, M_LOOP2

DJNZ R2, M_LOOP1

RET

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

;子程序GET_MOD

;功能: 取4字节16进制数某位的10进制BCD码权值

;入口: A:位标志,16进制数个位为0,十位为1,类推,A<7

;出口: 结果依次存放在:BUFFER2中,高位在低地址

;说明: 16进制数有限制,最大05F5E0FFH

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

GET_MOD:

PUSH PSW ;压栈保护所有用到的寄存器内容

PUSH 00H

PUSH 01H

PUSH 02H

MOV PSW, #00H

MOV R0, #BUFFER2

MOV R2, #04H

MOV B, #04H

MUL AB

MOV R1, A

MOV DPTR, #H_TAB

G_LOOP1:

MOV A, R1

MOVC A, @A+DPTR

MOV @R0, A

INC R0

INC R1

DJNZ R2, G_LOOP1

POP 02H ;出栈恢复所有用到的寄存器内容

POP 01H

POP 00H

POP PSW

RET

H_TAB:

DB 00H,00H,00H,01H ;个位

DB 00H,00H,00H,16H

DB 00H,00H,02H,56H

DB 00H,00H,40H,96H

DB 00H,06H,55H,36H

DB 01H,04H,85H,76H

DB 16H,77H,72H,16H ;第6位,百万位。

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

;子程序MUL_24

;功能: 2字节(12位)16进制数乘以24

;入口: R2:被乘数高8位,其中最高4位应为0

; R3:被乘数低8位

;出口: 结果依次存放在:R5R6R7中

; R5:高8位,R6:中8位,R7:低8位

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

MUL_24:

CLR C

MOV A, R3

MOV B, #24

MUL AB ;被乘数低8位先乘24

MOV R7, A ;积的低8位存到R7,最终结果的低8位终值

MOV R6, B ;积的高8位暂存到R6

MOV A, R2

MOV B, #24

MUL AB ;被乘数高字节乘24

ADD A, R6 ;积的低8位+R6,C中标志进位状态

MOV R6, A ;存到R6,最终结果的中8位终值

CLR A

ADDC A, B ;积的高8位+进位标志

MOV R5, A ;存到R5,最终结果的高8位终值

RET

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

;子程序DIV_10H

;功能: 2字节(12位)16进制数除以0x10

;入口: R2:被乘数高8位,其中最高4位应为0

; R3:被乘数低8位

;出口: 结果依旧存放在R2R3中

; R2:高8位,R3:低8位

;算法说明:利用标志位C,将2字节作为一个整体的

; 16进制数循环右移4次。

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

DIV_10H:

MOV R7, #04H

D_LOOP1:

CLR C ;循环一次后清零保证下一次最高位补0

MOV A, R2

RRC A ;循环右移,最高位补0,最低位进入C

MOV R2, A

MOV A, R3

RRC A ;C进入最高位,最低位进入C,可能是1,所以下次循环前清零

MOV R3, A

DJNZ R7, D_LOOP1

RET

END

CPL CLK 为什么清0??

这是在定时器中翻转CLK,也就是给ADC提供时钟。

MOV SP,#60H ????

这个是设置堆栈的位置,否则默认的堆栈肯定会被冲掉

CLR ST

SETB ST

CLR ST 这样做是为什么???

这个是人为地在ST引脚上产生脉冲,给ADC一个开始脉冲,告诉它启动AD转化

CLR OE ;????清0有何作用?

使能ADC,让它能够工作,看来这个ADC是低电平使能

此程序是我做单片机课程设计的程序,PROTEL原理图在附件里

程序经过了实验的测试,没有任何问题。

一 设计要求:

1 以8031为主控器组成A/D,D/A转换系统。

2 对任意波形的脉冲信号进行A/D转换后进入数据存储器,要求能够存储5~10个周波,然后定时将数据经D/A转换输出示波器显示。

3 采样的频率可由键盘有级调节。

二 课程设计条件:

硬件:个人PC一台,8051单片机仿真头一个,89S51单片机一个,ADC0809芯片一块,DAC0832芯片一块,7402一个,LM358一片,按键开关5个,电阻电容若干,6M晶振一个,稳压电源,函数信号发生器,及示波器个一个

软件:PC机WINDOWS *** 作系统,KEIL单片机仿真调试软件

三 设计思想:

通过ADC0809将正弦波模拟信号按照一定的频率进行采样,频率由键盘进行串级控制,转换成数字量,然后存储到8155的RAM里面,再将数据输出到DAC0832,将数字量转化成模拟量,经过LM358将信号放大,送到示波器终端循环显示出来

BUFFRE EQU 31H ;采样频率设置单元

BUFRAM EQU 7E00H ;8155RAM首地址

BUFADC EQU 0FD1FH ;0809启动地址

BUFDAC EQU 0BFFH ;0832启动地址

K1 EQU P14 ; 四个频率选择按键

K2 EQU P15

K3 EQU P16

K4 EQU P17

ORG 0000H

LJMP START

ORG 0030H

START: MOV R4,#02 ;由于8155的复位时间比8051慢,所以在对8155初始化之前必须有延时

DEL11:MOV R6,#200 ; 延时为021s的倍

DEL21:MOV R7,#126

DEL31:DJNZ R7,DEL31

DJNZ R6,DEL21

DJNZ R5,DEL11

MOV DPTR,#7FF8H ; 8155初始化

MOV A,#00H ; 写入命令字

MOVX @DPTR,A

MOV R0,#0FAH

MOV DPTR,#BUFRAM

LOOP:MOVX @DPTR,A ;对8155RAM清零

INC DPTR

DJNZ R0,LOOP

FRESET:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT1 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT1:JB K2,NEXT2

MOV BUFFRE,#04H

LJMP INPUT

NEXT2:JB K3,NEXT3

MOV BUFFRE,#08H

LJMP INPUT

NEXT3:JB K4,NEXT4

MOV BUFFRE,#06H

LJMP REALIO ;如果是K4按下,则进行实时输入输出

NEXT4:LJMP FRESET ; 循环等待按键按下

INPUT: ; A/D采样程序

MOV R0,#0FAH ;共采集250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP1:PUSH DPL ; 先保存次地址

PUSH DPH

MOV DPTR,#BUFADC ; 0809启动地址

MOV A,#00H

MOVX @DPTR,A ; 启动0809 A/D转换开始

NOP ; 一定时间延时

NOP

WAIT:JB P10,WAIT ; 等待转换结束

MOVX A,@DPTR ;读取转换结果

POP DPH

POP DPL ;恢复RAM地址

MOVX @DPTR,A ; 保存数据至8155RAM

INC DPTR ;RAM地址加一,指向下一个存储单元

ACALL DELAY ; 延时,即以一定频率采样

DJNZ R0,LOOP1 ; 250个数据是否采集完成,否则继续

OUTPUT: ; D/A转换模块

MOV R1,#0FAH ;250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP2: PUSH DPL ; 保存此地址

PUSH DPH

MOVX A,@DPTR ;将数据输出到A中

MOV DPTR,#BUFDAC ; 0832地址

MOVX @DPTR,A ;将数据输出进行D/A转换

NOP ;为了与采样频率一直,设定一定延时

NOP

POP DPH ;恢复RAM地址

POP DPL

INC DPTR ;指向下一个要转换的数据单元

ACALL DELAY ; 与采样相同延时

DJNZ R1,LOOP2 ; 直道转换完成

WAIT2:JNB K4,NEXT

LJMP OUTPUT ;循环显示输出结果

NEXT:LJMP REALIO

DELAY:MOV R5,BUFFRE ;延时程序,通过R5的不同,改变延时时间,从而改变

DEL1:MOV R6,#2 ; 延时为0001s的倍

DEL2:MOV R7,#126

DEL3:DJNZ R7,DEL3

DJNZ R6,DEL2

DJNZ R5,DEL1

RET

REALIO: ;实时显示程序

MOV DPTR,#BUFADC

MOV A,#00H

MOVX @DPTR,A

NOP

NOP

WAIT1:JB P10,WAIT1

MOVX A,@DPTR

MOV DPTR,#BUFDAC

MOVX @DPTR,A

NOP

NOP

FRESET1:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT11 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT11:JB K2,NEXT12

MOV BUFFRE,#04H

LJMP INPUT

NEXT12:JB K3,NEXT13

MOV BUFFRE,#08H

LJMP INPUT

NEXT13:LJMP REALIO

END

八 使用说明

1上电复位或者按键复位后,程序开始运行后,等待K1-K4的按键被按下,根据按下的键值作不同的处理。

2如果被按下的是K1-K3键,则根据按下的键分别设置不同的采样频率,然后开始进行A/D转换进行信号的采样,再存储至8155的RAM中,如果存储完了250个数据,则自动开始进行数据的D/A输出,在示波器上可以看到相应的波形,数据是循环输出的,所以可以一直看到数据输出!

3如果是按键K4被按下,则进行的是实时的采样输入输出,即将信号通过ADC0809采样进来,不保存至8155的RAM中,就立即送到DAC0832输出到示波器显示,这样的信号基本上就是原来的信号波形。

4在K1-K3按下后正常的采样,存储,输出过程中,也可以按下K4键而转到实时的输入输出程序,便于将采样数据和原数据进行对照。

5在实时的输入输出时,也可以同过按下K1-K3键,立即切换到原来的一定频率采样,存储,输出过程。

6硬件设计上还有一个复位键,可以对程序进行按键复位(汇编,已经实验通过)

简单的A/D,D/A转换程序

此程序是我做单片机课程设计的程序,PROTEL原理图在附件里

程序经过了实验的测试,没有任何问题,

一 设计要求:

1 以8031为主控器组成A/D,D/A转换系统。

2 对任意波形的脉冲信号进行A/D转换后进入数据存储器,要求能够存储5~10个周波,然后定时将数据经D/A转换输出示波器显示。

3 采样的频率可由键盘有级调节。

二 课程设计条件:

硬件:个人PC一台,8051单片机仿真头一个,89S51单片机一个,ADC0809芯片一块,DAC0832芯片一块,7402一个,LM358一片,按键开关5个,电阻电容若干,6M晶振一个,稳压电源,函数信号发生器,及示波器个一个

软件:PC机WINDOWS *** 作系统,KEIL单片机仿真调试软件

三 设计思想:

通过ADC0809将正弦波模拟信号按照一定的频率进行采样,频率由键盘进行串级控制,转换成数字量,然后存储到8155的RAM里面,再将数据输出到DAC0832,将数字量转化成模拟量,经过LM358将信号放大,送到示波器终端循环显示出来

BUFFRE EQU 31H ;采样频率设置单元

BUFRAM EQU 7E00H ;8155RAM首地址

BUFADC EQU 0FD1FH ;0809启动地址

BUFDAC EQU 0BFFH ;0832启动地址

K1 EQU P14 ; 四个频率选择按键

K2 EQU P15

K3 EQU P16

K4 EQU P17

ORG 0000H

LJMP START

ORG 0030H

START: MOV R4,#02 ;由于8155的复位时间比8051慢,所以在对8155初始化之前必须有延时

DEL11:MOV R6,#200 ; 延时为021s的倍

DEL21:MOV R7,#126

DEL31:DJNZ R7,DEL31

DJNZ R6,DEL21

DJNZ R5,DEL11

MOV DPTR,#7FF8H ; 8155初始化

MOV A,#00H ; 写入命令字

MOVX @DPTR,A

MOV R0,#0FAH

MOV DPTR,#BUFRAM

LOOP:MOVX @DPTR,A ;对8155RAM清零

INC DPTR

DJNZ R0,LOOP

FRESET:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT1 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT1:JB K2,NEXT2

MOV BUFFRE,#04H

LJMP INPUT

NEXT2:JB K3,NEXT3

MOV BUFFRE,#08H

LJMP INPUT

NEXT3:JB K4,NEXT4

MOV BUFFRE,#06H

LJMP REALIO ;如果是K4按下,则进行实时输入输出

NEXT4:LJMP FRESET ; 循环等待按键按下

INPUT: ; A/D采样程序

MOV R0,#0FAH ;共采集250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP1:PUSH DPL ; 先保存次地址

PUSH DPH

MOV DPTR,#BUFADC ; 0809启动地址

MOV A,#00H

MOVX @DPTR,A ; 启动0809 A/D转换开始

NOP ; 一定时间延时

NOP

WAIT:JB P10,WAIT ; 等待转换结束

MOVX A,@DPTR ;读取转换结果

POP DPH

POP DPL ;恢复RAM地址

MOVX @DPTR,A ; 保存数据至8155RAM

INC DPTR ;RAM地址加一,指向下一个存储单元

ACALL DELAY ; 延时,即以一定频率采样

DJNZ R0,LOOP1 ; 250个数据是否采集完成,否则继续

OUTPUT: ; D/A转换模块

MOV R1,#0FAH ;250个数据

MOV DPTR,#BUFRAM ; 8155RAM首地址

LOOP2: PUSH DPL ; 保存此地址

PUSH DPH

MOVX A,@DPTR ;将数据输出到A中

MOV DPTR,#BUFDAC ; 0832地址

MOVX @DPTR,A ;将数据输出进行D/A转换

NOP ;为了与采样频率一直,设定一定延时

NOP

POP DPH ;恢复RAM地址

POP DPL

INC DPTR ;指向下一个要转换的数据单元

ACALL DELAY ; 与采样相同延时

DJNZ R1,LOOP2 ; 直道转换完成

WAIT2:JNB K4,NEXT

LJMP OUTPUT ;循环显示输出结果

NEXT:LJMP REALIO

DELAY:MOV R5,BUFFRE ;延时程序,通过R5的不同,改变延时时间,从而改变

DEL1:MOV R6,#2 ; 延时为0001s的倍

DEL2:MOV R7,#126

DEL3:DJNZ R7,DEL3

DJNZ R6,DEL2

DJNZ R5,DEL1

RET

REALIO: ;实时显示程序

MOV DPTR,#BUFADC

MOV A,#00H

MOVX @DPTR,A

NOP

NOP

WAIT1:JB P10,WAIT1

MOVX A,@DPTR

MOV DPTR,#BUFDAC

MOVX @DPTR,A

NOP

NOP

FRESET1:MOV P1,#0FFH ;准备读取P1 口状态

JB K1,NEXT11 ; 依次判断按下了哪一个按键

MOV BUFFRE,#02H ;送相应的频率设置到31内存单元

LJMP INPUT

NEXT11:JB K2,NEXT12

MOV BUFFRE,#04H

LJMP INPUT

NEXT12:JB K3,NEXT13

MOV BUFFRE,#08H

LJMP INPUT

NEXT13:LJMP REALIO

END

八 使用说明

1上电复位或者按键复位后,程序开始运行后,等待K1-K4的按键被按下,根据按下的键值作不同的处理。

2如果被按下的是K1-K3键,则根据按下的键分别设置不同的采样频率,然后开始进行A/D转换进行信号的采样,再存储至8155的RAM中,如果存储完了250个数据,则自动开始进行数据的D/A输出,在示波器上可以看到相应的波形,数据是循环输出的,所以可以一直看到数据输出!

3如果是按键K4被按下,则进行的是实时的采样输入输出,即将信号通过ADC0809采样进来,不保存至8155的RAM中,就立即送到DAC0832输出到示波器显示,这样的信号基本上就是原来的信号波形。

4在K1-K3按下后正常的采样,存储,输出过程中,也可以按下K4键而转到实时的输入输出程序,便于将采样数据和原数据进行对照。

5在实时的输入输出时,也可以同过按下K1-K3键,立即切换到原来的一定频率采样,存储,输出过程。

6硬件设计上还有一个复位键,可以对程序进行按键复位

在C语言里没有指令,只有语句,用C语言执行A/D转换如下:

//A/D转换初始化子程序

void

adinitial()

{

ADCON0=0x41;

//选择A/D通道为RA0,且打开A/D转换器

//在工作状态,使A/D转换时钟为8Tosc

ADCON1=0X8E;

//转换结果右移,及ADRESH寄存器的高6位为"0"

//把RA0口设置为模拟量输入方式

ADIE=1;

//A/D转换中断允许

PEIE=1;

//外围中断允许

TRISA0=1;

//设置RA0为输入方式

}

//读ADRESH寄存器就能得到AD转换值了,

汇编的如下:

ADINT

MOVLW

0X51

MOVWF

ADCON0

;选择A/D转换通道为RA2,且打开A/D在工

;作状态,并使A/D转换时钟为8tosc

BANKSEL

ADCON1

;选BANK1体

MOVLW

0X80

MOVWF

ADCON1

;转换结果右移,即ADRESH寄存器的高6位;为“0”,且把RA2口设置成模拟量输入口

CLRF

PIE1

;禁止其它中断

BSF

PIE1,ADIE

;A/D转化中断允许

BSF

TRISA,2

;设置RA2口为输入方式

BSF

INTCON,PEIE

;外围中断允许

BSF

INTCON,GIE

;总中断允许

BCF

STATUS,RP0

;返回BANK0

RETURN

这是个AD转换控制程序,并将结果在LCD上显示的程序。不过程序比较罗嗦,个人觉得有些程序没用。

说明的部分用“////”标注了,应该比较清楚了。你自己看吧。

LED_0 EQU 30H ;

LED_1 EQU 31H

LED_2 EQU 32H ;存放段码

ADC EQU 35H ;/////////AD转换结果存储单元

CLOCK BIT P24 ;定义ADC0808时钟位

ST BIT P25

EOC BIT P26

OE BIT P27

ORG 00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV LED_0,#00H

MOV LED_1,#00H

MOV LED_2,#00H

MOV DPTR,#TABLE ;段码表首地址

MOV TMOD,#02H

MOV TH0,#245

MOV TL0,#00H

MOV IE,#82H

SETB TR0

////////////启动AD转换//////////////////

WAIT: CLR ST

SETB ST

CLR ST ;启动AD转换

JNB EOC,$ ;等待转换结束

SETB OE

MOV ADC,P1 ;读取AD转换结果

CLR OE

MOV A,ADC

/////////////////分别取AD结果的个/十/百/位/////////////////////////////

MOV B,#100 ;AD转换结果转换成BCD码

DIV AB

MOV LED_2,A

MOV A,B

MOV B,#10

DIV AB

MOV LED_1,A

MOV LED_0,B

/////////////LCD显示///////////////////////

LCALL DISP

SJMP WAIT

INT_T0: CPL CLOCK ;提供ADC0808时钟信号

RETI

///////送LCD显控制的子程序//////////////

DISP: mov dptr,#table

MOV A,LED_0 ;数码显示子程序

MOVC A,@A+DPTR

CLR P23

MOV P0,A

LCALL DELAY

SETB P23

mov dptr,#table

MOV A,LED_1

MOVC A,@A+DPTR

CLR P22

MOV P0,A

LCALL DELAY

SETB P22

mov dptr,#table

MOV A,LED_2

MOVC A,@A+DPTR

setb acc7

CLR P21

MOV P0,A

LCALL DELAY

SETB P21

RET

/////////这段程序,比较怪,因为你没说具体功能,我没看明白//////////

/////////只知道是对AD结果按TAB表进行处理,也是取个/十/百/位/////////

DELAY: MOV R6,#10 ;延时5毫秒

D1: MOV R7,#250

DJNZ R7,$

DJNZ R6,D1

ntov:

mov dptr,#tab

mov a,adc

movc a,@a+dptr

mov b,#2

div ab

mov r1,b

mov r1,b

mov b,#10

div ab

mov led_2,a

mov led_1,b

cjne r1,#01,kk1

mov led_0,#05

back: ret

kk1: mov led_0,#00

ajmp back

RET

TABLE: DB 3FH,06H,5BH,4FH,66H

DB 6DH,7DH,07H,7FH,6FH

tab:

db 0, 0 , 0 , 1, 0, 2, 0, 0, 3, 0

db 4, 0, 0, 5, 0, 6, 0, 0, 7, 0

db 8, 0, 0, 9, 0, 0, 10, 0, 11, 0

db 0, 12, 0, 13, 0, 0, 14, 0, 15, 0

db 0, 16, 0, 17, 0, 0, 18, 0, 19, 0

db 0, 20, 0, 0, 21, 0, 22, 0, 0, 23

db 0, 24, 0, 0, 25, 0, 26, 0, 0, 27

db 0, 28, 0, 0, 29, 0, 0, 30, 0, 31

db 0, 0, 32, 0, 33, 0, 0, 34, 0, 35

db 0, 0, 36, 0, 37, 0, 0, 38, 0, 39

db 0, 0, 40, 0, 0, 41, 0, 42, 0, 0

db 43, 0, 44, 0, 0, 45, 0, 46, 0, 0

db 47, 0, 48, 0, 0, 49, 0, 50, 0, 0

db 51, 0, 0, 52, 0, 53, 0, 0, 54, 0

db 55, 0, 0, 56, 0, 57, 0, 0, 58, 0

db 59, 0, 0, 60, 0, 0, 61, 0, 62, 0

db 0, 63, 0, 64, 0, 0, 65, 0, 66, 0

db 0, 67, 0, 68, 0, 0, 69, 0, 70, 0

db 0, 71, 0, 0, 72, 0, 73, 0, 0, 74

db 0, 75, 0, 0, 76, 0, 77, 0, 0, 78

db 0, 79, 0, 0, 80, 0, 0, 81, 0, 82

db 0, 0, 83, 0, 84, 0, 0, 85, 0, 86

db 0, 0, 87, 0, 88, 0, 0, 89, 0, 90

db 0, 0, 91, 0, 0, 92, 0, 93, 0, 0

db 94, 0, 95, 0, 0, 96, 0, 97, 0, 0

db 98, 0, 99, 0, 0, 100, 0, 0, 0

END

以上就是关于ad574的数据转换51汇编程序全部的内容,包括:ad574的数据转换51汇编程序、汇编语言有几句不知道有什么作用求解(AD转换汇编程序给出) MOV SP,#60H、传感器 ad转换程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/10210577.html

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

发表评论

登录后才能评论

评论列表(0条)

保存