本文目录一览

1,在单片机中PC是什么指针

简单的说,PC指针就是指当前程序运行的位置。希望能解决您的问题。
在此转贴一段文字仅供参考:pc——程序计数器,功能:用来指示下一条指令的地址(逻辑地址即偏移量),一般情况下,系统指示对其进行加1操作,担当遇到转移指令,如jmp,call,loop等时系统就会将跳转到的指令地址保存在pc中

在单片机中PC是什么指针

2,单片机中通用指针一般在存储器中占用几个字节

一般来说,指针,不占用存储器。而是占用,特殊功能寄存器,以及工作寄存器。

单片机中通用指针一般在存储器中占用几个字节

3,单片机中什么是指针

一个变量,假如它的值是一个地址,那这个变量就称为指针
a+pc 应该是5+2+1+50h=58h,有2条指令,第一条是2字节,第二条是1字节,另外你指令写错了,应该是movc a,@a+pc 和movc a,@a+dptr,这是51单片机2条访问程序空间的指令,里面的数据一般都是些表,只能读

单片机中什么是指针

4,Flash AVR单片机我想问它的PC程序指针是多少位的

PC指针还是16位的,AVR单片机的指令都是都是以字word为单位存储的,即2字节是1字。所以Atmega128单片机就是64K word 了,其PC是word的指针而不是byte的指针。

5,单片机中的 指针 应用

单片机中你最好不要使用指针,指针随意性很容易越界.建议使用数组.ps:第一次做程序我不信,使用过指针,后来受苦了.不过,在其它方面指针确实有其易用性.
能不能把问题描述的清楚点
a+pc 应该是5+2+1+50h=58h,有2条指令,第一条是2字节,第二条是1字节,另外你指令写错了,应该是movc a,@a+pc 和movc a,@a+dptr,这是51单片机2条访问程序空间的指令,里面的数据一般都是些表,只能读

6,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位)

7,单片机 指针

A+PC 应该是5+2+1+50H=58H,有2条指令,第一条是2字节,第二条是1字节,另外你指令写错了,应该是movc a,@a+pc 和movc a,@a+dptr,这是51单片机2条访问程序空间的指令,里面的数据一般都是些表,只能读
单片机中你最好不要使用指针,指针随意性很容易越界.建议使用数组.ps:第一次做程序我不信,使用过指针,后来受苦了.不过,在其它方面指针确实有其易用性.
A+DPTR=#4005HA+PC=#55H问这,有啥其它问题吗?

8,单片机的中断标志位是有什么作用

四个问号分为四点一一解答:1、一般来说单片机的中断发生有两个条件,一是中断标志位置位,二是中断允许,如果这两个条件都满足则进入中断,因为正常情况下中断一直是允许的,那么只能通过标志位来区分是否有中断挂起,2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,如果在这之前已经清零标志位那么中断结束后会再进入一次该中断,如果这时还没有清除中断标志位,则第二个1毫秒中断无效。
中断使能和中断标志ifg是没有关系的,开中断使能会使程序指针随着中断标志的置位而跳到那个中断向量所指的段里去;不开中断使能的时候你的主函数就不会被打断。中断标志xxxifg会随着某个事件发生而置位,是为了方便编程时候判断具体发生了什么事件用的,两者互相独立不冲突。你的程序里没有开中断,所以用查询的方法来读ad的通道0的值。
有一个程序是给单片机一个每1毫秒的周期性中断,--是定时器,产生的中断吧?然后在中断中对中断标志位进行清零。--中断标志,清零,不用你关心。--通常都是进入中断就自动清零。要是中断程序没有执行完,下一毫秒中断有来了,程序该怎么执行呢?--你的中断程序,就不应该编写这么长。

9,单片机程序里面是否可以允许有多个指针

指针也是个变量而已,只是其值表示的只是一个地址,变量是可以定义多个的。
首先,你要明白一个概念,指针,是做什么的?答案是,指针,是指向地址的。程序指针,指向的空间,在物理上是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。第二个区别,堆栈指针指向的是特定的数据空间,这个特定的数据空间,是从整个数据空间里划分出来,专门用于作堆栈用的,堆栈区间一旦划分出来,堆栈指针在规则上,就只能在这个范围内活动,如果出了这个范围,可能导致整个程序的崩溃。而数据指针在规则上,可以指向整个数据空间,但是,可以读堆栈空间,不应该去修改,否则也可能导致程序的崩溃。
可以啊 你可以多定义几个

10,在汇编语言写单片机的程序的时候如何知道当前的PC指针是多少

当前PC指针的值,可以通过一定的方法来获得,比如如果使用LCALL指令,那么单片机执行过程是:保护现场,将当前PC压入堆栈,当程序返回时,再弹出该保护的PC,由此,我们就可以获得当前的PC,具体程序如下:........LCALL GETPC ;调用一个子程序以获得当前PC值...........GETPC:POP ACC ;取得PC高八位POP B ;取得PC低八位PUSH B ;恢复SPPUSH ACC ;恢复SP......RET
看你的程序代码是从哪个地址开始放了程序刚开始pc的值是0000h,如果没有用org 伪指令指定代码存放的位置,则从0000h算起,比如mov a,@r0 ;pc=0000h(执行这条变语句后就变为00001h,下同) ;该指令为1字节指令inc r1 ;pc=0001hend 又如:org 0030hmain:anl 9fh, #0bh ;pc=0030h dec r0 ;pc=0033hend ;pc=0031h
首先,要知道pc值是无法读出来的。其次,pc值总是指向当前指令地址的。比如:0000H MOV A,#00H . . .0060H MOV A,#10062H MOVC A,@A+PC;这里的pc值就是0062h,而TAB地址是0063h, 要查TAB第一个值就必须让pc加一,所以A赋值1。0063H TAB:DB 7FH,DB .......

文章TAG:单片机里的指针是多少位单片机  指针  多少  
下一篇