历史上的今天
返回首页

历史上的今天

今天是:2025年07月30日(星期三)

正在发生

2018年07月30日 | PIC单片机入门_PICC的指向RAM的指针

2018-07-30 来源:eefocus

问题:


将30h,31h,32h单元中最大的数放入40h。

利用指向RAM的指针进行编程如下:



 #include

static volatile unsigned char add1 @0x30;

static volatile unsigned char add2 @0x31;

static volatile unsigned char add3 @0x32;

static volatile unsigned char add  @0x40;

main()       //绝对地址定位

{  add1=0x51;

    add2=0x5;

    add3=0x60;

    if(add1>add2) add=add1;

    else add=add2;

    if(add3>add) add=add3;

    while(1){  ;   }

}

注意:


本例中add1、add2、add3和add本质上都是地址,因此它们都是指向RAM的指针。在PICC中用指针进行寻址是通过FSR间接寻址的,因此add1=0x51以及add=add1都是以间接寻址方式进行赋值的。


以上程序中的指针add1、add2、add3和add都是指向bank0,假如要定义指向其他bank的指针也是可以的。


例如:


#include

//将绝对地址定位在不同的体

static volatile unsigned char add1 @0x30 ;       //实际地址=30h

bank1 static volatile unsigned char add2 @0x31;  //实际地址=(80h+31h)=0B1h

bank2 static volatile unsigned char add3 @0x32 ; //实际地址=80h*2+32h=132h

bank3 static volatile unsigned char add @0x40  ; //实际地址=80h*3+40h=1c0h

int x,y,z;

void comparison()

{  if (x>y)

         z=x;

   else

        z=y;   }

main()

{ add1=0x31;    add2=0x34;     add3=0x28;

  x=add1;     y=add2; 

  comparison();

  x=z;     y=add3; 

  comparison();

  add=z;

  while(1){  ;    }

}


换一种思路:


也可以直接对三个常数进行比较大小,然后将最大的数存放在于bank3的某单元中。


#include

//符号定义

#define x_data 0xe0;

#define y_data 0x60;

#define z_data 0x90;

bank3 static volatile unsigned char add @0x40  ; //实际地址=80h*3+40h=1c0h

int x,y,z;

void comparison()

{  if (x>y)

      z=x;

   else

     z=y;

}

main()

{ x = x_data ;  

  y = y_data; 

  comparison();

  x = z;

  y = z_data; 

  comparison();

  add = z;

 while(1){  ;  }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.cs


推荐阅读

史海拾趣

统宇电研(Coilmaster)公司的发展小趣事

统宇电研深知品质对于企业的重要性,因此一直将品质管理作为公司的核心竞争力之一。公司建立了严格的品质管理体系,从原材料采购到产品出厂的每一个环节都进行严格把关。同时,统宇电研还注重员工品质意识的培养和提高,通过培训和实践相结合的方式不断提升员工的品质素养。这些努力使得统宇电研的产品品质得到了客户的广泛认可。

宇阳科技(EYANG)公司的发展小趣事

作为电子行业的领军企业之一,宇阳科技始终坚持以创新为驱动的发展战略。公司不断投入研发资金,加强技术团队建设,积极引进先进技术和管理经验。通过持续创新和技术升级,宇阳科技成功推出了多款具有自主知识产权的新型电子元器件产品,并引领了行业潮流。同时,公司还积极参与行业标准制定和技术交流合作等活动,为推动电子行业的发展做出了积极贡献。

以上五个故事梗概概述了宇阳科技在电子行业中的发展历程和主要成就。这些故事不仅展现了公司的技术实力和市场地位,也体现了公司不断创新、追求卓越的发展理念。

骏晔科技(DreamLNK)公司的发展小趣事

骏晔科技在无线通讯模块领域一直寻求创新。2019年,公司与硬之城达成战略合作,推出了高性能的FSK双向收发模块。这款模块采用了最新的FSK调制技术,极大地提高了数据传输的稳定性和效率。通过这一创新,骏晔科技在物联网设备通讯领域取得了显著的市场份额增长。

Cardinal Components公司的发展小趣事

随着时间的推移,Cardinal不断推出新的产品系列以满足市场需求。2013年,公司推出了CJ速差器系列,这一系列产品以其高性能和稳定性受到了市场的广泛好评。随后,在2015年,CJ系列被移植到2.5×2.0封装尺寸,进一步提高了产品的集成度和可靠性。这些产品系列的拓展与升级不仅丰富了公司的产品线,也为客户提供了更多的选择。

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

在发展的道路上,Cardinal始终将质量管理放在首位。1997年,公司成功获得ISO认证,标志着其质量管理水平达到了国际标准。随后,在2001年,公司又获得了ISO 9001-200认证,进一步巩固了其在行业中的领先地位。这些认证的获得不仅提升了公司的声誉,也为客户提供了更可靠的产品和服务。

长工微电子公司的发展小趣事

长工微电子的发展得到了行业内外的高度认可。自成立以来,公司荣获了多项荣誉,包括广东省科技型中小企业、松山湖集成电路设计企业、国家高新技术企业、最具潜力中国模拟IC设计公司、中国集成电路创新创业大赛总决赛第二名等。这些荣誉不仅彰显了公司的实力,也为公司的发展注入了强大的动力。

问答坊 | AI 解惑

AVENIR 8.5-51MM镜头说明

我原来有个摄像头,镜头为AVENIR 8.5-51MM的,有8根连接线分别是红、黄、蓝、绿、黑、白、棕、灰,从解码器接出来为黄(解码器)对红(镜头)、黑(解码器)对黑绿(镜头)、绿(解码器)对蓝(镜头),现在该摄像机换成了一体机了,但不知道怎么 ...…

查看全部问答>

面试准备

我要面试一家公司的封装测试助理技术 员  需要怎么准备啊 望各为指教  我是应届生 任职要求:1.工程师英语四级(含)以上;技术员英语三级(含)以上; 2.能配合日夜轮班; 3.工作配合度高,积极进取。职位职责:1.机台维护/保 ...…

查看全部问答>

PIO0_1中断进不去?

下面是程序: #include \"..\\config.h\" #define LED         (1ul << 2)#define LED_INIT()  GPIO2DIR  |=  LED          &nb ...…

查看全部问答>

如何实现嵌入式系统的网上在线更新

最近要做一个基于Context-M3的无操作系统的项目,其中有一部分功能是要实现软件的在线更新。 我第一次做这方面的功能,没有什么经验,特来请教。 现在通信协议方面已经没有问题了,现在所面对的问题是: 如何将2进制文件写到Flash相应的地址上。 ...…

查看全部问答>

程序集“System.Web.Services"出错!

在做PDA应用程序时碰到: D:\\WebService2\\WebService2\\TestWebService\\Form1.cs(26,13): 错误 CS0012: 类型“System.Web.Services.WebService”在未被引用的程序集中定义。必须添加对程序集“System.Web.Services, Version=2.0.0.0, Culture=n ...…

查看全部问答>

EVC 对话框 焦点问题

BOOL CScanDlg::OnInitDialog() {CDialog::OnInitDialog();         GetDlgItem(IDC_EDIT1)->SetFocus(); } 请问代码有问题吗? 为什么 edit1 就是在运行后得不到焦点呢? 请问有什么办法才能使他得到焦点。…

查看全部问答>

急救!!!!!!用VHDL语言编写出租车计费器程序

用VHDL语言编写出租车计费器程序 要求:按行驶里程收费。起步价8.00元(含3公里),5公里以内按1.80元/公里,5公里以后按2.20元/公里,5公里以内每0.5公里加价0.9元,5公里以后每0.5公里加价1.1元。车停止每3分钟算0.5公里。 希望高手帮忙!!! ...…

查看全部问答>

仿真波形问题

  各位楼主,大家好!我在用modelsim-altera仿真时,出现过好多警告,警告内容为:Warning: CONV_INTEGER: There is an \'U\'|\'X\'|\'W\'|\'Z\'|\'-\' in an arithmetic operand, and it has been converted to 0.#  & ...…

查看全部问答>

逆变器基础

关于逆变器的设计涉及到方方面面,但最基础的东西还是得多看看。…

查看全部问答>