历史上的今天
今天是:2026年03月24日(星期二)
2023年03月24日 | 单片机指针基本知识
2023-03-24 来源:zhihu
一、单片机指针是什么?
单片机指针是指某个变量或数据所在存储区的内存地址
二、单片机指针有什么作用?
能够有效地表示数据结构,能动态分配内存,能较方便地使用字符串,有效地使用数组。
三、单片机指针咋么表示?
数据类型 [存储器类型] * 变量名,例如:int xdata * pi,其中*是指针运算符,pi是指针变量,*pi表示某变量或数据所在存储区地址所对应的数值。
四、单片机指针赋值方式
(1)、不用声明单片机指针变量的情况下赋值
int a=5;//定义变量a
int *p=&a;//表示把变量a所在内存地址(由内存器分配)存放的数据5赋给指针变量p
(2)、声明单片机指针变量的情况下赋值
int a=5;//定义变量a
int *p;//声明指针变量p
p=&a;//表示把变量a所在内存地址(由内存器分配)赋给指针变量p,作为指针变量p所在内存地址(由内存器分配)存放的数据。
value=*p;//表示把指针变量p对应变量a所在内存地址(由内存器分配)存放的数据5赋给变量value
五、单片机指针通俗理解

由上图可知:变量STR内存地址51H存放数据40H,要通过变量STRIP获取变量STR内存地址51H存放的数据40H,可使用单片机指针(某个变量或数据所在存储区的内存地址)来完成。首先让变量STRIP获取变量STR内存地址51H,表达方式为STRIP=&STR,由此可见指针(即变量STRIP)存储的数据是另一个变量(即变量STR)的内存地址),再获取变量STR内存地址51H存放的数据40H赋给某一个变量即可,表达方式为VALUE=*STRIP,也可表示为int *STRIP=&STR。
六、单片机指针咋么用?
(1)、用单片机指针编程点亮LED灯的单片机C语言程序
#include #define uchar unsigned char sbit LED = P1^0; uchar table[] = {0,1};//定义数组 uchar *pi;//声明指针变量 void main() { while(1) { pi = table;//把数组变量table里的第一个元素0所在内存地址(由内存器分配)赋给指针变量pi,也可这样表示:pi = &table[0],其表达意义一样。 LED = *pi;//*pi表示取指针变量pi所指内存地址(由内存器分配)对应的值(即数组table[]中的第一个元素0)赋给led,如果是要数组里面第二个元素1这一步就该写成*(pi+1)。 } } } (2)、用单片机指针编程循环点亮8 位LED流水灯的单片机C语言程序 #include #define uchar unsigned char #define uint unsigned int uchar *pi;//声明指针变量 uchar code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//定义数组 void delay(uint t) { uchar m,n; for(m=0;m } void main() { uchar i; while(1) { for(i=0;i<8;i++) { pi = table;//把数组变量table里的第一个元素所在内存地址(由内存器分配)赋给指针变量pi,也可这样表示:pi = &table[0],其表达意义一样。 P1 = *(pi+i);//*(p+i)表示取指针变量pi所指向数组变量table内元素所在内存地址对应的值赋给P1端口,比如:把数组变量table内的第一个元素(即0xFE)所在内存地址(由内存器分配)对应的值(即table内的第一个元素0xFE)赋给P1端口。 delay(220); } } }
上一篇:用于单片机的轻量级菜单
下一篇:单片机开发的正确姿势
史海拾趣
|
要理解什么是电子签名,需要从传统手工签名或盖印章谈起。在传统商务活动中,为了保证交易的安全与真实,一 份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合 同的内容,在法律上 ...… 查看全部问答> |
|
请教各位高手,注册表[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\PCI\\VEN_1022&DEV_2000&SUBSYS_20001022&REV_10\\3&61aaa01&0&88]中3&61aaa01&0&88代表什么意思?谢谢!… 查看全部问答> |
|
本人要用VB和数据库结合下位机单片机做一个数据采集系统,但是因为硬件原因现在不方便焊板子来调试。要用VB的串口控件来接受串口的数据,再导入数据库和VB里面数据处理。请问大家有什么软件模拟外部向机器串口发数据,使得VB的控件能接受到。 恳请 ...… 查看全部问答> |
|
以前是用STM32F103V8的,这次我换成了STM32F103VB,买了30,可是出现问题了,共焊接了两块板,一块板的晶振只会在偶尔上电时会起振(11.0592M),而另一块板子可以起振,但程序跑起来不对,而我又把以前板子的STM32F103V8换到这块板子上来又是好 ...… 查看全部问答> |
|
事情是这样的,我想做块板子,用C6416接一个线阵CCD实现视频采集,现在CCD的驱动板是PCI接口,我想把数据传到dsp里面该如何实现呢?6416有个HPI口,mcbsp口,通过这俩口能实现数据传输码?如果能,大体思路是什么呢?望高手指教一二啊… 查看全部问答> |
|
觉得还是串口这个好玩 就是按照教程里那样选择板子占用的串口 我的是这样的比视频那里的列表多了一行(为了看看调试会不会把原来的程序改了 结果就把原来板子的整没了 后来从新下的 sw里 qs-rgb ...… 查看全部问答> |




