单片机多任务构思(单片机多任务程序架构)

海潮机械 2022-12-14 20:30 编辑:admin 172阅读

1. 单片机多任务程序架构

单片机是是一种集成电路芯片,其专用于执行一个任务并执行一个特定应用,它包含存储器,可编程输入/输出外设以及处理器。单片机主要用于嵌入式应用,大量用于自动控制的电子设备,如手机,照相机,微波炉,洗衣机等。单片机也可用于任何需要决策或系统监控的应用程序。有许多单片机可用于集成到产品中。单片机通常具有模拟和数字输入/输出功能。用户可以使用各种编程语言对微控制器进行编程。可以开发这些软件程序来监视和获取某些输入,执行高速计算和分析并生成输出以控制各种设备,例如LCD屏幕,电机驱动器等。

2. 单片机 多任务

1. 单片机操作系统可以让单片机同时执行多个任务(宏观上的同时,并非真正的同时进行);

2. 多任务方式可以让编程变得容易处理,例如: 有按键输入+液晶显示 +输出控制 这样的项目, 用系统方式可以分别单独处理各个模块,让这三个功能同时进行;

3. 另外,使用操作系统 可以有很多资源可以利用, 例如 文件系统,网络系统,图像系统等。

3. 单片机多任务编程思路

51单片机拢共P1,P2,两个准双向8位I/O口,和P0一个8位漏极开路端口,以及P3一个8位复用端口,而4相电机至少需要4个控制端,且不说51单片机的多任务控制能力,即使将所有单片机的引脚全部用于输出控制,一般40引脚的51单片机也控制不了几个步进电机。

4. 单片机多任务编程

1、51单片机无法实现多线程任务,只能实现单线程。这是由51单片机的硬件决定的,否则多线程芯片就没有必要设计出来了。

2、51单片机的硬件资源,如:定时器、计数器、捕获器、比较器、AD转换、pwm、UART等等大部分的硬件资源,初始化以及启动由用户控制。开始运行后,51单片机的相关硬件电路能自动运行,无需干预。

3、在这些硬件资源运行过程中,用户可以进行其他操作(一般不更改正在运行的硬件资源,否则会影响初始设定)。

4、但在这些硬件资源运行结束后,大部分的情况下,对应的特殊寄存器(含中断)会被更改,此时,需用户进行查询特殊寄存器或处理中断。处理这些时,用户需要停止正在运行的程序,不能同时进行其他工作。 例如:用户设置定时器为周期1S;开启定时器中断。启动定时器后,用户可以执行其他无关定时器的运算、控制。到达1S的时间时,定时器产生中断,用户执行的程序将被停止,保存现场后,程序运行跳转至定时器中断,开始执行定时器中断程序。在定时器中断程序执行结束后,恢复现场,重新从用户程序被中断的位置开始运行。

5. 单片机多任务框架设计

在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。

利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本文主要介绍了单片机抢答器设计及工作原理,以及它的实际用途。 ! 系统工作原理本系统采用8051单片机作为核心。控制系统的四个模块分别为:存储模块、显示模块、语音模块、抢答开关模块。

该抢答器系统通过开关电路四个按键输入抢答信号;利用语音芯片ISD1420 完成语音的录放功能; 利用存储程序; 利用一个数码管来完成显示功能。

工作时,用按键通过开关电路输入各路的抢答信号,经单片机的处理, 输出控制信号, 控制数码管和语音芯片工作。

在数码管上显示哪一组先答题,并通过语音系统读出 “第9组请答题”,从而实现整个抢答过程。

6. 单片机程序架构设计

不论是多少个程序,要放在一起,做一个项目的全部程序,只能有一个主程序main。

如果原来的多个程序都 有main,就得选一个做主程序,其它那些都要写成子程序啦,而且原来那些程序中有while(1)的话,都要删掉。

至于多个程序的整合,最容易做,不能出错的办法是:

把多个程序全部都放在一个文件中,改成子程序的那些程序,放在主程序的前面。

当然,比较合理的结构是一个工程由多个文件组成,容易做的方法是:

把那些改成的子程序单独保存成头文件,起名为 xxx.h ,都用.h。这些头文件都放在同一个文件夹下。

7. 单片机程序架构详解篇 pdf

建议你仔细看看它的一些IO端口结构图,然后配合看这些端口的控制和数据寄存器,以及端口相关的汇编指令.注意哦,一定要看汇编的指令才有用,C的看不出来.实际上,最终端口的输入和输出,都是由端口对应的数据寄存器来控制的.输入的时候,端口上所呈现的外部电路的状态,就呈现在输入寄存器里,用单片机的程序读出来,就是表示该状态的数据.比如说读到了0xF0,就表示该端口的高4条IO处于高电平,低4条IO处于低电平.同样的,输出的时候,就是单片机的程序将数据写入到端口的输出寄存器里,这样就可以在对应的端口上呈现出对应的状态,用于控制外部的电路.同样的,比如说你输出一个0x0F,就表示将该端口的高4条IO置为低电平,而低4条IO置为高电平.当然,单片机的结构有很多种,有些单片机不分输入和输出寄存器,有些单片机也没有控制寄存器,但也有很多单片机具有这些寄存器.控制寄存器的作用,是配置端口的各种功能和模式.比如说要将某端口的某几条IO引脚设为带弱上拉的输入,那么就应该打开弱上拉寄存器的对应几bit,并且打开输入输出控制寄存器的对应几bit,部分片子还需要关闭输入状态,这样就将该端口的指定几条IO引脚配置为了输入状态.而输出的配置也类似,无非就是几个寄存器的值不同.配置好了之后,这些端口和这些IO就可以完成实际的输入和输出控制了.如果是标准的MCS51单片机,例如AT89C51/52之类的,则端口要简单得许多,没有这么多的控制寄存器,也部分输入和输出寄存器.建议你找它们的用户手册仔细看看端口结构那一部分.一般来说,这些资料要在"用户手册"中才有,普通的"数据手册"里面不一定有.希望以上回答能让你大致了解单片机是如何实现具体控制的了.

8. 单片机的程序架构

你说的存储器扩展功能,不是所有的8位单片机都有,51是有的,AVR肯定没有,PIC我不熟,不好说,下面以51为例。 51单片机的构架中最多可以提供16根地址线(P2,P0口,各8根),16根地址线可以对应2^16=65536个地址,也就是64KB的存储空间,这个是51单片机扩展的上限。 从理论上说,51单片机使用并行扩展技术,可以扩展64KB的片外ROM或64KB的片外RAM。 PS:你所谓的内存在单片机中是极端错误的说法,没有这种说法。正确的应该是片内程序存储器、片外程序存储器,片内数据存储器,片外数据存储器,前两者是ROM,后两者是RAM。51使用的是哈佛结构,程序和数据存储在不同的存储空间中,两者明确分开,与通用计算机的冯诺依曼结构有本质的不同。

9. 单片机程序开发的全过程

GCC只是一个编译器,和别的编译器一样。串口通讯程序一般都是这样一个流程(AVR单片机正常工作的情况下):

1配置时钟,包括使能时钟,配置串口波特率。

2其他配置,包括校验设置,使能串口等。

3收发数据。

主要过程为查询串口标志位,然后根据串口标志位去判断是否完成了收发数据。按照这三个步骤去写程序,应该很快就能完成一个通讯程序。

10. 单片机两个程序组合

51编程里的子程序头文件不能直接移植到stm32上。原因如下:

1、单片机的编程,与通用C语言不完全一样,硬件的依赖性很强,任何子程序都可能与使用环境息息相关。

2、头文件除了定义变量,函数申明以外,也有对硬件的定义,比如IO口定义,寄存器定义等等,这都限制了其使用平台的灵活性,增加了移植的难度。

3、至于与硬件无关的一些函数组合成的头文件,也不能直接移植,比如延时、显示、通讯等,由于各个单片机的速度不一致,各个平台上程序就有所差异,甚至差别很大。综上所述,不同种类单片机之间程序(包含头文件)移植是不能直接的。