• 单片机指针


    一、单片机指针是什么?

    单片机指针是指某个变量或数据所在存储区的内存地址

     二、单片机指针有什么作用?

     能够有效地表示数据结构,能动态分配内存,能较方便地使用字符串,有效地使用数组。

    三、单片机指针咋么表示?

     数据类型  [存储器类型]  *  变量名,例如: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<reg51.h>
    #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<reg51.h>
    #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<t;m++)
        for(n=0;n<110;n++);
      }
      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);
        }
       }                                                         
      }

  • 相关阅读:
    Android 中常用代码片段
    查看oracle中的中文所占字节数
    order by 中 使用decode
    Oracle select 中case 的使用以及使用decode替换case
    pyqt5 'QWidget' object has no attribute 'setCentralWidget'(转)
    程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)
    QT5入门之23 -QT串口编程(转)
    xpath-helper: 谷歌浏览器安装xpath helper 插件
    mysql给root开启远程访问权限
    Vmware无法获取快照信息 锁定文件失败
  • 原文地址:https://www.cnblogs.com/AChenWeiqiangA/p/13485290.html
Copyright © 2020-2023  润新知