导航:首页 > 操作系统 > F在单片机

F在单片机

发布时间:2023-09-16 08:11:28

❶ stc系列单片机_μC/OS-Ⅱ在C8051F系列单片机上的移植及其应用系统开发

随着微处理器技术的飞速发展和嵌入式系统实时性要求的不断提高,应用实时多任务操作系统(RTOS)作为嵌入式设计的开发平台已逐步成为嵌入式应用设计的主流。本研究讨论将μC/OS-Ⅱ移植到C8051F系列高性能8位单片机中,并以C8051F060为例阐述了其应用系统的开正基发过程。
一、μC/OS-Ⅱ的基本工作原理
1.任务管理
µC/OS-II中的任务可以是一个无限的循环,也可以在一次执行完毕后被“删除”掉,即该任务可以认为CPU完全属于该任务本身,实时应用程序的设计过程包括将问题分割为多个任务。µC/OS-II可以管理64个任务,每个任务有一定的优先级,且优先级不重复。
2.任务调度机制的实现
µC/OS-II是可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,这提高了系统的实时响应能力。在没有中断情况下,任务间的切换一般会调用OSSched()函数。µC/OS-II的中断服务子程序和一般前/后台的操作有所不同。
3.任务之间的通信
在µC/OS-II中,可以通过信号量、消息邮箱和消息队列等机制,实现数据共享和任务通信。消息邮箱用一个指针型变量,一个任务或一个中断服务子程序通过内核服务,将一则消息放入邮箱,一个或多个任务通过内核服务接受这则消息。每个邮箱有相应的等待消息任务表,等待消息的任务在无消息时被置挂起态,并记入邮箱等待消息任务表中。消息放入邮箱,内核将运行等待消息任务表中优先级最高的任务。
二、移植及应用
C8051F060系列单片机特别适举数谨用于任务繁重的小型化测控系统。当芯片具有的功能被较多地使用时,系统要处理的任务就较多,编程头绪也多。为了简化应用程序实现程序模块化,提高应用程序的实时性和可靠毕纳性,将μCOS2Ⅱ移植到C8051F060中就成为一件很有意义的事。
1.µC/OS-II的移植
(1)修改INCLUDES.H文件:增加的头文件放在头文件列表的最后。
#include "os_cpu.h"
#include "os_cfg.h"
#include "ucos_ii.h"
(2)修改OS CPU.H文件:为确保系统在KEIL环境下正常运行,重新定义了一系列与C8051F060和KEIL编译器相关的数据结构、宏和常数。
typedef unsigned char OS_STK;/*定义堆栈宽度为8位*/
typedef unsigned char OS_CPU_SR;
#define OS_ENTER_CRITICAL() EA="0"
#define OS_EXIT CRITICAL()EA="1"
(3)修改OS_CPU_A.ASM文件
①编写OSSTartHihgRdy()函数:获得将要恢复运行的就绪任务的堆栈映像的最低地址,并计算出堆栈长度,然后向系统堆栈复制数据、堆栈指针SP和堆栈映像指针?C_XBP,最后利用中断返回。
②编写OSCtxSw()函数:先从当前任务的TCB控制块中获得当前任务堆栈长度和堆栈映像指针,然后将系统堆栈的内容复制到任务堆栈映像,最后获得将要恢复运行的就绪任务的TCB,程序跳至OSSTartHihgRdy()函数的入口,实现任务的切换。
③编写OSIntCtxSw()函数:代码大部分与OSCtxSw()相同,不同之处在于此处不需要再保存寄存器;需要调整堆栈指针(SP=SP-4),去掉在调用OSIntExit(),OSIntCtxSw()中压入堆栈中的多余的内容,以使堆栈中只包含任务的运行环境。
④编写OSTickISR()函数:用定时器0作中断源,初始化定时器0使系统每秒中断100次,节拍率Tick=100次/秒。
(4)修改OS_CPU_C.C文件:编写OSTaskStkInit()函数用来初始化堆栈。
2. 基于µC/OS-II的C8051F060应用系统开发
移植了µC/OS-II的C8051F060的每个功能都可以作为一个独立的任务,每个任务都有自己的堆栈空间,可以被其他任务和中断服务程序挂起。在设计中,主函数均以OSInit()开始,以OSStart()结束,中间部分为与硬件相关的系统初始化函数。对于任务的建立,必须依照µC/OS-II系统中建立任务的格式,根据自己的需求来确定任务的个数,并且根据任务的重要程度和被调用的频率来设置好优先级。创建好任务后,在主函数外面分别列出各个任务函数,每个任务函数都是一个无限循环程序,调用实现某些功能的应用程序函数,然后按设计的需求设置挂起方式和挂起时间。
应用系统测试程序实现了6个任务:Task1是每1s发送CAN数据包,Task2是处理CAN接收到的数据,Task3是每3s发送串口数据,Task4是处理串口接收到的数据,Task5是处理按键信息,Task6是显示数据。CAN总线接收采用中断方式,其优先级高于其他任务,为了保证系统的实时性,在中断程序中不处理数据,只是发送一个信号量,在Task2中处理CAN数据。串口数据接收亦采用中断方式,其优先级低于CAN高于其他任务。串口数据发送采用的是查询方式,按字节发送。程序中设置6个任务的优先级依次为13,11,14,12,15,16。
在主程序中,首先初始化C8051F060和CAN,调用OsInit();然后调用API函数,创建6个任务(不包括空闲任务);再创建一个信号量CAN_EVENT,为中断与Task2通信所用;最后调用OSStart(),OS系统开始运行优先级最高的任务。Task2的优先级最高,但是在没收到CAN_EVENT之前,任务一直处于休眠状态,当CAN接收器收到数据包后,Task2进入就绪态,在中断返回时,进行任务切换,执行优先级最高Task2。在Task2还未收到信号量之前,Task1、Task3、Task4、Task5和Task6根据时间延时和优先级的不同各自独立运行。
三、结束语
将编写的测试程序下载到C8051F060应用系统中进行了实际的运行测试,测试表明,基于µC/OS-II的C8051F060应用系统中的各任务工作稳定可靠,取得了满意的效果,为进行嵌入式应用系统的进一步设计奠定了基础。
(作者单位:黑龙江省大庆职业学院)
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

❷ 51单片机汇编语言如何用定时器中断实现数码管从0-F每秒进1且循环进行。

ORG0000H
JMPBEGIN
ORG000BH
LJMPT0ISR
ORG0030H
TABLE:;共阴极数码管显示代码表
DB3FH,06H,5BH,4FH,66H;01234
DB6DH,7DH,07H,7FH,6fh;56789
;---------------------------------------
BEGIN:
MOVTMOD,#01H
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
SETBTR0
SETBET0
SETBEA
MOVR2,#20
CLRA
LOOP:
MOVDPTR,#TABLE
PUSHACC
MOVCA,@A+DPTR
MOVP0,A
POPACC
SJMPLOOP
T0ISR:
CLRTR0
MOVTH0,#HIGH(65536-50000)
MOVTL0,#LOW(65536-50000)
SETBTR0
DJNZR2,T0E
INCA
ANLA,#0FH
T0E:
RETI
END

❸ 单片机内部数据储存地址中的00H 和0FH,FFH代表什么意思。。。F 和0是什么

表示十六进制数的意思。

00H,0FH,FFH是一个十六进制数,它等于0,0FH=15,FFH=255,用于内部数据存储的内存。

00H~FFH相当于小数0~255

例如:二进制十六进制十进制

00000000b000h

0000000101h1b

0000001002bh2

00001001b09h9

00001010b010

000010110bh11b

000011000ch12b

00001101b0dh13

00001110b014

00001111b0fh15

(3)F在单片机扩展阅读:

注意事项:

8051系列单片机有两个定时器:T0和T1,分别称为定时器和T1定时器,这两个定时器是16位定时器/计数器,8052系列单片机新增第三定时器/计数器T2,具有定时或事件计数功能,常用于时间控制,延时,外部时间计数和检测等。

8051单片机的两个定时器T0和T1分别由两个特殊的功能寄存器组成,T0由专用寄存器TH0和TL0组成,T1由TH1和TL1组成。

当作为定时器使用时,定时器对8051单片机芯片振荡器输出的脉冲数进行12分频后计数,即每台机器周期使定时器T0/T1的寄存器值自动累加1,直到溢出,之后循环计数从0开始;所以,定时器的分辨率是时钟频率的1/12。

当用作计数器时,外部脉冲信号按引脚T0(P3.4)或T1(P3.5)计数,当输入的外部脉冲信号从1跳到0时,计数器的值自动增加1,计数器的最大频率通常是时钟频率的1/24。

由此可以看出,无论是定时器还是计数器的工作方式,定时器T0和T1都不占用CPU时间,除非定时器/计数器T0和T1溢出,否则它可能导致CPU中断,然后执行中断处理程序,因此定时器/计数器是一种单片机高效、灵活的工作元件。

❹ 单片机公式f=12MHz f是什么意思

这并不是什么单片机公式,只是给了单片机的时钟信号频率,简称单片机时钟频率f为12MHz。因为,多数单片机时钟电路要外配晶振,而时钟频率是由晶振频率决定的,所以,f 又称为单片机晶振频率。如下图中画圈的元件就是晶振,上面的数字就是这个 f 的频率。

❺ 就想问单片机中的通用寄存器区(00H~1FH)中的H和F代表什么意思

H 就是英文 hex adecimal, 表示 16进制。
前两位是数值, 其中 的 F 表示 16进制 里的数值 15。
16进制 用 0,1,2,3 。。。9,A,B,。。。F 表示 某一位 是 0到15 中的1个数。

❻ pic单片机中ADDWF PCL,F 中f是指的什么意思呢,请高手指点啊!!!!好像没这个寄存器吧

ADDWF PCL,F,这条指令的意思表示W寄存器和PCL的值相加,结果存回到PCL寄存器,工作寄存器W的值不变,ADDWF PCL,W表示结果存回工作寄存器W,PCL的值不变

❼ 单片机的数据存储器RAM地址空间为00H~FFH,其中00H~FFH是什么意思,H,F分别代表什么

H表示是16进制数,16进制数中用0—9和A—F来表示十进制数的0—15,一位16进制数最多可以表示16个数,即0H—FH,F则相当于15。

在单片机里,储存空间划分成很多小单元,每个单元包含8个2进制位,即一个字节。每个单元都给一个地址标号,相当于门牌号,从0开始。你的这个单片机Ram地址空间00H—FFH,化成10进制数就是0—255,共256字节,不出意外的话,你那个是典型的51单片机。

阅读全文

与F在单片机相关的资料

热点内容
java树形算法 浏览:637
通达信加锁指标源码怎么看 浏览:750
将同名文件移动到部分同名文件夹 浏览:399
摆荡指标加压力线源码 浏览:911
新一代单片机特征 浏览:766
王者的服务器什么时候才修好 浏览:277
cad历史命令 浏览:39
php博客源代码 浏览:22
cng压缩机功率 浏览:455
pdf批量打印怎么设置 浏览:74
javamap底层 浏览:265
卖华为云服务器 浏览:107
中颖单片机烧录器 浏览:846
pdf转换成图片免费软件 浏览:458
编程语言怎么做出来的 浏览:619
文件夹英文名排序 浏览:56
西二旗最高程序员 浏览:99
台湾写真内部加密无删减视频 浏览:830
在线照片压缩变小 浏览:654
隐藏配置文件夹 浏览:186