导航:首页 > 操作系统 > 单片机怎么算变量

单片机怎么算变量

发布时间:2022-10-07 15:34:55

❶ 51单片机的 pc值怎么算

A=( 50h ),SP=( 50h ),(51H)=( 30h ),(52H)=(50h ),PC=( 5030h )

pc总是指向下一条指令的首地址的。但是在返回的时候得看堆栈中的数了。上面程序执行完之后:

(A)=50H;

sp=50H(因为在程序中,sp减了两次,后来又加了两次,在程序最后ret有在返回的时候减了两次,即地址出栈,故最终结果是50h。

(51h)=30h;

(52h)=50h;

因为ret指令返回时,出栈的结果是高地址=(52h)=50h;而低地址=(51h)=30h;故最终结果pc值是5030h;

(1)单片机怎么算变量扩展阅读:

51单片机功能特性

1、可以仿真63K程序空间,接近64K 的16位地址空间;

2、可以仿真64Kxdata 空间,全部64K 的16位地址空间;

3、可以真实仿真全部32 条IO脚;

4、完全兼容keilC51 UV2 调试环境,可以通过UV2 环境进行单步,断点, 全速等操作;

5、可以使用C51语言或者ASM汇编语言进行调试 ;

6、可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某 变量上就会立即显示出它此的值;

7、可选 使用用户晶振,支持0-40MHZ晶振频率;

8、片上带有768字节的xdata,您可以在仿真时选 使用他们,进行xdata 的仿真;

9、可以仿真双DPTR 指针;

10、可以仿真去除ALE 信号输出. ;

11、自适应300-38400bps 的所有波特率通讯;

12、体积非常细小,非常方便插入到用户板中.插入时紧贴用户板,没有连接电缆,这样可以有效地减少运行中的干扰,避免仿真时出现莫名其妙的故障;

13、仿真插针采用优质镀金插针,可以有效地防止日久生锈,选择优质园脚IC插座,保护仿真插针,同时不会损坏目标板上的插座. ;

14、仿真时监控和用户代码分离,不可能产生不能仿真的软故障;

15、RS-232接口不计成本采用MAX202集成电路,串行通讯稳定可靠,绝非一般三极管的简易电路可比。

❷ 求问如何在单片机定时器里面设置变量

TL0=(65536-t)%256; //t微秒之后中断
这程序,这算法,很费时间的。
你可以跟踪一下,这一行,用了多少微秒。

延时的时间,应该由主函数来定。
不应该在中断函数中,现场,再计算。

高电平多少时间、低电平多少时间,

算好后,分别存在两个变量中,并且分离开高低八位。
中断时,仅仅传送一下,即可。

❸ 单片机变量定义类型

C语言中,变量一般有两种属性,分别是:存储类别、数据类型。
例如定义一个变量:static unsigned char var = 0; 上述语句中,static(静态的)为变量的存储类别,unsigned char(无符号字符型)为变量的数据类型,var为变量名,初始化值为0。
下面给你说明几点。
存储类别:即变量在代码运行期间的存储方式。c语言提供了4种,分别是:auto(自动的)、static(静态的)、extern(外部的)、register(寄存器的)。
默认情况下,如果不加存储类别,则该变量是auto类的,该关键字可以省略,其它三个不能省。static的用法是,定义一个局部变量,该变量只进行一次初始化,在程序运行期间一直占用着内存,每次调用完毕都保持本次调用完后得到的值(而auto调用完一次即释放内存,下次调用用从新进行初始化)。extern:一个变量被定义成全局变量,加上该关键字,意思是提醒编译器,该变量是在别的C文件中(即你想再一个C文件中调用另外一个C文件的变量,需用该关键字进行引入)。register:定义一个变量为该存储类型,建议编译器将该变量存放在CUP内部寄存器中,以便该变量频繁调用而提高代码运行速度。注意,它是建议型的,一般用在循环次数多的地方,因为变量一般存放在内存中,每次CUP访问它都得跑到内存去提取,次数多了,影响运行速度。放在内部寄存器就快多了(当然放不放我们不知道,只是建议编译器这么做),这种变量也是用完就释放。
数据类型:C语言提供了三种基本数据类型:char型 int型 float型。
默认情况下,char/int/float是指有符号的,即前面都省略了signed关键字,如果需要定义成无符号型的,需在前面加上不可省略的unsigned关键字。char占一个字节,int占2个字节(在有的环境下是4个字节),float占4个。表示的数据范围也比较明确,char一个字节8位,共256种状态,有符号的最高位表示符号,0为正,1为负,其余7位表示数字位,2的7次方。int型16位 的,一样。float型的数据必须要有小数点,一般float能表示6~7位有效数字。上述的数据类型中,如果范围还不够大,还可以定义成long型,即长整型,占4个字节,而浮点型可以定义成double型,可以表示16~17为小数,当然,它也只占四个字节。

❹ 单片机char 100等于int 多少,是怎么计算的

1、可以转换,强制转换就行。例如:
int a=100;
unsigned char * c = (unsigned char *)a;
2、强制类型转换
当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。
显式强制类型转换
显式强制类型转换需要使用强制类型转换运算符,格式如下:
type(<expression>)

(type)<expression>
其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int nVar=0xab65;
char cChar=char (nVar);
上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。

❺ 单片机中的逻辑运算怎么算的

在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。逻辑运算通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。

累加器A清0指令。

CLR A;单片机软件指令功能是将累加器A中的内容清0。影响单片机标志寄存器PSW中的奇偶标志位P。

累加器A取反指令。

CPL A;单片机软件指令功能是将累加器A中的内容全部取反,结果送回A中。影响单片机标志寄存器PSW中的奇偶标志位P。

常用于单片机某个存储器单元或某个存储器区域中带符号数的求补。

RL A;左循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数向左移动1位,累加器A中最左边1位(即最高位A.7)移至最右边1位(即最低位A.0)。不影响单片机标志寄存器PSW中的标志位。

RR A;右循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数向右移动1位,累加器A中最右边1位(即最低位A.0)移至最左边1位(即最高位A.7)。不影响单片机标志寄存器PSW中的标志位。

RLC A;带进位左循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数和进位CY向左移动1位,累加器A中最左边1位(即最高位A.7)移至CY,CY原内容移至累加器A的最右边1位(即最低位A.0)。影响单片机标志寄存器PSW中的进位标志位CY。

RRC A;带进位右循环移位指令:

单片机软件指令功能是将累加器A的8位二进制数和进位CY向右移动1位,累加器A中最右边1位(即最低位A.0)移至CY,CY原内容移至累加器A的最左边1位(即最高位A.7)。影响单片机标志寄存器PSW中的进位标志位CY。

(5)单片机怎么算变量扩展阅读:

逻辑运算组成部分

Boolean(布尔运算)的参数面板可分成三部分。

布尔运算练习模型:骰子

Pick Boolean(拾取布尔运算对象)卷展栏

该卷展栏用来拾取运算对象B,如图所示。

在布尔运算中,两个原始对象被称为运算对象,一个叫运算对象A,另一个叫运算对象B。在建立布尔运算前,首先要在视图中选择一个原始对象,这时Boolean按钮才可以使用。进入布尔运算命令面板后,单击Pick Operand B命令按钮来选择第二个运算对象。

· Pick Operand B(拾取运算对象B):单击该按钮,在场景中选择另一个物体完成布尔合成。其下的4个选项用来控制运算对象B的属性,它们要在拾取运算对象B之前确定。

· Reference(参考):将原始对象的参考复制品作为运算对象B,以后改变原始对象,也会同时改变布尔物体中的运算对象B,但改变运算对象B,不会改变原始对象。

· Copy(复制):将原始对象复制一个作为运算对象B,而不改变原始对象。当原始对象还要作其他之用时选用该方式。

· Move(移动):将原始对象直接作为运算对象B,它本身将不再存在。当原始对象无其他用途时选该用方式。该方式为默认方式。

· Instance(关联):将原始对象的关联复制品作为运算对象B,以后对两者中之一进行修改时都会同时影响另一个。

Parameters(参数)卷展栏

该卷展栏参数可分为三个区域,如图所示。

Operands(操作对象)选项组

该组参数用来显示所有的运算对象的名称,并可对它们作相关的操作。

Operands List(操作对象列表):该列表框中列出所有的运算对象,供编辑操作时选择使用。

Name(名称):显示列表框中选中的操作对象的名称。可对其进行编辑。

Extract Operand(提取运算对象):它将当前指定的运算对象重新提取到场景中,作为一个新的可用对象,包括Instance(关联)和Copy(拷贝)两种属性。这样进入了布尔运算的物体仍可以被释放到场景中。只有从其上方的列表框中选择一个操作对象后才能激活该按钮。

❻ 51单片机变量 51的单片机变量是怎么个定义法。全局变量,局部变量都放在什么存储器里的

不能这样定义,这样定义是错的。你这个是赋值,不是定义在0x22单元格里。
unsigned char bdata SS _at_ 0x22;
只有在Keil编译环境下才可以这样使用。还有,这种语法不适合用C语言,我说的是不适合,不是不能用。C语言里面的指针就是针对这个的,不建议使用 _at_ 进行变量在RAM中固定,这样对程序编译优化时,带来很多麻烦,也得不到充分的优化。
其实用C语言指针的方法是可行的。
bdata区虽然有自己独立的位地址,但你用的是char型 ,是一个字节的,所以你说的0x22只是bdata区的字节地址,而不是位地址,那麽用C语言的方式实现 就是这样:
unsigned char *p;
p=0x22;
*p=50;
*p 表示指向0x22所在的单元格,就是将50赋值到0x22地址所指向的单元格里。
再从另一个角度讲,如果你没于传参或改变实参的情况下,不建议使用这类,即使有,也不是很建议。因为单片机高手是不会用_at_这类关键字进行变量定位的。
有什么疑问可以一起探讨。
希望我的回答对你有帮助,谢谢。

❼ 单片机C语言数值大于5位数怎么定义变量在线求,知道的兄弟姐妹帮帮忙啊!!!!急~~~~

一、如果你定义的数值小于65535,那么定义一个整型(unsigned int)型的变量就可以了,unsigned int 占用两个字节,其范围是:0-65535

二、如果你定义的数值大于65535,那么定义一个长整型变量(unsigned long int):
带符号: long int

不带符号:unsigned long int

如:unsigned long int a;
这个a现在在单片机中占有4个字节的空间,其范围是:0 ~4294967295。
unsigned long int 无符号长整型数说明。简写为unsigned long,字长为4字节共32位二进制数, 数的范围是0 ~4294967295。

❽ 单片机中什么叫全局变量,和局部变量

在子程序中声明的变量叫局部变量,退出子程序时释放内存
而在主程序中声明的叫全局变量,在程序运行过程中一致有效。
为了节约内存,能用局部变量就不要用全局变量

阅读全文

与单片机怎么算变量相关的资料

热点内容
java重载与多态 浏览:528
腾讯应届程序员 浏览:940
一键编译程序 浏览:129
语音加密包哪个好 浏览:337
有什么学习高中语文的app 浏览:280
安卓手机的表格里怎么打勾 浏览:407
阿里云服务器有网络安全服务吗 浏览:966
超解压兔子视频 浏览:22
单片机怎么测负脉冲 浏览:172
魅族备份的app在哪里 浏览:738
java倒三角打印 浏览:112
通达信回封板主图源码 浏览:44
战地什么服务器 浏览:299
安卓为什么老是闪退怎么办 浏览:803
乐高机器人的编程软件下载 浏览:223
工作中怎么使用加密狗 浏览:735
云服务器的后台找不到 浏览:98
php逐行写入文件 浏览:912
javaoracleweb 浏览:440
京东加密码怎么弄 浏览:467