51单片机多任务系统设计汇编Word格式文档下载.docx

上传人:b****6 文档编号:20501005 上传时间:2023-01-23 格式:DOCX 页数:12 大小:17.13KB
下载 相关 举报
51单片机多任务系统设计汇编Word格式文档下载.docx_第1页
第1页 / 共12页
51单片机多任务系统设计汇编Word格式文档下载.docx_第2页
第2页 / 共12页
51单片机多任务系统设计汇编Word格式文档下载.docx_第3页
第3页 / 共12页
51单片机多任务系统设计汇编Word格式文档下载.docx_第4页
第4页 / 共12页
51单片机多任务系统设计汇编Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机多任务系统设计汇编Word格式文档下载.docx

《51单片机多任务系统设计汇编Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《51单片机多任务系统设计汇编Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机多任务系统设计汇编Word格式文档下载.docx

23H

AJMPMAIN

ORG000BH

LJMPRWQHCX

ORG0076H 

;

================任务切换程序===========================================

RWQHCX:

JNB 

RS0,LOOP3

RS1,LOOP4

==============任务4现场保护

PUSH 

ACC 

需注意与任务4现场还原对应

B

PSW

MOV 

RW4_SP,SP 

保存任务4的堆栈指针位置

==============任务2现场还原

SP,RW1_SP 

取任务1的堆栈指针位置,任务1使用寄存器0组

POP 

PSW 

需注意与任务1现场保护对应

ACC

RETI

LOOP2:

==============任务1现场保护

需注意与任务1现场还原对应

RW1_SP,SP 

保存任务1的堆栈指针位置

==============任务3现场还原

SP,RW2_SP 

取任务2的堆栈指针位置,任务2使用寄存器1组

需注意与任务2现场保护对应

LOOP3:

RS1,LOOP2

==============任务2现场保护

需注意与任务2现场还原对应

RW2_SP,SP 

保存任务2的堆栈指针位置

==============任务4现场还原

SP,RW3_SP 

取任务3的堆栈指针位置,任务3使用寄存器2组

需注意与任务3现场保护对应

LOOP4:

==============任务3现场保护

需注意与任务3现场还原对应

RW3_SP,SP 

==============任务1现场还原

SP,RW4_SP 

取任务4的堆栈指针位置,任务4使用寄存器3组

需注意与任务4现场保护对应

========任务一程序===============================

RW1_KS:

;

任务一入口(初始化)

CLR 

RS0

CLR 

RS1

你的初始化程序

RW1_MAIN:

任务一主程序

你的程序

LJMP 

RW1_MAIN

============任务一END===================================

========任务二程序===============================

RW2_KS:

任务二入口(初始化)

SETB 

RW2_MAIN:

任务二主程序

RW2_MAIN

============任务二END===================================

========任务三程序===============================

RW3_KS:

任务三入口(初始化)

RW3_MAIN:

任务三主程序

RW3_MAIN

============任务三END===================================

========任务四程序===============================

RW4_KS:

任务四入口(初始化)

RW4_MAIN:

任务四主程序

RW4_MAIN

============任务四END===================================

===============初始化程序================================== 

MAIN:

SP,#09FH;

取任务2堆栈指针开始位置

DPTR,#RW2_KS

DPL

DPH

RW2_SP,#0A4H;

任务2堆栈指针寄存器初值=09FH+2+任务2现场保护入栈数

SP,#0BFH;

取任务3堆栈指针开始位置

DPTR,#RW3_KS

RW3_SP,#0C4H;

任务3堆栈指针寄存器初值=0BFH+2+任务3现场保护入栈数

SP,#0DFH;

取任务4堆栈指针开始位置

DPTR,#RW4_KS

RW4_SP,#0E4H;

任务4堆栈指针寄存器初值=0DFH+2+任务4现场保护入栈数

SP,#7FH;

取任务1堆栈指针开始位置

EA 

开启维持个任务调度的定时器

ET0

TMOD,#02H

TR0

LJMP 

RW1_KS 

END

要求不严谨的20任务系统

此程序结构很空洞,使用请自己注意

RWJSQ 

data 

7FH

RWJSQ1 

7EH

LJMPRWDD

ORG0076H 

RWDD:

任务调度程序

R0,RWJSQ;

取任务地址寄存器地址

@R0,A 

保存当前任务断点

INC 

R0

@R0,A

A,R0

CJNEA,RWJSQ1,LOOP2;

所有需要进行的任务是否进行完

R0,#216 

任务地址寄存器起始地址

A,@R0 

取另一个任务断点

PUSHACC

DEC 

A,@R0

RWJSQ,R0;

保存任务地址寄存器地址

CJNER0,#220,XXX 

220是任务三的地址寄存器地址

R4 

延时基数

XXX:

RETI 

前去执行新任务

MOVRWJSQ,#216;

任务地址寄存器起始地址(最多20个任务,需40个寄存器)

MOVRWJSQ1,#0;

任务地址寄存器地址的最后一个地址加一(取值218-0)

MOVR0,RWJSQ 

取各个任务的地址

MOVDPTR,#RW1

LCALLDZSZ

MOVDPTR,#RW2

MOVDPTR,#RW3

MOVDPTR,#RW4

MOVDPTR,#RW5

MOVDPTR,#RW6

MOVDPTR,#RW7

MOVDPTR,#RW8

MOVDPTR,#RW9

MOVDPTR,#RW10

MOVDPTR,#RW11

MOVDPTR,#RW12

MOVDPTR,#RW13

MOVDPTR,#RW14

MOVDPTR,#RW15

MOVDPTR,#RW16

MOVDPTR,#RW17

MOVDPTR,#RW18

MOVDPTR,#RW19

MOVDPTR,#RW20

TMOD,#02H;

TH0,#6;

定时器初值设置

RW1 

跳到第一个任务

DZSZ:

MOV@R0,DPH

INCR0

MOV@R0,DPL

RET

RW1:

计数任务一

JB 

P1.0,$

R7

死循环

RW2:

计数任务二

P1.1,$

RW2 

RW3:

计数任务三

R4,#0

CJNE 

R4,#250,$;

准确延时演示,延时时间=250*任务数*定时器时间,

CPL 

P1.5

RW3 

RW4:

计数任务四

R6,#255 

非准确延时,时间较难计算

BBB:

R5,#255

DJNZ 

R5,$

R6,BBB

P1.6

RW4 

RW5:

计数任务五

P2.7,$

P1.7

RW5 

RW6:

计数任务六

P1.2,$

P2.2

RW6 

RW7:

计数任务七

RW7 

RW8:

计数任务八

RW8 

RW9:

计数任务九

RW9 

RW10:

计数任务十

RW10 

RW11:

计数任务十一

RW11 

RW12:

计数任务十二

RW12 

RW13:

计数任务十三

CPLP0.0

RW13 

RW14:

计数任务十四

CPLP0.1

RW14 

RW15:

计数任务十五

CPLP0.2

RW15 

RW16:

计数任务十六

CPLP0.3

RW16 

RW17:

计数任务十七

CPLP0.4

RW17 

RW18:

计数任务十八

CPLP0.5

RW18 

RW19:

计数任务十九

CPLP0.6

RW19 

RW20:

计数任务二十

CPLP0.7

RW20 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1