📄 test.c
字号:
//***************************************************************/
#include "includes.h"
#include "xlcd.h"
#include <timers.h>
#include <delays.h>
#include <string.h>
#include <stdlib.h>
/************************************************************************/
#define LED1 PORTBbits.RB0
#define LED2 PORTBbits.RB1
#define LED3 PORTBbits.RB2
#define LED4 PORTBbits.RB3
static char rstr_welcome[17L] = "Welcome uC/OS-II";
OS_STK Task1Stk[100];
OS_STK Task2Stk[50];
OS_STK Task3Stk[50];
OS_STK Task4Stk[50];
OS_STK LCDTaskStk[200L];
void Task1(void *pdata);
void Task2(void *pdata);
void Task3(void *pdata);
void Task4(void *pdata);
void LCDTask(void *pdata);
void Task1(void *pdata)
{
OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1);
WriteTimer0(-10000);
// Initialize statistics task
OSStatInit();
OSTaskCreate(Task2,(void *)0,Task2Stk,1);
for(;;)
{ LED1 =1;
OSTimeDly(0x20);
LED1 =0;
OSTimeDly(0x20);
}
}
void Task2(void *pdata)
{
OSTaskCreate(Task3,(void *)0,Task3Stk,2);
for(;;)
{ LED2 =1;
OSTimeDly(0x40);
LED2 =0;
OSTimeDly(0x40);
}
}
void Task3(void *pdata)
{
OSTaskCreate(Task4,(void *)0,Task4Stk,3);
for(;;)
{
LED3 =1;
OSTimeDly(0x80);
LED3 =0;
OSTimeDly(0x80);
}
}
void Task4(void *pdata)
{
OSTaskCreate(LCDTask,(void *)0,LCDTaskStk,4);
for(;;)
{
LED4 =1;
OSTimeDly(0xA0);
LED4 =0;
OSTimeDly(0xA0);
}
}
void LCDTask(void *pdata)
{
char str_time[17];
char str_proc[4];
INT32U ui32_Time;
INT8U ui8_Proc;
// Initialize the LCD
OpenXLCD(FOUR_BIT & LINES_5X7 & LINES_FLIP);
while(BusyXLCD());
WriteCmdXLCD(DON & CURSOR_OFF & BLINK_OFF); // display on
while(BusyXLCD());
WriteCmdXLCD(0b00000001); // display clear
while(BusyXLCD());
WriteCmdXLCD(ENTRY_CURSOR_INC & ENTRY_DISPLAY_NO_SHIFT); // entrymode
while(BusyXLCD()); // Wait if LCD busy
SetDDRamAddr(0x0); // Set Display data ram address to 0
putsXLCD(rstr_welcome);
for(;;)
{
ui32_Time = OSTimeGet();
ultoa(ui32_Time, str_time);
btoa(OSCPUUsage, str_proc);
while(BusyXLCD()); // Wait if LCD busy
SetDDRamAddr(0x40); // Set Display data ram address to 0
putsXLCD(str_time);
while(BusyXLCD()); // Wait if LCD busy
SetDDRamAddr(0x4E); // Set Display data ram address to 0
putsXLCD(str_proc);
if(strlen(str_proc) < 2) // If two characters wouldn't have been
{ // written, then write the second one.
while(BusyXLCD());
putcXLCD(' ');
}
OSTimeDly(10);
}
}
// initialization
void Initialize(void)
{
ADCON1=0x0E; // all ad conversion disable at this system
PORTA=0x00;
LATA=0x00;
TRISA=0x00;
PORTB=0xF0;
LATB=0xF0;
TRISB=0xF0;
PORTC=0x00;
LATC=0x80;
TRISC=0x80;
PORTD=0x00;
LATD=0x00;
TRISD=0x00;
PORTE=0x00;
LATE=0x00;
TRISE=0x00;
}
//main rouitine
void main(void)
{ Initialize();
OSInit();
OSTaskCreate(Task1,(void *)0,Task1Stk,0);
OSStart();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -