?? ex1.c
字號:
#include "..\uc_os_II\includes.h"
OS_STK xdata Task1Stack[CPU_MAX_STK_SIZE];
OS_STK xdata Task2Stack[CPU_MAX_STK_SIZE];
OS_STK xdata Task3Stack[CPU_MAX_STK_SIZE];
void Task1(void xdata * ppdata) reentrant
{
ppdata = ppdata;
while(1)
{
OSTimeDlyHMSM(0, 0, 2, 0);
printf("\n\n\n\n\n");
printf("\n這里是任務1 的輸出!!!!!!");
printf("\n-------------------------------");
printf("\n恭喜發財!!!");
printf("\nuC/OS II 正在運行");
printf("\nuC/OS II 源碼開放的嵌入式實時操作系統");
}
}
void Task2(void xdata * ppdata) reentrant
{
ppdata = ppdata;
while(1)
{
OSTimeDlyHMSM(0, 0, 8, 0);
printf("\n\n\n\n\n");
printf("\n這里是任務2 的輸出!!!!!!");
printf("\n-------------------------------");
printf("\n");
printf("本工程移植時間:");
printf(__DATE__);
printf(" ");
printf(__TIME__);
}
}
void Task3(void xdata * ppdata) reentrant
{
ppdata = ppdata;
while(1)
{
OSTimeDlyHMSM(0, 0, 16, 0);
printf("\n\n\n\n\n");
printf("\n這里是任務3 的輸出!!!!!!");
printf("\n-------------------------------");
printf("\n高時兵");
printf("\nceeback@qq.com");
printf("\n福建泉州鐵通電子設備有限公司");
}
}
void SerialInitial()
{
/* set TI to 1, set TR1 to 1 */
SCON = 0x52; /* SM0 SM1 =1 SM2 REN TB8 RB8 TI RI */
TMOD = 0x20; /* GATE=0 C/T-=0 M1 M0=2 GATE C/T- M1 M0 */
TH1 = 0xfd; /* 19200*/
PCON = 0x80; // 38400
TCON = 0x40; /* 01101001 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT */
}
void InterruptInitial()
{
/* set timer. 50ms, THTL = 3caf when cpu at 12MHz */
TMOD |= 0x01;
TH0 = 0x70;
TL0 = 0x00;
/* TR0 is set in OSStart() */
ET0 = 1;
}
sfr WDTCN = 0xFF;
sfr CKCON = 0x8E;
sfr EMI0CF = 0xA3;
sfr XBR0 = 0xE1;
sfr XBR2 = 0xE3;
sfr OSCXCN = 0xB1;
sfr OSCICN = 0xB2;
void initial_cpu(void)
{
unsigned int idata i = 0;
//Reset_Sources_Init()
// EA = 0;
WDTCN = 0xDE;
WDTCN = 0xAD;
// EA = 1;
//RSTSRC = 0x02;
//Timer_Init() // T0 為系統計時,10 ms 中斷一次
CKCON = 0x00; // T0 使用的是系統時鐘的 12 分頻,其計數每 1 約為 0.5425 us.
TMOD = 0x21;
TH0 = 0xB8; // T0:10 ms 中斷一次
TH1 = 0xFa;
TCON = 0x50; //啟動定時器.
/* T2CON = 0x34;
RCAP2L = 0xB8;
RCAP2H = 0xFF;
//TMR3CN = 0x04; // T3: us 中斷一次,用于 DAC 輸出,其中斷標志必須手動清 0
TMR3H = 0xff;
TMR3RLH = 0xff; // T3 總是16 位自動重載方式
TMR3RLL = 0xf4;
*/
//UART_Init()
//PCON = 0x80;
SCON = 0x50;
//SCON1 = 0x50;
//EMI_Init()
EMI0CF = 0x07;
//P0MDOUT = 0x50; // /RD,/CWR,/INT0,A11 設置為推挽輸出方式.
//P2MDOUT = 0x01;
//P2MDOUT = 0x08;
XBR0 = 0x04;
//XBR1 = 0x04;
XBR2 = 0x46;
//Oscillator_Init()
OSCXCN = 0x67;
for (i = 0; i < 5000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
OSCICN = 0x08;
}
main()
{
initial_cpu();
SerialInitial();
InterruptInitial();
OSInit();
printf("\nstart");
OSTaskCreate(Task1, (void xdata *)0, &Task1Stack[0],2);
OSTaskCreate(Task2, (void xdata *)0, &Task2Stack[0],3);
OSTaskCreate(Task3, (void xdata *)0, &Task3Stack[0],4);
OSStart();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -