51系列单片机中data idata xdata pdata的区别

作者&投稿:检滕 (若有异议请与网页底部的电邮联系)
~ 51单片机初学者不能够区分这几个名词的意思,现具体说明一下,以供参考,共同提高。
DATA:固定指前面0x00-0x7F的128个RAM,可以用ACC直接读写的,速度最快,生成的代码也最小。
IDATA:固定指前面0x00-0xFF的256个RAM,其中前128和DATA的128完全相同,只是因为访问的方式不同。IDATA是用类似C中的指针方式 访问的。汇编中的语句为:MOX ACC,@Rx。
XDATA:外部扩展RAM,一般指外部0x0000-0xFFFF空间,用DPTR访问。
PDATA:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用MOVX ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG, 建议少用。但也有他的优点,具体用法属于中级问题。


单片机控制DA输出的是什么
单片机控制DA输出的当然是一个模拟量,DA就是数字信号转换为模拟信号。

单片机DA指令为什么不影响溢出标志!请不要回答规定!这不是规定!而是逻...
带符号数运算,才有溢出的问题。加法运算,两个正数相加,和,大于 127,就是负数了。这时,OV=1。否则,OV=0。减法运算,... ...。溢出标志Ov,是用来表示带符号数运算的。BCD 码运算,显然不存在溢出的问题。所以,DA A 指令不影响溢出标志。

单片机接口选择(AD,DA,LCD,存储器)
AD0832 AD0804\/0809 DA0832 LCD 1602 12864常用的 AD DA还要看你要的性能,有高速的,有高精度的,高精度就是位数,有8、10、12、16位等,位越高精度就高

请教:51单片机,用汇编语言实现指令DAA的功能?
DA A指令,是专门用于BCD码加法计算调整的,例如,计算十进制数26+17,用指令:MOV A ,#26H ADD A ,#17H 这样计算的结果是3DH,这不是十进制数,在加法指令后加上DA A,则进行十进制数调整,调整后的结果就是43了。

单片机是如何区分A\/D信号
单片机的普通IO口是无法识别 A(模拟信号)的,他只认识高、低电平(D)数字量。而AD转换或者DA转换模块一边是能够识别A量,另一边是识别D量。单片机只和识别D的一端通信。转换是有AD或者DA芯片完成的。以你的例子:重量1KG,通过一个电信号的转换,将重量这个实际单位转换为模拟的电信号。然后AD转换...

请问51单片机中哪种型号带DA啊,价格便宜的那种?
STC的可以,只要几块钱就可以买到。

单片机电流输出
实现这个功能需要用到两个方面的内容AD和DA,AD的作用是实现0-10V电压采样(模拟量向数字量转化),DA的作用是实现电流输出(数字量向模拟量转化)。0-10V的电压信号通过电阻分压的方式转化为单片机可采集的范围,DA部分,这里推荐使用AD5410。单片机和AD5410的实现电路原理图如下所示:...

哪种单片机带DA转换
我在用STC单片机 一般都有,你看看他的具体视频,这是杜洋的时钟视频: 他没用D\/A转换,用STC单片机自带的D\/A实现控制温度的! :http:\/\/v.youku.com\/v_show\/id_XMTA3OTAxMDgw.html

如图所示,单片机出来的DA转换信号,后接电压跟随器。我想知道两个10K的...
这两个电阻,主要是用来滤波的,大一些,小一些都可以,你换成5.1K,或15K也可以的。一般都是经验值,除非你的信号,有特殊的频点或要求。

如何用D\/A来控制单片机的输出电流
这个问题可以换个角度来考虑,既是单片输出电流那就是直流电流,而想想欧姆定律:I=U\/R,你要控制的是电流,而负载R是固定的,所以只需要控制电压就可以达到目的了,控制电压的方法可以选用串电阻的方法来解决,也就是说DA输出给下位单片机,下位单片机接受命令后控制可编程电位器,这样就可以一定范围实现...

寒亭区17288578853: C51中的data和idata有什么区别,谢谢了
廖养唯爱: 51单片机有以下几个内存模块组成: ROM或者Flash就不说了. RAM有------内部RAM的低128字节(00-7F) -------内部RAM的高128字节(80-FF)---【89C51单片机没有这一段空间】 -------特殊功能寄存器(SFR)(80-FF) ------外部RAM 64...

寒亭区17288578853: 单片机原理与应用中data idata xdata code 分别指什么空间
廖养唯爱: 这个应该是单片机Keil C的定义方法, 如MCS51单片机: iData表示外部地址,寻址范围在0~255. xData表示外部地址,寻址范围在255以上到65536

寒亭区17288578853: 计算机硬件编程中code和data是什么意思 -
廖养唯爱: 这是51单片机C语言编程的写法,code是将这段数据保存于程序存储器当中,以节省宝贵的RAM资源 data是利用单片机内部低128字节的RAM空间,变量类型默认是data,因此可以省略

寒亭区17288578853: 单片机汇编中DATA什么意思 -
廖养唯爱: data指的就是一个数值,二进制,十进制,十六进制都可以,没有特别说明位数,一般指的是八位的,就是最大不超过255,#data16指的是一个16位的二进制数.

寒亭区17288578853: 单片机程序运行要不要把程序从ROM中读入到RAM中 -
廖养唯爱: 不要.但是ram中肯定会保留与当前程序运行状态有关的寄存器(SFR,对于ST89C52应该就是0x80~0xFF的单元).对于51系列或者类51的单片机,程序空间和数据空间是分开的,并不存在由rom加载到ram的问题.这么说吧,ST89C52可以支持到64K的程序存储,如果都加载到外部RAM里,那RAM肯定是放不下了.data是内部直接寻址的RAM,idata是内部间接寻址的RAM

寒亭区17288578853: 51单片机idata空间到底怎么用,为什么我把变量定义到idata空间,编译后,data空间还被占用了? -
廖养唯爱: idata是内部RAM高128字节,你把变量定义为idata空间,就是放到内部RAM高128字节中,而Keil 编译结果的data,是指全部的内部RAM,而不单单指低128字节的RAM

寒亭区17288578853: 51单片机 TI=1是什么意思 -
廖养唯爱: TI就是串口送数据完成标志,但TI=1是,说明当前数据(1字节)已经通过串口发送出去了,通常的发送完成写法如下:SBUF = senddata; //senddata 是需要发送的数据 while(!TI); //当TI为0是,一直执行while死循环,当TI为1时,跳出while循环 TI=0; //清掉TI,为发送下个数据做准备.

寒亭区17288578853: 请问unsigned char data temp - data[2] = {0x00,0x00} ;是什么意思? -
廖养唯爱: 51系列单片机,data表示声明一个idata数据;其他单片机或嵌入式系统估计有类型的定义 然后你这行代码的意思就是:声明一个存储在idata的数组,数据类型为unsigned char,数组长度为2,初始值为{0x00, 0x00}

寒亭区17288578853: 51单片机串口通讯,在接收一端某处我用xdata就很正常,用data或idata程序就不太稳定请问问题可能出在哪? -
廖养唯爱: 你是xdata区存放接收的数据吧,而且可以肯定你只是仿真,并不是实物,因为实物是需要扩展外部数据存储器,才能用xdata区的.那回到话题上,你存放的数据比较多,程序占用了内存105个字节,而对于51单片机内存只有128个字节,还要留出工作寄存器区和堆栈区,很明显内存不足甚至溢出,所以造成错误,即你说的不稳定.你可以在工程的单片机型号选为AT89C52,这样,idata就有256字节,多出128字节就够用了,并把接收数组放在0x80区.假如数组名是buf[80],这样声明变量,unsigned char idata buf[80] _at_ 0x80;

寒亭区17288578853: 51单片机DATA什么意思 -
廖养唯爱: 一种单片机的数据类型,在直接寻址片内数据存贮区,访问速度快.还有位寻址区(bdata)、间接寻址区(idata)、代码存贮区(code)、外部存储区(xdata)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网