预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共40页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机接口技术(C51版)内容概述13.1多任务编程思想13.1.2多任务机制工作原理13.2RTX51的特点及运行要求13.2.1RTX51的特点13.2.2RTX51对硬件的要求13.2.3RTX51对软件的要求13.3RTX51基本概念及实例分析RTX51任务状态RTX51任务状态例13-3-1简单的RTX51程序ob0()_task_0{ inti; os_create_task(1);/*启动任务1*/ os_create_task(2);/*启动任务2*/ while(1){/*无穷循环*/ counter0++;/*counter0加1*/ for(i=0;i<1000;i++); P1_0=!P1_0; } }job1()_task_1{ inti; while(1){/*无穷循环*/ counter1++;/*counter1加1*/ for(i=0;i<1000;i++); P1_1=!P1_1; } } job1()_task_1{ inti; while(1){/*无穷循环*/ counter1++;/*counter1加1*/ for(i=0;i<1000;i++); P1_1=!P1_1; } } 13.3.2RTX51事件RTX51支持的事件RTX51支持的事件1使用os_wait函数job0()_task_0{ os_create_task(1);/*启动任务1*/ while(1){/*无穷循环*/ counter0++;/*counter0加1*/ os_wait(K_TMO,5,0);/*等待超时信号:5个时钟报时*/ } } job1()_task_1{ while(1){/*无穷循环*/ counter1++;/*counter1加1*/ os_wait(K_TMO,10,0);/*等待超时信号:10个时钟报时*/ } } job0先启动job1,然后在counter0加1计数以后job0呼叫os_wait函数暂停5个时钟报时信号。这时rtx51切换到下一个任务job1。在job1增加counter1计数以后,它也调用os_wait以暂停10个时钟报时信号。现在rtx51没有其他的任务需要执行。因此在它可以延续执行job0之前,它进入一个空循环,等待5个时钟报时信号过去。 本例子的结果是counter0每5个时钟报时周期加1,而counter1每10个时钟报时周期加1。2使用RTX51的信号job0()_task_0{ os_create_task(1);/*启动任务1*/ os_create_task(2);/*启动任务2*/ os_create_task(3);/*启动任务3*/ while(1){/*无穷循环*/ counter0++;/*counter0加1*/ os_wait(K_TMO,5,0);/*等待超时信号:5个时钟报时*/ } } job1()_task_1{ while(1){/*无穷循环*/ counter1++;/*counter1加1*/ os_wait(K_TMO,10,0);/*等待超时信号:10个时钟报时*/ } }job2()_task_2{ while(1){/*无穷循环*/ counter2++;/*counter2加1*/ if((counter2&0xFFFF)==0){/*如果counter2=0*/ os_send_signal(3);/*发信号至任务3*/ } } } job3()_task_3{ while(1){/*无穷循环*/ os_wait(K_SIG,0,0);/*等待信号*/ counter3++;/*收到信号后,counter3加1*/ } } job0中启动任务1、任务2、任务3,counter0和counter1变化同例13-3-2。任务2没有调用os_wait函数,当counter2加1直到counter2等于0时,任务2发信号给任务3,任务3收到信号后将counter3加1。因此counter2的值是couner3的2的16次方倍。13.3.3RTX51中断处理13.3.4RTX51TINY的配置配置文件部分配置说明伪指令的变量说明13.4RTX51TINY的内核原理13.4.2调度规则13.4.3任务控制块13.4.4存储器管理堆栈管理图示13.4.5代码分析13.3.5.1主程序main13.3.5.2定时器T0中断服务程序定时器T0中断服务程序流程图13.3.5.3任务切换程序段13.5应用实例温度数据采集系统电路原理图13.5.2交通灯控制serial.c。实现串行接口的中断驱动。文件包括函数putchar和getkey函数。printf和getline需要调用这两个基本函数。 GET