问题:
将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
关键字:PIC单片机 PICC RAM 指针
引用地址:
PIC单片机入门_PICC的指向RAM的指针
推荐阅读最新更新时间:2024-03-16 16:10
Labview中的指针摆动问题
最近在学习Labview,准备做一个上位机把单片机发过来的数据在Labview中用仪表显示,怎奈仪表虽有反应,但是指针数据一直在跳动,不停地归零,只有在数据发过来的那一瞬间才会指向数据大小,间歇时间却不停地默认为初始值 试了以下方法解决: 1:改变单片机中的程序,提高发送数据的频率(不是波特率),有效果,但是终究不是解决问题的好方法,要牺牲一部分程序,这是任务不允许的 2:在Labview中利用数组缓冲,在仪表显示中加循环结构,均告失败,因为现在对Labview掌控还不那么自如,涉及原理的东西很费力 3:最终解决方法 在显示结构中测试
[测试测量]
Intel公布最新45/32nm工艺,为服务器和PC提供更小尺寸芯片
Intel近日推出了两款采用45nm和32nm级工艺技术生产的硅晶圆,这两款晶圆有望为下一代服务器和PC生产尺寸更小、效率更高的芯片。Intel首席执行官Paul Otellini预计这些创新会为Intel公司推进微处理器、内存和图形芯片的性能创造机会。 Intel表示,将根据其计划在11月12日推出15个代号为Penryn的新45nm处理器,并将在2008年第一季度推出另外20个代号为Nehalem的处理器。其32nm工艺技术将在2009年开始投产。 为了明确其观点,Otellini以包含19亿多个晶体管的32nm晶圆SRAM内存处理器为例。随后他举出了包含7.31亿个晶体管的45nm晶圆的例子。“该技术开始向我们提供打造今
[焦点新闻]
联名紫禁城IP realme真我V25发布:超大内存 价格1999元
北京时间2022年3月3日,realme正式召开“手握星河”主题发布会,推出了新一代国潮手机realme真我V25。本次真我V25携手“紫禁城”国潮IP,将科技与东方文化的传承相结合,真我V25标配旗舰级“12 GB+256GB”超大内存组合,而此次发布会上,全新真我Buds Q2s无线耳机也同步亮相。 外观方面,本次realme联名“紫禁城”IP,从紫禁城与星河中汲取灵感,让真我V25实现了从设计语言到工艺的全面突破。 配色方面,真我V25采用了“紫微星”配色,还原紫禁城夜晚的星辰变幻,使用复合工艺打造“星空纹理设计”——双纹双镀工艺将光线汇集在后盖中心,并漾印星河,极具辨识度。而且realme在价位段首次应用光致
[手机便携]
怎样减少因电压降造成的指针式万用表检测的误差
指针式万用表检测时的电压降是指指针式万用表直流电流挡在满量程检测时产生的电压降。 (1)电压降的具体数值。对于某一型号的指针式万用表,其电压降的数值通常为一定值,不同型号的指针式万用表,其电压降相差不大,如MF500型万用表与MF30型万用表的电压降均为0.75V左右。 (2)减少电压降引起误差的方法。为了减少因电压降引起的指针式万用表检测误差,在进行参数检测时,除了应选用高灵敏度的指针式万用表外,还要正确选择合适的量程。例如,选择高压挡检测比采用低压挡对被检测的电路影响小,选择大电流挡比选用小电流挡检测影响小。
[测试测量]
KEIL 单片机的RAM 超出范围处理
以前写了一个测试程序,昨晚上想把测试程序在改进时候,发现我多增加一个全局变量 unsigned int flag; //定义一个全局变量 ,烧写到单片机。。单片机运行时候。LCD 显示就正常了。测量到的数据也显示不了, 反复测试好多次, 发现问题就在这句: unsigned int flag; //定义一个全局变量 多定义一个就出现错误。 我百思不得其解。。 最后我只有请教了一些朋友,一些有经验的朋友很快就知道问题出在哪里了。 是单片机的RAM 不够了。 因为我的这个程序比较大,涉及全局变量用到的比较多,超出范围了。KEIL有三种存储模式SMALL,COMPACT,LARGE. 默认存储模式是SMALL , 默认就把所有的变量都放
[单片机]
除了处理器和内存 了解手机你还需要看这些
新年到来之际,更换一部新机犒劳自己或者赠送亲人都是极佳的选择。但是,如何才能选购到一部称心如意的手机,始终是一个大大的问题。平日里我们去商场,逛论坛,看贴吧,总会见到各路玩家关于处理器以及内存大小等方面的热烈讨论。然而,一部好手机,显然不止于处理器与内存。那么,还有那些方面值得我们了解呢? 屏幕:依据个人喜好选择 屏幕,作为手机的颜面,自然是重中之重。一块好的屏幕显然能够带来视觉与心灵的双重美好体验。对于普通消费者,说起屏幕,第一反应一定是其分辨率如何。诚然,分辨率的高低对视觉效果有着较大的影响。但是,受行业整体发展的影响,目前手机屏幕的分辨率大多维持在1080P的水平,2K屏幕多用于旗舰产品。因此,只要不超出这一范围的
[手机便携]
SDHC简介(High Capacity SD Memory
SDHC是“High Capacity SD Memory Card”的缩写,即“高容量SD存储卡”。2006年5月SD协会发布了最新版的SD 2.0的系统规范,在其中规定SDHC是符合新的规范、且容量大于2GB小于等于32GB的SD卡。 SDHC最大的特点就是高容量(2GB-32GB)。另外,SD协会规定SDHC必须采用FAT32 文件系统,这是因为之前在SD卡中使用的FAT16文件系统所支持的最大容量为2GB,并不能满足SDHC的要求。 作为SD卡的继任者,SDHC主要特征在于文件格式从以前的FAT12、FAT16提升到了FAT32,而且最高支持32GB。同时传输速度被重新定义为Class2(2MB/sec)、
[模拟电子]
PIC单片机与51系列单片机的区别
PIC单片机的型号繁多,对初学者来说实在不好应付,容易混淆,以下作一简单分类,希望有助于初学者学习: 初档8位单片机:PIC12C5XXX/16C5X系列 PIC16C5X系列是最早在市场上得到发展的系列,因其价格较低,且有较完善的开发手段,因此在国内应用最为广泛;而PIC12C5XX是世界第一个八脚低价位单片机可用于简单的智能控制等一些对单片机体积要求较高的地方,前景十分广阔。 中档8位单片机:PIC12C6XX/PIC16CXXX系列 PIC中档产品是Microchip近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增加了中断功能,指令周期可达到200ns,带A/D,内部E2PROM数据存储器,双时钟
[单片机]