急求:单片机MS-51,用汇编语言编写程序的问题. 高手的高分,谢谢,

1、最终显示:0-900
2、模拟值:0-3V
3、采集值:0-FFH(0-255)
4、问题:以下A和B哪个正确?
A、将0-FFH(0-255)转换成0-3V再乘以300倍。
B、直接将0-FFH(0-255)乘以3.53倍,再用十进显示。

请举例说明精度简便度等事项。
谢谢,二位.
可是用B时.转换精度差多了,0-900的变化为(0,3,6,9....)(0,35,70,....),线性太差了.....
不知二位用A方法有无"转换成0-3V"的例子 ?

用B方法即可。
但是乘以 3.53,还应该研究一下。
实际上,不是255对应900,而是256对应900。
那么:900 / 256 = 3.515
把0.015忽略,由此产生的误差,小于百分之一。

那么,全部使用整数的运算,有:(0~255) * 35 = (0~8925)
显示的时候,只是显示前3位,即可。
---------------------------------
用8位的AD转换器,精度就是这样了,和算法无关。
为了提高精度,应该采用分辨率更高的 AD 转换器。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-27
A.转换精度好,可是要用到多点小数位。程序可能稍长。
B.转换精度稍差些,可是带小数的乘除位数少。程序短。执行速度可能快些。
以上是指汇编编程。我个人认为B比较好些(如果精度能保正的话)
如果精度不要求,在说考虑A/D线性段的话。我建议用(0-E1)然后乘4.或者用(0D-F3)下边去13,上端去12.也是225。乘4转换。这样编程很方便的。

急求:单片机MS-51,用汇编语言编写程序的问题. 高手的高分,谢谢,
实际上,不是255对应900,而是256对应900。那么:900 \/ 256 = 3.515 把0.015忽略,由此产生的误差,小于百分之一。那么,全部使用整数的运算,有:(0~255) * 35 = (0~8925)显示的时候,只是显示前3位,即可。--- 用8位的AD转换器,精度就是这样了,和算法无关。为了提高精度,应该采用分辨...

51单片机定时器的汇编语言程序编程,
这么简单的要求,不用大动干戈。看看下面的程序,是不是最简单:ORG 0000H SETB TR0 ;启动T0 MOV R2, #250 ;定时计数初值 LOOP:MOV TH0, #(8192 - 8000) \/ 32 ;定时8ms MOV TL0, #(8192 - 8000) MOD 32 JNB TF0, $ ;等待8ms CLR TF0 DJNZ R2, ...

...* R2R3)乘法程序,最好有注释, 单片机MS-51,能用送分300..._百度知 ...
MOV R1, #4BH MOV R2, #5CH MOV R3, #6DH CALL MUL16 sjmp ;3344H * 5566H = 111A0118H ;3A4BH * 5C6DH = 150BC5EFH ;=== MUL16:;R0R1 * R2R3 ==> R4R5R6R7 MOV A, R1 MOV B, R3 MUL AB MOV R7, A MOV R6, B ;--- MOV A, R0 MOV...

51单片机中如何用汇编语言编写流水灯
SETB ET1;使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断 MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS; PUSH ACC;保护ACCMOV A,YSJI;CJNE A,#2,QT1;...

设MCS-51单片机使用的晶振是12MHz,欲使用定时器\/计数器1实现50ms定时中...
一、使用方式一:晶振频率为12MHz,机器周期为1us,50ms时间需要计数50000次,故计数器初值为(65536-50000),65536是因为方式一中,定时\/计数器的最大值为65536(2^16),当然写程序时不一定非要这么计算,因为定时\/计数器是溢出产生中断,也就是从最大加1就溢出,最大加1就是等于0的,只要计数个...

MCS-51单片机试题
采纳率:64% 擅长: 汇编语言 其他编程语言 编程语言 工程技术科学 嵌入式 其他回答 哇,头回见这么多分的,楼主可要讲信用啊难得见到个爽快的,以后有问题没分也给你答。三.简答题:(每题8分共24分)1. MCS-51单片机中断的开放和关闭是如何控制的?如果要对定时器T1开放中断,可以用什么指令实现? ;***中断设置...

51单片机汇编语言程序,一个按键控制两个发光二极管的同时闪烁,交替闪烁...
;P1.0 P1.1接2LED,P2.0接一按键。上电2LED不亮,按第1 次键2LED同时以1S周期闪烁,按第2 次 2LED轮流1S闪烁...同此循环。;11 04 17 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN:MOV TMOD,#01H ;MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV R0,#10 K...

求大佬,用汇编语言编程,51单片机在p1.0端每隔一秒交替输出高低电平...
这很容易做。用定时器定时器20ms,或50ms,在中断程序中计断次数,中断50次或20次就是1秒,在P1.0脚交替高低电平即可。

51单片机LED操作汇编语言程序解释
ORG 30H ;程序地址30H,即STAR标号地址 STAR: MOV R2,#99 ;将十进制数99送入R2中 MOV R4,#20 ;将十进制数20送入R4中 MOV IE,#88H ;开启EA和ET1 MOV TMOD,#10H ;使用T1的工作方式1 MOV TH1,#3CH ;给T1赋初值,这里是定时50ms MOV TL1,#0B0H SETB TR1 ;...

51单片机控制数字钟原理图及汇编程序设计
void delay(void)\/\/延时05ms { uchar i;for(i=250;i>0;i--);} void display() \/\/显示程序 { uchar i,k;k=0x01;for(i=0;i<8;i++){ P2=0;\/\/关闭显示 P0=display_code[time[i]%10];\/\/存放个位数 P0=~P0;P2=k;k=k<<1;delay();\/\/调用延时程序 P2=0;P0=display_code[...

相似回答
大家正在搜