1. 怎么样让51单片机实现伪多线程工作(软件上实现)简单的论述一下,有程序实例更好.
你也知道,51单片机没办法实现多线程操作,所以你已经指明了条件,实现伪多线程工作(软件上实现),也就是软件模拟多线程。
我想你也没指望这个多线程多优秀,只是实验性质,锻炼锻炼编程技巧。这个还是可以实现的,虽然我也没走过。
没查资料,不知道有没有这方面的介绍和可移植的操作系统,仅凭自己想象与你探讨。
其实早期的WINDOWS操作系统,由于CPU 是单核,本质上就是伪多线程,包括现在的ARM 单片机可以实现的UCOSII。
51单片机实现伪多线程要解决两个问题,一个是速度,一个是内存规模。实现方法不过是利用定时中断把CPU的工作分割成时间片,分配给不同的任务。这有点像数码管的动态扫描,只要速度够快,感觉上各个任务的运行就是流畅的。问题的关键在于现场保护和紧急任务的处理,这两项调度好,编制一个伪多线程程序并不难。
但由于51资源有限,真的只能是试验一下。
2. 51单片机如何实现多线程多任务换距话说,有哪些程序可以在“后台”自己运行 比如定时器,计数
另一种说发是单片机中断里的函数成为前台,而主函数成为后台,这是前后台系统,但多个任务同时运行不能做到,只能是说在单位时间内任务是多任务并行的
3. 单片机中如何实现多线程,多任务
可以将不同任务放在定时器中断里, 然后将任务分步骤执行(这大概就叫状态机吧). 比如任务1放在主循环里, 任务2放在定时器1中断里, 任务3放在定时器2中断里. 或者自己利用定时器实现时间片轮换算法. 关键是分配好任务执行的时间片, 以满足对不同事件的响应. 感觉单片机实时性的要求很高。
4. 单片机 同时处理多件事
单片机是不能同时处理多件事情。如果要想同步处理多件事情,只能是先中断正在做的事情,转移到其它需要做的事情上,等事情处理完毕,或者还是处理到一定程度,再转回之前正在做的事情。
一、关于单片机:
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
二、单片机的应用分类:
单片机(Microcontrollers)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。
1、通用型
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
2、总线型
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
3、控制型
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
5. 51单片机如何实现多线程多任务有哪些程序可以在“后台”自己运行
51单片机可以实现执行时间片形式的多线程任务,具体做法是:1、弄个表两字节一个单位存一下各个任务的执行地址。2、在中断级别较高的T0定时器中断中,把中断压进堆栈的那两个字节保存到表里。3、用表里别的线程的地址重压进堆栈。4、从中断里退出就可以切到另一个线程继续跑了。
我记得这个在早先2000年那时候的大学计算机系单片机原理专业课里讲过,但是那科挂掉的实在太多,现在好像已经把这些独门绝技大多给砍没了,就剩背背汇编指令集。
6. 单片机中如何实现多线程,多任务
如果不用OS, 可以将不同任务放在定时器中断里, 然后将任务分步骤执行(这大概就叫状态机吧). 比如任务1放在主循环里, 任务2放在定时器1中断里, 任务3放在定时器2中断里. 或者自己利用定时器实现时间片轮换算法. 关键是分配好任务执行的时间片, 以满足对不同事件的响应. 感觉单片机实时性的要求很高.
7. 51单片机如何实现多线程多任务换距话说,有哪些程序可以在“后台”自己运行
2、51内部没有捕捉器、AD转换和硬件PWM;
3、中断系统在执行中断函数时是需要占用cpu资源的,就是当前程序暂停跑过去执行中断函数,结束了再回去继续;
4、如果是用来设置功能或模式的寄存器,工作完成后其值是不会改变的,会改变的比如uart的数据缓存器以及定时器的时值,这些随时改变的寄存器也不会影响正常工作;
举例中的错误,51单片机定时器能够定时ds最大周期是65535微秒,即65.535毫秒,不存在定时一秒的情况,除非定时中断内用变量累加判断。