c语言ad转换有什么作用,ad转换(汇编加c)

8937f6acc2f7765eae5cba249db0c4b2.png

一下是汇编程序

;此程序使用汇编调用c语言(由于ad转换出来的数据用汇编计算非常麻烦)

;在proteus中,数码管显示从0-5的电压值,保留小数点后2位

EXTRN code(cAlu)       ;声明外部函数

LED_0    EQU       36H             ;存放三个数码管的段码

LED_1   EQU       37H

LED_2   EQU       38H

ADC       EQU       35H               ;存放转换后的数据

ST BIT        P3.2

OE BIT        P3.0

EOC       BIT        P3.1

ORG      00H

START: MOV      LED_0,#00H

MOV      LED_1,#00H

MOV      LED_2,#00H

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

SETB      P3.4

SETB      P3.5

CLR P3.6             ;选择ADC0808的通道3

WAIT:    CLR       ST

SETB     ST

CLR       ST                        ;启动转换

JNB       EOC,$                 ;等待转换结束

SETB     OE                       ;允许输出

MOV      ADC,P1                ;暂存转换结果

CLR       OE                       ;关闭输出

lcall  delay

lcall   cAlu               ;跳转到c语言中

lcall  DISP                   ;显示AD转换结果

SJMP     WAIT

DISP:      mov    dptr,#table

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

MOVC    A,@A+DPTR

CLR P2.3

MOV      P0,A

LCALL    DELAY

SETB      P2.3

mov    dptr,#table

MOV      A,LED_1

MOVC    A,@A+DPTR

CLR P2.2

MOV      P0,A

LCALL    DELAY

SETB      P2.2

mov    dptr,#table       ;最高位,显示的时候加上小数点

MOV      A,LED_2

MOVC    A,@A+DPTR

setb    acc.7

CLR P2.1

MOV      P0,A

LCALL    DELAY

SETB      P2.1

RET

delay:      mov r4,#5       ;延时函数(延时大概5*255*2=25ms)

l1:    mov r5,#0ffh

l2:    djnz r5,$

djnz r4,l1

ret

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

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

END

//下面是c51语言片段,由于不能使用long行,int型还是不够,因此真实的只能保留一位(最后两位相同)

#pragma code small

#include

#include //定义绝对地址

#define NCIRCLE DBYTE[0x35]

#define NCIRCLE1 DBYTE[0x38]

#define NCIRCLE2 DBYTE[0x37]

#define NCIRCLE3 DBYTE[0x36]

void cAlu()

{                   //计算出电压的0-5v真实值

int data temp;

temp= NCIRCLE*50/256 ;

NCIRCLE1=temp/10;

NCIRCLE2=temp%10;

NCIRCLE3=temp%10;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值