C51单片机指针实例

发布时间:2023-01-03  

#pragma src
#include
f(){}
f1(){}
f2(){}
main()
{
{
int x;
int *px;
//下面这些表示虽然很烦,但是生成的代码却及其简洁:
//将 xdata 型指针 0x4000 赋给 px
px=(int xdata *)0x4000;
//表示从 xdata 0x4000处取一个 char 给x
x=*((char xdata *)0x4000);
// 表示从 code 0x4000处取一个 word 作为 xdata 型的指针 给
px
px=*((int xdata * xdata *)0x4000);
//表示从 code 0x4000处取一个 word 作为 xdata 型的指针,
//再把这个指针指向的char数据赋给x
x=**((char xdata * code *)0x4000);
//表示把函数f()入口地址当作xdata型指针,再把指向的xdata
//中的int型数据作为code型指针,把指向的code字节
//赋给x(晕,这样有意义吗?)
x=**(int code * xdata *)f;
//把f()入口地址处的ROM中两个code型字节,
//赋给堆栈指针SP指向的字节(想干什么?编操作系统?)
*(unsigned int idata *)SP=*(unsigned int code *)&f;
//表示把f()入口地址处的ROM中两个code型字节,
//作为一个xdata指针寻址,
//把指向的数据作为pdata指针寻址,
//再把把指向的数据作为idata指针寻址,
//把该地址处的一个字节赋给x (我靠,累死了)
x= ****(unsigned int data * idata * pdata * xdata * code
*)&f;
//总之,一个括号里面外面的"*"一样多就表示指向的是数据。
}
{
//数组函数
code void (*ArrFn[])(void) =
{ &f1,
&f2,
};
//可以像引用数组一样调用函数啦:
(*ArrFn[0])();
(*ArrFn[1])();
}
{
//这样将使函数调用0000H处:
void (*reset) (void);
reset=0x0;
(*reset)();
reset();
//或者直接这样,仅仅生成一条指令LCALL 1234H
((void (code *)(void))0x1234)();
}
{
//这样可以调用RETI指令:
#define INT_NUM 30 //空闲中断号
((void (code *)(void))(INT_NUM*8 3))();
//当然需要在外面声明 int_rpt()interrupt INT_NUM {}
}
{
//这样调用RETI指令太变态:
code unsigned char ret_i=0x32;
((void (code *)(void))(&ret_i))();
}
}
int_rpt()interrupt INT_NUM {}

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    的内部资源来开发的,是为了实现单片机的特定功能来定制开发的,程序开发可以使用的资源,硬件基础都不一样。 无际单片机编程给大家提供了一个完整的基于单片机环境的C语言教程,大家在小破站上搜无际单片机编程,就能......
    编程的课程,从项目实战中去学习。 2. 搭建单片机开发环境 很多的C语言教程都是在电脑平台上直接学习,例如C-Free,VC,VS等。 为了大家贴近单片机开发,建议大家直接在单片机......
    程序开发。 其次,C51单片机的入门学习相对比较简单,可以尽快的上手,同时可以培养大家的兴趣。 3.进一步提升C语言知识,结构体,指针,枚举,队列等,再学习STM32单片机......
    多年的开发经验,建议大家选择C51系列的STC89C52开始入手学习。 2.学习单片机C语言基础 单片机C语言是单片机开发的基础,所以学习单片机之前首先要掌握单片机C语言开发基础。 C语言教程......
    单片机c语言教程第三章--C51数据类型;每写一个程序,总离不开数据的应用,在学习 c51 语言的过程中掌握理解数据类型也是 很关键的。先看表 3-1,表中列出了 KEIL uVision2 单片机......
    需要书籍,建议在网上找一本郭天祥的书《新概念51单片机C语言教程.入门、提高、开发、全攻略》   下面我对学习过程中遇到一些重要的知识点做一下介绍(这点会一直更新下去): 1、上下拉电阻 概念:上拉......
    干货,三分钟教你Keil C51软件的使用方法;KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程......
    就基本可以做一些简单的项目了。 那单片机怎么学? 单片机学习一定要有一个比较正确的方法,首先学习一下单片机C语言基础,C语言是单片机开发的语言工具。 无际单片机编程有提供针对单片机C语言教程,大家可以找无际单片机......
    是需要成本的。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材。 电脑是用来编写和编译程序,并将程序代码下载到单片机......
    的基础一定要打牢固。 但并不建议买C语言教程或者书本,埋头苦干,因为从书本上学不会编程。 我们要精准地学习单片机编程开发需要的C语言知识,否则就是浪费时间。 单片机学习初级阶段,掌握单片机的基础就OK,随着......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>