单片机如何让一段程序一直运行

作者&投稿:韩养 (若有异议请与网页底部的电邮联系)
单片机运行一段时间后,不按原程序执行怎么回事/~

据我多年的经验,出现这种问题,原因一般有三:
1 你的软件为编写上的BUG,比如你想实现功能A,但是,因为你的程序写的有问题,例如:算法有问题,有语法上的漏洞,你思考的不全面等等,在某种条件下可以实现功能A,但是当条件有一点改变,导致程序与你执行的不一致。

2 单片机硬件受到干扰,例如单片机周围有强电,或者单片机用的继电器,但是电路没处理好等等,导致程序跑飞了。

3 内存的溢出,比如你声明了一个数组A[],但是在程序执行的过程中,你的程序不严谨,不慎让调用A[]时超过了它的极限,等等。

就我个人的经验,第1条原因是你出现 这个现象最主要的原因,其次是第3条原因,第2条原因一般不太容易出现,除非是硬件是新手做的。
建议你从第1,2两条着手查找原因。

手机实现程序后台运行的方法:打开软件后不要点击返回键退出,直接点击Home键,该程序将在系统后台运行。

#include <at89x51.h> //包含51单片机相关的头文件
sbit RL1=P0^5; //定义光敏电阻接收端口
sbit SB1=P0^6; //定义蜂鸣器响铃端口
sbit led0 = P1^0; //定义led灯
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
sbit led4 = P1^4;
sbit led5 = P1^5;
sbit led6 = P1^6;
sbit led7 = P1^7;
void Delay( unsigned int DelayTime) //定义蜂鸣器频率响亮子程序
{
while(DelayTime--); // 定义频率定时变量,频率定时循环开时
return;
}

void main() //主程序入口
{
while(1)
{
if(0 == RL1) //判断光敏的现在状态(有光0,无光1)
{
while(1)
{
Delay(20000); //延时子程序开时
SB1 = !SB1; //蜂鸣器响亮
led0 = !led0; //led灯闪烁
led1 = !led1;
led2 = !led2;
led3 = !led3;
led4 = !led4;
led5 = !led5;
led6 = !led6;
led7 = !led7;
}
}
}
}

在if后面加个死循环就行了


一个电影男主化成一个程序陪在女主身边
片 长 113分钟(中国大陆),119分钟(美国)上映时间 2014年4月18日 剧情简介 威尔卡斯特博士(约翰尼·德普饰)是人工智能领域首屈一指的研究者,他致力于开创有史以来最人性化的有感知的机器人,全方位结合了人类情感和智慧。虽然威尔极具争议的实验令他一举成名 ,但同时也让他成为反科技极端分子...

单片机为什么把主程序放在00030h之后
51单项片机前面的地址间隔地被中断子程序占有了,为了保证中断程序能找到正确的地址入口,则要把这些地址空出来,如果不用中断的话,主程序可以从0000H开始 如0003H是外部中断0的入口地址,000BH是定时器0的中断程序入口地址,其它子程序的地址是可以人为设定的,但中断入口地址是固定不变的 ...

单片机如何写PID程序?
PID算法有公式,直接套用就可以了。公式在这个链接说的很明白了。http:\/\/baike.baidu.com\/view\/1759810.htm 1、如果加入D抖动的特别厉害,试试只用PI控制。2、还有PID参数都是一步一步调出来的,我建议你做个上位机,就是个简单的VB串口程序,用来设置PID参数 3、然后在单片机这边弄个串口接收程序...

如何制作一个电视栏目?其流程是什么?
可见,这其中一个环节也是个小课题。又例如,对于栏目或子栏目的制作量和人员、设备的核算,要考虑质量与效率结合,需要与可能结合,科学与规范结合,成本核算与效益概算相结合。 对于多板块结构的栏目或杂志式栏目,栏目设置强调的是结构设置、板块设置、设置实施细则的有机结合;对于独立板块的栏目,通常定位把握,设置的重点...

投影机的工作原理
14. 投影仪的成像原理及特点

单片机 ,一个单片机的程序能改吗.
STC89C51系列100k次(技术资料上是这样说的)).2.单片机编程,一般都用 汇编 和 C语言 外,还可以用机器语言(这个想是没有人用了).(这点不是太懂,见笑,我一般用C语言,用keil编译调试很方便,程序也易读).3.一般单片机都有相应的程序下载工具,这里所说的工具并不复杂,AT89S51系列用SPI下载,STC单片机...

麻将机怎么安装程序
3. 根据麻将机的设计程序,取牌并试机,成功则安装完成。麻将机安装步骤:1. 将机架放置于合适的位置。2. 抬起主机,确保主机电脑箱上缺口的角与机架相应缺口位置对齐。3. 将机架上的电源线头插入主机电脑箱中心孔内,注意不要压迫电源线。4. 对准螺丝孔位,上紧4个M6*16联接螺钉。调整与细节处理...

数码相机的工作原理。
中央控制器按照这些程序语句对相机的各种操作做出反应,例如对环境的光线强度做出判断、调节感光二极管放大器的放大率、用不用闪光灯、采用何种快门速度和光圈等。图像处理器篇:在图像处理器中除了要把每一个像素点的颜色计算出来外,还要把它们按照一定的时钟周期进行排列,组成完整的图像。在某些场合还要对图像进行一定...

电影文件可以用什么软件合并与分割呢?
AVI\/MPEG\/RM Joiner 将琐碎影片按顺序作结合整理,这个软件可以帮助你把零散的影片文件组合成为一个大的影片文件,这个程序支持 AVI, MPEG, MPEG-4,DivX 以及 RM 格式影片,它可以将不同格式的影片组合。你可以任意组合或者排列这些片段。 Easy Video Joiner V5.21 特别版 可以将AVI\/MPEG\/RM\/ASF\/WMV等格式合并...

如何在开机运行程序添加一批处理文件?
(4)让Windows XP只运行某个应用程序 如果Windows XP在启动之后自动进入某个应用程序,而不出现桌面,这自然会从一定程度上提高计算机的安全性。例如,在启动后只想使用Word,其他程序都不要启动,这该如何实现呢?其实,我们只要替换掉Windows XP登录后的外壳程序(Shell)即可:运行注册表编辑器,定位到...

东平县13562499627: 怎么让单片机c程序只执行一次,就停止 -
赖子缓士: 写主程序时,在主程序的下面写一遍,即 void main() { //在这下面写 while(1); } 这样就行了,执行一遍后就停止了.

东平县13562499627: 有关单片机(c语言) 怎么使一段程序(重复)运行一定的时间,时间到了立刻终止? -
赖子缓士: 可以打开单片机中的定时器溢出中断. 比如说可以吧定时器设置为50HZ,那么1秒钟就是定时器溢出中断执行100次. 先在程序初始化时 或者 按键第一次按下时 对time赋值100 ~~~~~~~~~~~~~把这段放在定时器溢出中断服务函数中. if(time!...

东平县13562499627: 您好,单片机用c语言里怎么让程序一直向下执行,比如说流水灯向左、向右、全亮、全亮闪烁,中间向两边亮. -
赖子缓士: 接口=temp; while {延时;temp=_crol_(temp,参数(数值型));接口=temp; }

东平县13562499627: 51单片机怎么样让一下过程一直循环下去“先1,3,5,7亮,后8,6,4,2亮:再1,3,5,7亮,又 8,6,4,2亮;.. -
赖子缓士: 比如高电平亮吧,先输出00000001,1亮,然后左移两位,3亮,如此类推,循环一次5亮,循环两次7亮,左移一位;输出10000000,8亮,右移两位,6亮,循环一次4亮,循环两次2亮,右移一位,回到00000001.思路就是这,代码你自己写吧,我好多年不写程序了,不好意思啊

东平县13562499627: 单片机怎么能延时执行不耽误正常运转 -
赖子缓士: 延时有两种方法,一种是用软件延时,即写延时子程序,这种方法是让单片机执行无用的指令,就是为了延时,延时期间就不能做其他事情了,很浪费单片机的时间.这种方法是在单片机不忙的情况下用,反正闲着也是闲着. 第二种方法就是你要求的,即能延时,又不耽误主程序的运行,用定时器T0或T1定时,设置定时时间后,定时器开始计时,主程序继续执行,不用管定时器,当定时时间到,定时器就会申请中断,单片机就响应中断,处理定时子程序需要完成的工作,完成后返回到主程序继续主程序的执行,这是最合理的方法,充分利用了单片机的资源,互不影响.

东平县13562499627: 请问如何实现51单片机的长时间计时并且程序其他部分照常运行? -
赖子缓士: 程序其他部分照常运行,就要用中断了;计数器的时长,定义一个全局变量,在定时器中断服务程序中计数例如C语言 unsigned char i void Timer(void) interrupt 1 { i++; if(i=T) { // } }

东平县13562499627: C语言 单片机 程序不停循环么 -
赖子缓士: 单片机的指令执行是通过PC指针来确定的,当一段程序执行结束时,如果没有跳转指令,则PC指针会自动加1,向下继续执行,直到PC为0FFFFH,再加1回到开始位置0000H,又从头开始运行;如此不停循环.上面的程序里,没有死循环控制.所以会出现上诉情况.

东平县13562499627: 此单片机代码,怎么实现按下key1后一直执行,而不是松开就不执行了
赖子缓士: 你的问题问的不是很清楚,我猜你想实现的功能应该是这样的:按下KEY1,一直做KEY1里面的代码,按下KEY2,就一直做KEY2的代码是不是,看的出来,你的里面是要点亮数码管的.很简单,改一下就可以了.如下面,可以实现:当按下...

东平县13562499627: 有关单片机(c语言) 怎么使一段程序(重复)运行一定的时间,时间到了立刻终止?
赖子缓士: 循环语句啊 比如 while , if 什么的

东平县13562499627: 51单片机中如何让一段循环子程序运行3秒钟 -
赖子缓士: 如果要精确的话用定时器,你弄明白51的工作周期就行,如果是一般延时粗略估计的话直接用for循环加一个延时函数就行

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网