怎样让单片机同时执行多项任务
ok了,因为单片机执行速度很快的,所以在大多数情况下可以看作是同时执行多个任务,实际上是单线程的
所谓的同时执行是不正确的说法,每个时间段只能执行一个程序 , 不过由于单片机运行速度很快,可以看为同时执行 , Keil就有多工的执行方式RTOS (Real Time Operating System)只要用这种方式去编译就会有这种效果,不过这个跟一般的程序执行不太一样。具体可看下RTOS的书
这个也很容易做到啊,设置状态Mode如下:
0、按键没有按下,P1 P2的LED都熄灭。
1、P3.0按下时,P2的led跑马。
2、P3.1按下时,P1的led跑马闪烁,松开按键停止跑马,按下执行。
3、两按键同时按下,P1P2口的led都在跑马。
没有想象中那么难,现在定时器的中断服务函数里面写好跑马灯的状态
switch( Mode )
{
case 0:P1 = 0xff;P2 = 0xff;break;
case 1: P2 = ~(1<<i++);
if(i==8) i=0;
P1 = 0xff;
break;
case 2: P1 = ~(1<<i++);
if(i==8) i=0;
P2 = 0xff;
break;
case 3: P1 = ~(1<<i++);
P2 = ~(1<<i++);
if(i==8) i=0;
default:break;
}
同时,在while(1)里面扫描按键,延时消抖我就不写了,就是这么个意思
if( P3 & 0xff == 0xff) Mode = 0;
if( P3 & 0xff == 0xfe) Mode = 1;
if( P3 & 0xff == 0xfd) Mode = 2;
if( P3 & 0xff == 0xfc) Mode = 3;
完全意义上的同时执行多项功能是不可能的,因为程序是顺序执行的,每个功能占用一定的时间片:如果多项功能之间不争夺CPU资源,也就是说不占用累加器A及内存,可以基本上(不是绝对)实现同时执行多项相应功能;如果多项功能之间不争夺CPU资源,就实现不了了。
广义上的同时执行,也是cpu的时间片轮转执行的,
单片机运行能并行吗???
不行,单片机是根据PC指针,指向哪个指令就执行它,所以不可能同时指向多个指令,所以不能并行执行
PIC单片机用C语言编程 想 同时执行并循环两个程序!
现在手头没有东西,不知道这样子行不行,这里是C做的;假设是PORTB口做输出,下面的一段可能会帮助:初始化中PORT_B=0B1000 0000;PORTB_BUFF=0B0100 0000;void your_PROGRAM(void){ PORTB_BUFF=PORTB_BUFF\/2;if(PORTB_BUFF==0) PORTB_BUFF=0B0100 0000;PORTB=PORT_B&PORTB_BUFF;} ...
如何在一片51单片机中实现两个不同模块的主程序
另外的方法,就是编成两个进程的程序,然后采用进程调度的办法,使CPU可以分时轮流交替来执行这两个进程。只要交替的频度足够,宏观上就可以看做两个任务在“同时”执行。具体的办法有很多种,“操作系统”教材中有专门的介绍。在单片机上,常用的一种办法是利用中断机制。例如,这两个进程中,某一个...
单片机如何调用另一块单片机的程序?程序有规范吗?该如何编写?
在编写程序时,需要根据选择的通信协议来配置串口或其他通信模块,并编写发送和接收数据的函数。发送端程序需要将需要执行的命令或数据封装成数据帧并发送到接收端,接收端程序需要解析接收到的数据并执行相应的操作。总之,调用另一块单片机的程序需要建立可靠的通信连接,并遵循一定的通信协议规范来编写发送和...
关于单片机两个定时器同时工作时的设置情况?
肯定优先级高的定时器0先执行,定时器1在B点执行 如果定时器0的中断程序执行时,肯定会影响定时器1的定时,但不会很严重,并不是每50ms两个中断就重合一次,定时器1的第5次中断被耽误了,后面第10次第15次...就不会再有这个问题了,也可能偶尔会发生,也可能永远不发生了,就好象你跟别人跑,起步晚一...
...同时再用该中断唤醒单片机,请问程序该如何写?
EA = 1;如果你允许了外部断0中断,那么,即使单片机进入空闲模式,一旺有中断,单片机就可以被唤醒继续执行.如果你的单片机进入了掉电模式,则单片机不会响应外部中断的,或者说单片机就等于是彻底关机了.,所以,即使你有外部中断,单片机也醒不了.因为空闲模式,其实是让单片机的CPU睡着了,而掉电模式,则是让...
c51单片机程序运行顺序的问题?
周围是强电,电磁干扰很厉害,不知道采用STC15会不会出问题?任何单片机在强电磁干扰下都可能会出问题,所以从设计上要把隔离和抗辐射做足。A、当程序进入外部中断1时断开加热,这个时候只有等待到启动加热信号才跳出外部中断,那么其他程序都不执行了吗?比如这个时候收到启动语句6(异步电机正转信号)。...
如何将51单片机的音乐程序与其他程序融合,同时运行?初学者求助~希望可 ...
音乐程序一般要用到定时器,所以要融合其他程序,需要是具体情况而定,这里凭空而谈是说不清楚的。
单片机如何进行工作
当单片机上电复位后,程序开始执行。首先,它可能会设置一个GPIO端口为输出模式。然后,进入一个无限循环,在这个循环中,它会交替地将GPIO端口的电平设置为高和低,从而使LED灯闪烁。同时,它还会响应其他可能的中断事件,如按钮按下或定时器溢出等。总的来说,单片机的工作流程是一个高度自动化的过程,...
如何让一个单片机自己启动?
要让一个单片机(如 Arduino、PIC、AVR 等)自己启动并运行程序,需要按照以下步骤进行配置和设置:1. 编写启动代码 - 使用适当的编程语言(通常是 C 或类似的语言)编写单片机的启动代码。- 代码应包括初始化所需硬件(如 GPIO、定时器、中断等)和执行的主任务。2. 上传代码到单片机 - 将编写的...
承榕泰威: 这个也很容易做到啊,设置状态Mode如下: 0、按键没有按下,P1 P2的LED都熄灭. 1、P3.0按下时,P2的led跑马. 2、P3.1按下时,P1的led跑马闪烁,松开按键停止跑马,按下执行. 3、两按键同时按下,P1P2口的led都在跑马.没有...
天水市13985731365: 单片机 同时处理多件事 - ?
承榕泰威: 单片机是不能同时处理多件事情.如果要想同步处理多件事情,只能是先中断正在做的事情,转移到其它需要做的事情上,等事情处理完毕,或者还是处理到一定程度,再转回之前正在做的事情. 一、关于单片机:单片机(Microcontrollers)...
天水市13985731365: 怎样让单片机同时执行两个任务 - ?
承榕泰威: 从本质上说,单片机是不可能同时执行两个任务.因为某一时刻只能执行一条语句. 但单片机的执行速度很快,一般是微秒量级.所以分时调度你的任务,让每个任务执行一小段时间,再执行另一个任务一小段时间.从我们的感觉上(或者说大的时间范围看)就是同时执行两个任务了,对多任务也是一样.
天水市13985731365: 求教单片机两个程序如何同时进行? - ?
承榕泰威: 如果两个任务占用CPU时间都不多,完全可以同时运行,看哪个程序重要,把它放在中断程序中,就不容易被耽误 例如测压力,可以用定时器产生中断,在中断程序中测压力
天水市13985731365: 单片机如何实现多个函数功能同时执行? - ?
承榕泰威: 多个函数功能同时执行是不可能的.由于单片机本身的条件限制.对于你的问题可以采用如下方法解决.1. 加锁存器,也就是说你把IO口状态改变后,锁存器会自动锁存输出状态,直到你改变为止;2. 对于数码管来说,可以用扫描来实现,即每隔一段时间点亮一次,但人的肉眼又分辨不出来.这就要求时间要短.人眼的视觉暂留时间是0.1-0.4S,因此如果每20ms点亮一次人眼是完全分辨不出来的.3. 使用并行语句,这就不能使用单片机了,可以使用CPLD,我见过用单片机来控制CPLD的,你也可以这样.
天水市13985731365: 单片机中如何实现多线程,多任务? - ?
承榕泰威: 如果不用OS, 可以将不同任务放在定时器中断里, 然后将任务分步骤执行(这大概就叫状态机吧). 比如任务1放在主循环里, 任务2放在定时器1中断里, 任务3放在定时器2中断里. 或者自己利用...
天水市13985731365: 请问单片机怎么实现分支程序同时执行?本人刚入门,请教各位附图中冷却和塑化两条分支怎么同时执行? - ?
承榕泰威: 感觉这个谈不上同时执行啊.我理解所谓同时比如你用抄一条指令把P1.4和P1.5清零,在AVR GCC里面我们这么写:PORTB &= ~(_BV(4)|_BV(5)); PORTB口4、5位清零,其余不变;这个算是同时.再说同时:单片机的运行速度非常快,指令...
天水市13985731365: 单片机中怎么把两个程序同时进行? - ?
承榕泰威: 呃,你这是思考方式不对.比如P1口的P1.0和P1.7同时输出的话,你给立即数0x7EH,P1口不就是旁边两个灯同时亮了么?按顺序分别给P1口数据: 0xE7,0xDB,0xBD,0x7E,0xFF, /*样式1 向外扩*/0xFF,0x7E,0xBD,0xDB,0xE7, /*样式2 向里收*/
天水市13985731365: 单片机怎么同时执行两个程序我想做一个时钟同时带有流水灯要求流水灯不影响时钟的精确度谢谢!?
承榕泰威: 在一个定时器的周期中断里面处理时钟.程序的其它部分做别的(可以在主进程里面做,也可以在其他中断里面做).防止程序运行中时序交叉干扰,编程时需要注意,凡有干扰可能的程序段中,可以关中断.顺便对上面“寂寞的猪猪”的主意...
天水市13985731365: 单片机遇到需要同时处理的多个任务怎么办? - ?
承榕泰威: 只能一个任务一个任务来,呵呵 做个10ms定时器,做一个p0口变量,做个p1口变量 定时器中断一次,两个变量都+1在判断 p0变量是不是大于等于100(100*10ms =1s),如果大于等与100,则改变P0状态,并且把变量请0.要是没到100则什么也不做.同理做P1口的.