历史上的今天
今天是:2025年05月06日(星期二)
2021年05月06日 | 51单片机开发原则知识介绍
2021-05-06 来源:eefocus
1.尽可能让变量使用占用代码空间最小的变量类型。例如无符号字符型和位操作(8051作为一款8位处理器提供了位操作支持,而且大多数操作指令都是8位或者位操作的通常用小的数据类型去编写代码其效率更高)
2.尽可能使用无符号类型数据(8051单片机不直接支持有符号的数据类型,有符号的操作需要额外的指令来支持,但是无符号的数据类型是直接就能被8051支持的)
3.尽可能选择小的存储模式即small(绝大多数的应用采用small存储模式都能满足,也可以选择large存储模式,将一些数组和结构体存入xdata或者pdata存储空间的话选择极大存储模式,注意的是keil c51实时库使用的基本指针可以工作在任何存储模式)
4.当应用其他存储模式的时候尽可能将变量存储在data区域内(将变量存储在data空间里,这部分空间单片机可以直接访问,据有最高的执行效率,通常这个区域存储的是最有效率的代码)本地图片,请重新上传
5.要知道如何在你的设备上使用PDATA存储模式(pdata提供的256字节的空间,使用MOVX @Ri指令访问8位地址,pdata存储空间的使用不同于8051单片机内部的设备,需要设置页寄存器。Xdata 存储类型是通用的能达到的最大的存储空间64kb)
6.尽可能使用内存类型的指针(默认的,keil c51编译器使用通用指针可以访问任何类型的内存空间,内存型的指针只能访问固定的存储空间,但是这种方式能够产生更快更小的程序代码)
7.减少使用重入函数(8051系列缺乏对堆栈变量的支持,重入函数的实现通过keil c51 编译器使用一个编译时间的堆栈对内存范围内的数据内容的覆盖实现的,重入函数在8051单片机上模拟出堆栈的结构。由于在嵌入式应用很少会用到重入函数代码,但是你在设计的过程中应尽可能的少用这种重入属性)
8.使用LX51 Linker/Locate 和Linker code packing来减少程序的体积。(LX51 Linker/Locate分析并且优化你的整个程序。代码将会在内存中重新排列,最大限度的使用2字节的AJMP和ACALL指令来代替3字节的LJMP和LCALL指令。Linker code packing利用通用代码段生成子程序)
9.尽量保持短的中断函数(结构好的的中断函数仅仅是执行数据的获取或者是计时,数据的处理是在主函数或者实时系统的任务函数中完成,这样可以有效的降低涉及保存/存储的中断函数的调用)
10.检查对于时钟周期的需求(代码访问数据需要一定的周期,尤其是在实时系统中使用多个线程或者中断服务程序中需要在主函数中)
史海拾趣
|
1、前端设备的防雷 前端设备有室外和室内安装两种情况,安装在室内的设备一般不会遭受直击雷击,但需考虑防止雷电过电压对设备的侵害,而室外的设备则同时需考虑防止直击雷击。前端设备如摄像头应置于接闪器(避雷针或其它接闪导体)有效保护范围 ...… 查看全部问答> |
|
听音乐是一件非常惬意的事,但是对于听力不佳的人来说,这件在常人眼中轻而易举的事,却是他们梦寐以求的。因此,现在就有人研究一些新的办法来让人感受声音,例如通过看或者触摸。这个波纹扬声器就是通过音乐的震动来刺激聋人的脑波而使之活跃 ...… 查看全部问答> |
|
Supports preconfigs which allow developers to store different system configurations (e.g. toolchain selection, kernel selection, package selection etc).Supports profiles this allows just the userspace package s ...… 查看全部问答> |
|
新手提问,请各位高手畅所欲言-EVC3.0+ppc2002程序开发问题! 先问一个超级简单的问题,EVC下支持的语言到底是C++还是VC++,在WINCE下开发这种应用程序都涉及到哪些问题,是否涉及到平台的转换及PC和PDA之间的接口问题等,我是一个新手,没有用VC做过大的系统,如果要做这个方向,等需要学习哪些东西,请各位高 ...… 查看全部问答> |
|
可能与国内这些企业的商业模式有问题!ST一味说我什么时候出什么什么样的芯片,尽是一些虚无漂渺的东西。技术再好有什么用。都是你们自己吹的。我觉得st在中国做推广应该做如下工作。(1)所有资料中文化。(2)降低开发门槛。如推一些简易廉 ...… 查看全部问答> |
|
我使用的单片机是msp4301121A。开发工具采用的是简单的仿真器(目标板自己做的)。用 debug调试时,向单片机写入程序时,提示出错如下: “ FATAL ERROR Failed to write memory at 0xF012 Session aboard ...… 查看全部问答> |
|
如题,最近在学习xilinx的fpga,但是ise这个软件实在是让人纠结,没有了testwave form。该怎样使用testbench进行仿真啊,或者还有个modesilm,纠结了一下午了,求高手啊… 查看全部问答> |




