📄 main.asm
字号:
*#file includes.h
*11:
*#file C:\MC\8051io.h
*5:
*6:
*10:
*11:extern register printf(), sprintf(), concat();
*12:
*#file 8051int.h
*44:
*45:
*51:
*53:
*90:
*93:
*101:
*#file C:\MC\8051reg.h
*6:
*7:
*8:extern register unsigned char PSW, SP, DPH, DPL, P0, P1, P2, P3,
*9: IP, IE, TMOD, TCON, TH0, TL0, TH1, TL1, SCON, SBUF, PCON,
*10: T2CON, TH2, TL2, RCAP2H, RCAP2L;
*11:
*#file includes.h
*15:
*16:
*#file os_cfg.h
*14:
*15:
*20:
*21:
*23:
*25:
*27:
*29:
*30:
*32:
*33:
*35:
*38:
*49:
*51:
*#file os_cpu.h
*15:
*16:
*22:
*28:
*29:
*39:
*41:
*48:
*60:
*62:
*67:
*72:
*73:
*78:
*79:
*81:
*83:
*84:
*85:extern unsigned char IE_SHADOW;
*86:
*87:
*88:extern unsigned char ISTK_START;
*89:
*90:
*91:extern unsigned int OSTickCtr;
*92:
*93:
*94:
*96:
*97:
*98:extern unsigned int OSTickFrequency;
*99:
*#file ucos_ii.h
*14:
*15:
*20:
*21:
*22:
*24:
*30:
*32:
*38:
*41:
*44:
*47:
*48:
*54:
*58:
*59:
*63:
*64:
*68:
*72:
*77:
*78:
*82:
*85:
*87:
*89:
*93:
*95:
*100:
*102:
*108:
*111:
*114:
*120:
*122:
*123:
*128:
*131:struct OS_Event{
*132: void *evt_OSEventPtr;
*133: unsigned char evt_OSEventTbl[((12)/8+1)];
*134: unsigned int evt_OSEventCnt;
*135: unsigned char evt_OSEventType;
*136: unsigned char evt_OSEventGrp;
*137:};
*139:
*140:
*145:
*148:struct OS_Mbox_Data{
*149: void *mbox_OSMsg;
*150: unsigned char mbox_OSEventTbl[((12)/8+1)];
*151: unsigned char mbox_OSEventGrp;
*152:};
*154:
*159:
*180:
*181:
*186:
*197:
*202:
*211:
*216:
*224:
*225:
*230:
*232:struct os_tcb {
*233: unsigned char *OSTCBStkPtr;
*234:
*242:
*243: struct os_tcb *OSTCBNext;
*244: struct os_tcb *OSTCBPrev;
*245:
*247: struct OS_Event *OSTCBEventPtr;
*249:
*251: void *OSTCBMsg;
*253:
*254: unsigned int OSTCBDly;
*255: unsigned char OSTCBStat;
*256: unsigned char OSTCBPrio;
*257:
*258: unsigned char OSTCBX;
*259: unsigned char OSTCBY;
*260: unsigned char OSTCBBitX;
*261: unsigned char OSTCBBitY;
*262:
*266:};
*267:
*268:
*273:
*274:
*275:
*276:
*277:extern unsigned int OSCtxSwCtr;
*278:
*280:extern struct OS_Event *OSEventFreeList;
*281:extern struct OS_Event OSEventTbl[2];
*283:
*284:extern unsigned int OSIdleCtr;
*285:
*292:
*293:extern unsigned char OSIntNesting;
*294:
*295:extern unsigned char OSLockNesting;
*296:
*297:extern unsigned char OSPrioCur;
*298:extern unsigned char OSPrioHighRdy;
*299:
*300:extern unsigned char OSRdyGrp;
*301:extern unsigned char OSRdyTbl[((12)/8+1)];
*302:
*303:extern unsigned char OSRunning;
*304:
*306:extern unsigned char OSTaskCtr;
*308:
*309:extern struct os_tcb *OSTCBCur;
*310:extern struct os_tcb *OSTCBFreeList;
*311:extern struct os_tcb *OSTCBHighRdy;
*312:extern struct os_tcb *OSTCBList;
*313:extern struct os_tcb *OSTCBPrioTbl[12 + 1];
*314:
*315:extern unsigned int OSTime;
*316:
*317:
*318:extern unsigned char const OSMapTbl[];
*319:extern unsigned char const OSUnMapTbl[];
*320:
*321:
*327:
*328:
*333:
*335:void *OSMboxAccept(struct OS_Event *pevent);
*336:struct OS_Event *OSMboxCreate(void *msg);
*337:void *OSMboxPend(struct OS_Event *pevent, unsigned int timeout, unsigned char *err);
*338:unsigned char OSMboxPost(struct OS_Event *pevent, void *msg);
*339:unsigned char OSMboxQuery(struct OS_Event *pevent, struct OS_Mbox_Data *pdata);
*345:
*356:
*366:
*371:
*383:
*387:
*388:unsigned char OSTaskCreate(void *task, void *pdata, unsigned char *ptos, unsigned char prio);
*389:
*401:
*406:
*411:
*415:
*416:unsigned char OSTaskQuery(unsigned char prio, struct os_tcb *pdata);
*417:
*422:
*423:void OSTimeDly(unsigned int ticks);
*424:unsigned char OSTimeDlyHMSM(unsigned char hours, unsigned char minutes, unsigned char seconds, unsigned int milli);
*425:unsigned char OSTimeDlyResume(unsigned char prio);
*426:unsigned int OSTimeGet(void);
*427:void OSTimeSet(unsigned int ticks);
*428:void OSTimeTick(void);
*429:
*434:
*435:
*436:void OSInit(void);
*437:
*438:void OSIntEnter(void);
*439:void OSIntExit(void);
*440:
*441:void OSSchedLock(void);
*442:void OSSchedUnlock(void);
*443:
*444:void OSStart(void);
*445:
*446:void OSStatInit(void);
*447:
*448:unsigned int OSVersion(void);
*449:
*450:
*456:
*457:
*459:void OSEventTaskRdy(struct OS_Event *pevent, void *msg, unsigned char msk);
*460:void OSEventTaskWait(struct OS_Event *pevent);
*461:void OSEventTO(struct OS_Event *pevent);
*462:void OSEventWaitListInit(struct OS_Event *pevent);
*464:
*468:
*472:
*473:void OSSched(void);
*474:
*475:void OSTaskIdle(void *data);
*476:
*480:
*481:unsigned char OSTCBInit(unsigned char prio, unsigned char *ptos, unsigned char *pbos, unsigned int id,
*482: unsigned int stk_size, void *pext, unsigned int opt);
*483:
*484:
*490:
*491:
*492:void OSCtxSw(void);
*493:
*494:void OSIntCtxSw(void);
*495:
*496:void OSStartHighRdy(void);
*497:
*498:void OSTaskCreateHook(struct os_tcb *ptcb);
*499:void OSTaskDelHook(struct os_tcb *ptcb);
*500:void OSTaskStatHook(void);
*501:void *OSTaskStkInit(void *task, void *pdata, void *ptos, unsigned int opt);
*502:void OSTaskSwHook(void);
*503:
*504:void OSTickISR(void);
*505:
*506:void OSTimeTickHook(void);
*#file main.C
*2:
*7:
*12:
*13:
*14:void task0( void *pd );
*15:void task1( void *pd );
*16:void task2( void *pd );
*17:void task3( void *pd );
*18:
*19:unsigned char task0_stack[2048];
*20:unsigned char task1_stack[2048];
*21:unsigned char task2_stack[2048];
*22:unsigned char task3_stack[2048];
*23:
*24:struct OS_Event * mbox_1;
*25:struct OS_Event * mbox_2;
*26:struct OS_Event * mbox_3;
*27:
*28:
*29:
*30:main()
*31:{
*32:
*33: IE &= 0x7F;
main EQU *
MOV A,IE
ANL A,#127
MOV IE,A
*34:
*35: serinit( 9600 );
MOV A,#128
MOV B,#37
PUSH A
PUSH B
LCALL serinit
DEC SP
DEC SP
*36:
*37: IE &= 0x7F;
MOV A,IE
ANL A,#127
MOV IE,A
*38:
*39: OSInit();
LCALL OSInit
*40:
*41: OSSetTimer();
LCALL OSSetTimer
*42: OSSetTickPerSec( 200 );
MOV A,#200
MOV B,#0
PUSH A
PUSH B
LCALL OSSetTickPerSec
DEC SP
DEC SP
*43:
*44:
*45: printf("uCOS-II 8051 Port Demo Program\n");
MOV A,#?0+0&255
MOV B,#?0+0/256
PUSH A
PUSH B
MOV A,#1
MOV B,#0
LCALL printf
DEC SP
DEC SP
*46:
*47: mbox_1 = OSMboxCreate( (void*) 3 );
MOV A,#3
MOV B,#0
PUSH A
PUSH B
LCALL OSMboxCreate
DEC SP
DEC SP
MOV DPTR,#mbox_1
MOVX [DPTR],A
INC DPTR
XCH A,B
MOVX [DPTR],A
XCH A,B
*48: mbox_2 = OSMboxCreate( (void*) 0 );
MOV A,#0
MOV B,#0
PUSH A
PUSH B
LCALL OSMboxCreate
DEC SP
DEC SP
MOV DPTR,#mbox_2
MOVX [DPTR],A
INC DPTR
XCH A,B
MOVX [DPTR],A
XCH A,B
*49: mbox_3 = OSMboxCreate( (void*) 0 );
MOV A,#0
MOV B,#0
PUSH A
PUSH B
LCALL OSMboxCreate
DEC SP
DEC SP
MOV DPTR,#mbox_3
MOVX [DPTR],A
INC DPTR
XCH A,B
MOVX [DPTR],A
XCH A,B
*50:
*51:
*52: OSTaskCreate( &task0, 0, (void*)(&task0_stack[2047]), 0 );
MOV R1,#task0
MOV R2,#=task0
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#0
MOV B,#0
PUSH A
PUSH B
MOV A,#255
MOV B,#7
MOV R1,#task0_stack
MOV R2,#=task0_stack
LCALL ?addi
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#0
MOV B,#0
PUSH A
PUSH B
LCALL OSTaskCreate
MOV R7,#-8
LCALL ?adjstk
*53: OSTaskCreate( &task1, 1, (void*)(&task1_stack[2047]), 1 );
MOV R1,#task1
MOV R2,#=task1
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#1
MOV B,#0
PUSH A
PUSH B
MOV A,#255
MOV B,#7
MOV R1,#task1_stack
MOV R2,#=task1_stack
LCALL ?addi
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#1
MOV B,#0
PUSH A
PUSH B
LCALL OSTaskCreate
MOV R7,#-8
LCALL ?adjstk
*54: OSTaskCreate( &task2, 2, (void*)(&task2_stack[2047]), 2 );
MOV R1,#task2
MOV R2,#=task2
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#2
MOV B,#0
PUSH A
PUSH B
MOV A,#255
MOV B,#7
MOV R1,#task2_stack
MOV R2,#=task2_stack
LCALL ?addi
MOV A,R1
MOV B,R2
PUSH A
PUSH B
MOV A,#2
MOV B,#0
PUSH A
PUSH B
LCALL OSTaskCreate
MOV R7,#-8
LCALL ?adjstk
*55: OSTaskCreate( &task3, 3, (void*)(&task3_stack[2047]), 3 );
MOV R1,#task3
MOV R2,#=task3
MOV A,R1
MOV B,R2
PUSH A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -