?? ex4.c
字號:
#include "includes.h"
#include "ioports.h"
#define IMR *(volatile unsigned int*)0x00
#define IFR *(volatile unsigned int*)0x01
#define TASK_STK_SIZE 256 /* Size of each task's stacks (# of WORDs) */
#define N_TASKS 2 /* Number of identical tasks */
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */
OS_STK task_startStk[TASK_STK_SIZE];
#define ADJUST_DSP_CLK clk_adjust
unsigned int seg7[16] =
{0x03f|0x80, 0x006, 0x05b, 0x04f, 0x066, 0x06d, 0x07d, 0x007,
0x07f, 0x06f, 0x077, 0x07c, 0x039, 0x05e, 0x079, 0x071};
/* mailbox event control blocks */
OS_EVENT *DispSem;
void task_start(void *data);
void task_led(void *data);
void task_segs(void *data);
void hard_delay(int cnt)
{
while(cnt--);
}
void clk_adjust()
{
asm(" stm #0b, CLKMD ");
asm("ChkForRdy: ");
asm(" ldm CLKMD, A ");
asm(" and #01b, A ");
asm(" bc ChkForRdy, ANEQ ");
asm(" stm #33efh, CLKMD ");
asm(" rpt #80h ");
asm(" nop ");
}
void main()
{
/* 板卡IO端口及外設初始狀態初始化 */
LED_DAT = 0x01;
ADJUST_DSP_CLK();
INIT_C54();
OSInit();
OSTaskCreate(task_start, (void *)0,
(void *)&task_startStk[TASK_STK_SIZE - 1], 0);
OSStart();
while(1);
}
void task_start(void *data)
{
UBYTE err;
OS_ENTER_CRITICAL();
StartTimer(); /* install the C54x Timer */
OS_EXIT_CRITICAL();
DispSem = OSSemCreate( 1 ); /* Display semaphore */
OSTaskCreate(task_led, (void *)0,
(void *)&TaskStk[0][TASK_STK_SIZE - 1], 2);
OSTaskCreate(task_segs, (void *)0,
(void *)&TaskStk[1][TASK_STK_SIZE - 1], 3);
for (;;) {
err++;
OSTimeDly(100); /* Delay 100 clock tick */
}
}
void task_led(void *data)
{
int index = 0;
INT8U err;
for( index = 0; ; index++)
{
OSSemPend(DispSem, 0, &err);
LED_DAT = 0x01<<(index&0x07);
}
}
void task_segs(void *data)
{
int data_index;
int loop;
for(data_index = 0 ; ; data_index++)
{
OSSemPost(DispSem);
for(loop = 0; loop < 80; loop++)
{
show_seg7(1, seg7[(data_index+0)%10]);
show_seg7(2, seg7[(data_index+1)%10]);
show_seg7(3, seg7[(data_index+2)%10]);
show_seg7(4, seg7[(data_index+3)%10]);
show_seg7(5, seg7[(data_index+4)%10]);
show_seg7(6, seg7[(data_index+5)%10]);
show_seg7(7, seg7[(data_index+6)%10]);
show_seg7(8, seg7[(data_index+7)%10]);
}
}
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -