单片机C语言程序结构容易出问题的有一下几点

发布者:masphia最新更新时间:2015-05-15 来源: 51hei关键字:单片机  C语言  程序结构 手机看文章 扫描二维码
随时随地手机看文章
一,定义寄存器

定义全局变量unsigend num

在子程序里面改变num值,同时在中断里面也改变num值,最后得到意向不到的值,容易出错

若要这样改变  则定义变量前面加volatile  unsigend num

 

二,中断调用

主程序调用子程序,同时中断函数里面也调用该子程序,这样容易出错

建议:中断里面不要调用子程序,

若要调用子程序则,则该子程序为唯一被中断调用。

 

三,程序开头没加延时

开始的时候没加延时,很危险,上电电源电压波动较大,若一上电单片机就执行重要的命令的话,就容易出问题

特别是对内部eeprom的读写,读取数据出错,导致意向不到的后果。读写数据都需要比较稳定的电压。

 

亲,上电延时个10毫秒,等到电压稳定后,再执行命令,不会影响正常工作,又有保障不是更好

 

四,竞争与冒险

检测需加多次判断,以防干扰。

多次判断需要浪费一点时间,这个时间是在允许的范围内。

关键字:单片机  C语言  程序结构 引用地址:单片机C语言程序结构容易出问题的有一下几点

上一篇:回溯法解题序
下一篇:第14章 有条件跳转(X86汇编教程)

推荐阅读最新更新时间:2024-03-16 14:02

80C51单片机模仿实例100—1 LED闪烁
为了保存住假期里学习过的单片机,尽量做到一个星期模仿一个实例,也是进一步学习Proteus。 今天编写的是LED间隔闪光,时间为1S,仿真软件Proteus。 /* Main.c file generated by New Project wizard * * Created: 周六 11月 25 2017 * Processor: 80C52 * Compiler: Keil for 8051 * Author: Chenchong */ #include #include #define uchar unsigned char #define uint unsigned int sbit LED
[单片机]
80C51<font color='red'>单片机</font>模仿实例100—1 LED闪烁
51单片机最小系统板制作过程
本文将介绍如何自制一个51单片机最小系统及一些附加模块。最终制成的系统将具有烧录程序,运行程序等功能。 先放两张张最终成品如下 (正面) (反面--锡接走线法) 提醒读者,下载口的布局有点不合理,请调至第五部的测试下载模块处查看!!!!! 好了,接下来正式进入制作环节: 第一步:仿真 在win7下采用Proteus 7 Professional绘制仿真原理图,具体绘制操作参考:用proteus绘画51单片机最小系统 为了测试所需,再绘制测试模块,如下: 电阻左端分别接单片机的21、22脚,即P2.0、P2.1端口 绘制完成后,为了仿真,再采用Keil uVision4编写测试代码并生成hex文件。具体操作参
[单片机]
51<font color='red'>单片机</font>最小系统板制作过程
单片机练习 - 使用1602LCD显示DS18B20的温度值
关于DS18B20电子温度器件可查看单片机练习 - DS18B20温度转换与显示 . 本文主要讲述如何使用LCD. 具体过程解释可查看代码注释. 程序代码: 1602LCD 1 //1602液晶显示程序, TX-1B实验板上的1602LCD的R/W读写端接地, 即始终只写, 不读数据 2 //使用1602LCD显示DS18B20转换的温度值 3 #include reg52.H 4 #include intrins.H 5 #include math.H 6 7 #define uchar unsigned char 8 #define uint unsigned int 9 sbit dula = P2^6;
[单片机]
<font color='red'>单片机</font>练习 - 使用1602LCD显示DS18B20的温度值
关Atmega16单片机进入“编程模式失败”问题的解决办法之一
最近在搞ATmega16单片机,自己做了一个PCB板子,一开始还能下程序,可是下了几次后,就突然间下不进去了,每次都提示“进入编程模式失败”,如下图 又有如下的提示,大致是说下载速率过快,下载频率应该小于单片机晶振的四分之一 网上查了好多资料,但是一直不知道怎么弄,怀疑自己的单片机熔丝位被改了,或者被锁了,或者自己画的电路板有问题,为此换了好几块单片机都是这样的,搞得自己焦头烂额。搞了一个多星期,被自己无意间操作了如下步骤,就是如下图 再找到如下区域 就是这个ISP一项。我用的是STK500 下载器, USBISP下载方式下载的。一开始这个图中的“ISP”右边的下拉框是没有数据的,我点开它,给它设定为57.6kHz
[单片机]
关Atmega16<font color='red'>单片机</font>进入“编程模式失败”问题的解决办法之一
AVR单片机键盘程序设计
#i nclude《90s8515.h》 #define uchar unsigned char #asm equ __LCD_port=0x18 ;PORTB #endasm #i nclude #i nclude /************按键功能说明:0--9为数字键 ********/ #define cEnter 16 //确认键 #define cFuntion 15       //功能菜单键 #define cDown 14        //上,下选择键 #define cUp 13 #define cRn_Stop 12 //运行/停止切切实实换键 #define cDel 11 //删除 uchar lcd_
[单片机]
AVR<font color='red'>单片机</font>键盘程序设计
51单片机常用SFR(特殊功能寄存器)的功能及作用介绍
1、ACC:累加亿达器,常常用A表示。这亿达是个什么东西,可不能亿达从名字上理解,它是一亿达做加法的东西,为什么亿达加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后我们将学到指令,能    1、ACC:累加器,常常用A表示。这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后我们将学到指令,能发现,所有的运算类指令都离不开它。 2、B:一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 单片机 3
[单片机]
基于8051的变速调温系统
  在某些生产过程中,温度需要根据工艺要求快速或慢速升降或保持恒定,如果采用人工控制,不但费时费力,而且控制精度与操作人的经验、身体情况、精神状况等有关,易出现较大误差。所以需要设计高性能的温控系统。   以MCS-51系列单片机8051为核心元件,以热电偶作为测温元件,设计全自动变速温控系统,加热炉的加热时间可以根据工艺温度曲线自动调节,从而实现温度的智能控制。 1 工作原理   各个时间段的温度预定值存储在存储器中,系统通过程序每隔20 s查询一次当前预定值是否在恒温时间内,如果不在恒温时间内,则取出下一组预定值,否则保持当前设定值,并累计恒温时间。   热电偶测量的温度值转换为电势后,由模数转换电路ADC0809转换为数字量,
[单片机]
基于8051的变速调温系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved