简介:有时程序才4K多一点,或者8K多一点,32K多一点,64K多一点,总会想方设法去优化压缩代码,以便放到更低成本的芯片中去,可是这时问题可能就出现了!
有时程序才4K多一点,或者8K多一点,32K多一点,64K多一点,总会想方设法去优化压缩代码,以便放到更低成本的芯片中去,可是这时问题可能就出现了!
KEILC51九级优化可以将程序中相同的代码段归为一段,从而大幅度缩减程序代码。可是这一级优化却是没有保障的,优化后,经常会产生各种错误,特别是常量代码段被搞到乱七八糟,一些隐形的bug也从此悄悄伏下,如中断错误,待到你发现有问题还模不清头脑!假如你是在准备生产时才将C51编译提高到9级优化,可能就要完蛋了,因为平时调试的结果可能和生产产品的结果大不相同!
我已经上了2次这种当了,虽然我今后可能还是会用9级优化,但是劝告各位,一定要慎用,用了之后一定要再做最全面的测试,包括所有中断情况,特别要戒除生产烧片前才开始优化。
关键字:KEIL C51
引用地址:
劝君慎用KEILC51九级优化
推荐阅读最新更新时间:2024-11-02 22:39
Keil工程文件的建立、设置与目标文件的获得
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工 汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于 MCS-51 单片机的汇编 软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级 语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片 机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(u
[单片机]
51单片机KEIL如何建立多个C文件及注意事项
1如何建立多个C文件 首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例)。第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h。因为都是同编码的所以不会出现乱 码,然后在工程中将其打开。第二种方法是直接在工程中新建一个文档,然后保存的时候将名字保存为delay1s.h即可。如果是需要添加很多文件的话建议使用第一种方法,这是个人建议。其 次,我们需要编写delay1s.h这个文件的内容,其内容如下: #ifndef _DELAY1S_H_ #define _DELAY1S_H_ void delay1s();//延时函数 #endif 这个是头文件的定义,作用是声明了de
[单片机]
C51+CH375读U盘实例
找到了一个现成的例子,对于读写U盘,文件系统是个大麻烦。现在一直还没有弄明白,先收藏一下这个程序先,等到后面慢慢研究。 作者这个编程规范不错,注释很丰富,值得学习。 #include #include CH375INC.H #include /* 以下定义适用于MCS-51单片机 */ #define UINT8 unsigned char #define UINT16 unsigned short #define UINT32 unsigned long #define UINT8X unsigned char xdata #define UINT8VX unsigned char volatile xd
[单片机]
C51 DS1302芯片+lcd12864 显示时间
1.原理图 1302芯片部分 lcd12864部分 2.代码部分 config.h #ifndef __CONFIG_H #define __CONFIG_H #include reg51.h #include lcd12864.h #include intrins.h #define uchar unsigned char #define uint unsigned int #endif lcd12864.c #include lcd12864.h void lcdinit(void) //初始化LCD { write(0,0x30); //功能设定 write(0,0x0c); //显示开
[单片机]
C51#学习笔记01#| Keil软件的使用入门教程
Keil软件的使用具体教程: 1、新建项目【project】-【New】-【uvision project】选择保存文件目录后,在弹出来的菜单栏中选择芯片型号【Atmel】-【STC89C51/STC89C52】,注意这里还会弹出来一个方框选择【否】。注意:新建项目有的Keil版本是在【File】-【New】-【New Project】 2、新建.C文件【File】- 【New】,此时会新建一个文本文件【Text】; 接着将文本文件保存在项目文件中,并更改它的后缀名为【main.c 】,最后在项目中导入main.c文件: 选择工作台左边的项目【Target】- 鼠标右键【Source Group1】 - 【Add File
[单片机]
课程设计:矩阵键盘(c51,使用扫描法实现)
//可以比较一下和以前发表的一篇用反转法实现的不同(感觉一下那个更简单) //这种方法是用只用P3口的前高四位来比较,看改变了么(由于比较仓促,没有proteus仿真,不过这是个比较经典的方法,网上有很多这个代码,源自郭天祥的视频和书籍) #include reg52.h #define uchar unsigned char #define uint unsigned int sbit wela=P2^7; sbit dula=P2^6; uchar num,num1; unsigned char code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0
[单片机]
MSP432(Keil5)——4.系统时钟频率修改及查看
本实验将给出系统时钟频率的查看方法,以及修改的方法。真正的想要了解这款单片机的时钟树还得自己去啃手册。 如何修改系统时钟频率 在system_msp4329401r.c文件中,在64~71行处,定义了一个宏,修改这个宏即可。 查看系统时钟频率 sys_fre.c #include sys_fre.h /*在此定义了一些时钟源频率变量,在main函数中声明并调用该函数查看频率*/ /*可通过调试查看*/ extern uint32_t aclk, mclk, smclk, hsmclk, bclk; //得到系统各时钟频率 void Get_Sys_Fre(void) { aclk = CS_getACLK(
[单片机]
LCD显示的c51单片机频率计
一 课题目标 本课题是用51系列单片机来实现频率计,并利用LCD1602液晶显示器来显示所测频率值。 二 课题分析 LCD频率计是利用十进制数字显示被测信号频率的数字测量仪器。根据定义,频率就是在1s内信号变化的周期数。在一个单片机系统中,对频率的测量就是要对外部信号的计数,每到1s,将计数所得的数值送到显示器上。在这里,我们重要是学习和掌握如何使用LCD1602液晶显示器来显示所测频率。这里要求实现对0~200kHz的信号频率进行准确测量,测量误差不超过 1Hz。频率计的功能是测出1s、对输入的脉冲计数和数字显示的硬件电路及相应的程序。实验原理图如下: 三 实验元件及器材: 一个AT89S52、一个发光二极管、一个1
[单片机]