1.定义的变量不要太多。低128位为用户定义变量的存放区域(默认时),也可以把变量放在高128位,但容易出错,尽量少放,最好不放。通过*.M51可以查看内存变量的存放,最好不要超过110个字节,否则程序无法运行或出错。
2.如一个变量多处使用可定义为全局变量。例如循环变量i、j,尽量减少参数传递。
3.静态变量最好放在程序存储区,用code定义。
4.变量应定义为无符号数,像标志位等仅占一位的变量应定义为bit。
5.子程序在main()主程序之后的应事先声明,放在前面的不用声明。
6.变量、子程序定义但没使用,系统给出警告。
7.虽然局部变量和全局变量不同名,但运行时可能被全局变量改变。
8.程序在编译后,有可能产生非常大的文件。比如原来5k,编译后变成10k,这是C汇编时程序空间分配太随意造成的。可首先屏蔽一部分程序编译,然后再去屏蔽再编译,可恢复,或一部分一部分复制到另一个文件中编译。
9.如产生脉冲信号用到定时器,要去掉脉冲信号时,应先关定时器,再按要求把电平置为高电平或低电平。
10.可使用软件实现“看门狗”功能。比如:一个程序运行一个循环需要50ms,则定时器可定位100ms,当超过100ms时,程序将复位,在程序循环最下面都重装定时器或重置定时器参数。
11.为了提高所求值的精度,可多次测量,然后排序,去掉最大值和最小值,求平均值,或直接求平均值。
12.可使用一个定时器进行多个定时。一般来说,两个定时器对大一点的程序就不够用了,假如几个定时时间分别为10ms、200us、50ms,则定时值可定位200us,另设两个变量即可。在需要多个定时时,找到他们的最小公约数定时即可。
13.我们往单片机中写程序时,写的是*.hex,不要被它的大小所迷惑,对于8k的单片机,小于20k的程序都可写进去。
关键字:51单片机 编程技巧 变量
引用地址:
51单片机编程技巧整理
推荐阅读最新更新时间:2024-03-16 13:17
8051单片机实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动
1 矩阵键盘 矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 最常见的键盘布局如图所示。一般由16个按键组成,在单片机中正好可以用一个P1实现16个按键功能,这也是在单片机系统中最常用的形式。 4*4矩阵键盘的电路如图所示: 工作原理: 当无按键闭合时,P10~P13与P14~P17之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。 判断有无按键按下的方法是: ① 设置列线P10~P13为输入状态,从行线P14~P17输出低电平
[单片机]
C51单片机定时器/计数器中断功能详细分析(二)
一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE) EX0:外部中断0允许位; EX1:外部中断1允许位; EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0 2、开对应的外部中断,即EX0=1或EX1=1; 3、开总中断,即EA=1; 4、等待外部设
[单片机]
51单片机控制模拟交通信号灯
采用单片机的I/O口PO口通过上拉电阻和交通灯相连接,P3.0、P3.1口接到数码管控制位上,控制数码管的显示,程序放在STC89C52RC单片机的ROM中,在十字路口的四组红、黄、绿交通灯中,由单片机的 P1.0-P1.2 、P1.5-P1.7、P2.0-P2.2、P2.5-P2.7控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极相连,因此I/0口输出低电平时,与之相连的指示灯会亮,并通过数码管显示时间倒计时。I/0口输出高电平时,相应指示灯会灭。当交通出现障碍需要恢复到初始状态时,按下复位键即可,此键由单片机的9脚RST键控制。 制作出来的实物图如下: Altium Designer画的原理图和PCB图如下:(
[单片机]
【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 相关介绍 摘自《ATK-MPU6050六轴传感器模块用户手册_V1.0》 MPU6050 自带了数字运动处理器,即 DMP,并且,InvenSense 提供了一个 MPU6050 的嵌入式运动驱动库,结合 MPU6050 的 DMP,可以将我们的原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到 yaw、roll 和 pitch。 使用内置的 DMP,大大简化了四轴
[单片机]
基于AT89S51单片机的PWM专用信号发生器设计
1 引言
涡流无损检测作为无损检测应用最广泛的方法之一,具有传感器结构简单、灵敏度高、测量范围大、不受油污等介质影响、抗干扰能力强等优点,已被广泛应用于冶金、机械、化工、航空等多个工业部门。然而由于受趋肤效应的影响,常被限制在对导体表面及亚表面层的检测上,这使其检测应用范围受到了很大的限制。但是,若检测线圈在脉冲激励作用下,因脉冲信号中含有丰富、连续的频率成分,所以检测线圈中所得到的信息不仅包含了被检测试件的表面、亚表面信息,还包含其深度信息,能够对材质以及缺陷进行定量评价。而脉冲信号的波形、频率、幅值、占空比等参数的改变对检测结果有着不同的影响。因此为了获得不同的脉冲激励下的检测结果。特制作了这一专用高精度大
[单片机]
51单片机与VB串行通信的实现
1.引言: 随着计算机系统的应用和微机网络的发展,各种控制设备之间的通信功能越来越显得重要。在设计的减振控制系统中,控制器(下位机)采用两片AT89C52单片机,分别用于对左右减振器实施控制,同时将测量的温度、电流、速度等信号按一定采样时间保存在E2PROM ATC256中。为了能测试控制器的工作情况,包括初始安装时的状况测试和读取历史记录并做测试诊断以及能根据参数变化情况进行故障诊断,为此,同时开发了通信系统,上位机采用便携式PC机,上、下位机之间通过MAX485芯片实现串行数据通信。
2.通信系统硬件电路设计 通信系统硬件电路设计的突出特点是,控制器的外围一改传统的并行扩展,而采用新型串行芯片进行串行总线扩展。与传统
[单片机]
基于51单片机的定时顺序控制器
求代码,作用是单片机控制继电器用于自动操作键盘。 要求: P01 导通三分钟,然后断开; P02 导通 10 秒后断开; P03 导通 0.5 秒后断开; P04 导通 0.2 秒后断开; P05 导通 0.5 秒后断开; P06 导通 0.2 秒后断开。 断开 P06 之后,循环所有。 单片机 89C52RC。 如下程序。 //-------------------------------------------------- #include #define uchar unsigned char #define uint unsigned int sbit P0_1 = P0^1; sbit P0_2 = P0^2; s
[单片机]