可以带。
在51单片机的嵌入式C语言中,指针同样是被支持的。所以在单片机上一样可以使用指针操作,具体使用方法,与标准C语言并没有不同。
不过需要注意的是,使用指针代表着间接寻址,相对变量的直接寻址,速度要稍慢一些。而单片机运算速度较慢,大量使用指针有可能会降低执行效率,影响效果。所以除非必要,还是少用指针。
❷ 单片机中的 指针 应用。
单片机中你最好不要使用指针,指针随意性很容易越界.建议使用数组.
ps:第一次做程序我不信,使用过指针,后来受苦了.不过,在其它方面指针确实有其易用性.
❸ 51单片机C语言编程问题,关于指针的运用问题,菜鸟求解求。
#include<reg51.h>
int a[ ]={0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xcf,0xc0};
int *pa;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
int time1,time2;
uint i; //添加个循环控制变量
void main()
{
P1=0xfe;
p25=0,p26=0,p27=0;
while(1)
{
pa=&a[0]; //指针指向数组首地址
// for(pa=9;pa>0;pa--) //这里就有问题了,指针值=9,
//那就相当于硬件地址为9的存储单元的内容
for(i=9;i>=0;i--) //多定义一个循环变量就可以解决
{
// P0=*pa; //这样的取值需要修改下
P0=*(pa+i); //数组逆序读出
for(time1=9801;time1>0;time1--)
{
time2=8;
while(time2--);
}
}
}
}
❹ 单片机指针最常见的两种
int,pi。
指针是一个变量,它与其他变量一样,都是RAM中的一个区域,且都可以被赋值通常认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上,甚至认为指针是C语言的灵魂,这里说通常,是广义上的,因为随着编程语言的发展,指针也饱受争议,并不是所有人都承认指针的,强大”和,优点”。
❺ 51单片机中程序指针PC和数据指针DPTR各自有什么用途电路复位后,二者的值各是多 少
程序计数器PC(program Counter)
程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,
用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。
复位后为0000H(16位)
数据指针(DPTR)
数据指针为16位寄存器,编程时,既可以按16位寄存器来使用,也可以按两个8位寄存器来使用,即高位字节寄存器DPH和低位字节DPL。
DPTR主要是用来保存16位地址,当对64kB外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:
MOVX A, @DPTR
MOVX @DPTR, A
在访问程序存储器时,DPTR可用来作基址寄存器,采用基址+变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。
MOVC A, @A+@DPTR
复位后为0000H(16位)
❻ 单片机的指针相当于plc的什么功能
单片机与PLC的区别
1.PLC是建立在单片机之上的产品,单片机是一种可编程的集成芯片。2.PLC更加适合于工业恶劣环境下使用使用比较稳定而单片机的工作环境要高一些;3.价格不同。单片机开发成本低,一个单片机十几块到几十块,但开发起来麻烦。PLC的价格几百,几千,几万,但是开发周期短,见效快。可靠性高。4.PLC有有一定的互换性,质量有保证,编程软件正朝标准化方向迈进。而单片机应用系统则是功能千差万别,质量参差不齐,学习、使用和维护都很困难。5.单片机的编程语言是C语言或汇编语言,也采用自带的编程语言(如51单片机的ASM语言)。PLC的编程语言有:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)、结构化文本语言(ST)。6.PLC是应用单片机构成的比较成熟的控制系统,是已经调试成熟稳定的单片机应用系统的产品,有较强的通用性。而单片机可以构成各种各样的应用系统,使用范围更广。单就“单片机”而言,它只是一种集成电路,还必须与其它元器件及软件构成系统才能应用。7.于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但这要有相当的研发力量和行业经验才能使系统稳定、可靠地运行。最好的方法是单片机系统嵌入PLC的功能,这样可大大简化单片机系统的研制时间,性能得到保障,效益也就有保证。
❼ 51单片机中,指针函数 在C语言程序 如何使用
你好,比较方便的实现方式是在函数的外部申请数组;在调用函数的时候传入数组的地址进行操作。如果一定要在子函数内部申请空间并返回地址,那么需要在子函数内部动态申请内存空间。具体的方法一般是使用标准库中的malloc函数。对于c51函数库,参考这个链接:http://www.keil.com/support/man/docs/c51/c51_malloc.htm
❽ 单片机中程序指针、数据指针、堆栈指针区别是什么
首先,你要明白一个概念,指针,是做什么的?答案是,指针,是指向地址的。
程序指针,指向的空间,在物理上是Flash,在逻辑上,就是代码空间。比如说51单片机的PC指针,指向的就是Flash,即程序下一步要执行的指令的地址。
数据指针,指向的空间,在物理上有Flash和RAM,在逻辑上是Flash里的常数空间和数据空间,注意,是对于单片机来说,对于我们的电脑,常数空间不是在Flash上。
比如说51单片机的DPTR,如果用MOVC
A,@A+DPTR,此时,就是指向常数空间,如果用
MOVX
A,@A+DPTR就是指向的数据空间。
堆栈指针,指向的空间,在物理上是RAM,在逻辑上,就是数据空间,是特定的数据空间,堆栈是数据空间中单独划分出来,专门用于寄存中间结果的内存空间。
数据指针和堆栈指针主要有两个区别:
一是数据指针可以指向Flash,即可以指向常数,比如说我们定义一个数组
unsigned
char
code
Table[99],此时,就是DPTR可以指向常数空间。堆栈指针是不可以的,只能是指向RAM。
第二个区别,堆栈指针指向的是特定的数据空间,这个特定的数据空间,是从整个数据空间里划分出来,专门用于作堆栈用的,堆栈区间一旦划分出来,堆栈指针在规则上,就只能在这个范围内活动,如果出了这个范围,可能导致整个程序的崩溃。而数据指针在规则上,可以指向整个数据空间,但是,可以读堆栈空间,不应该去修改,否则也可能导致程序的崩溃。