?? taskexcu.c
字號:
#define Test1_GLOBALS
#include "includes.h"
#include <iom16v.h>
#include <macros.h>
#include <stdio.h>
#include "prototype.h"
#pragma interrupt_handler OSTickISR:5
//******************************************************************************
// Constants
#define TaskStartPrio 10 // Task-Prioritaeten
//*****************************************************************************
// Variablen
INT8U time[6];
INT8U h,m,s,state;
OS_STK Task1Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE];
//ICC-AVR application builder : 2003-12-28 21:52:56
// Target : M8
// Crystal: 8.0000Mhz
//*****************************************************************************
// Prototypes
//*****************************************************************************
// TickISR
//*****************************************************************************
// Init Timer/Counter2 fuer Takterzeugung
void TC2_Init (void)
{
/* Only uses TIMER2 overflow for tick interrupt. Timer compare
* can also be used.
*/
TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */); //disable TC2 interrupts
TCCR2 = 0x48; // CTC
TCNT2 = 0; // Counter ruecksetzen, 2ms @ 8MHz
TCCR2 |= 0x06; // 256
OCR2 = 250; // OutputCompareRegister
TIMSK |= BIT(TOIE2); // enable OVF-interrupt
//TIMSK |= OCIE2; // enable COMP-interrupt
SEI(); // enable global interrupt
}
//*****************************************************************************
// Interrupt Timer/Counter0 Overflow
// OVF_Takt: 8MHz / 256 / 250 = 125Hz (8ms)
void Task1(void *pdata);
void Task2(void *pdata);
//*****************************************************************************
// Start
void main(void)
{
OSInit(); // OS init
OSTaskCreate(Task1,
(void *)0,
&Task1Stack[OS_TASK_DEF_STK_SIZE-1],
7);
OSTaskCreate(Task2,
(void *)0,
&Task2Stack[OS_TASK_DEF_STK_SIZE-1],
8);
// init und start tick
TC2_Init(); // Timer/Counter#2 Overflow and Comp init
Board_init();
OSStart(); // start multitasking
}
//*****************************************************************************
void Task1(void *data)
{
uchar i;
data = data;
state = 1;
for (;;)
{
DS1302_getT(time);
for(i=0;i<3;i++)
{
time[i*2+1]=time[i*2]>>4;
time[i*2]=time[i*2]&0x0F;
}
All_smg_display(time);
OSTimeDly (1);
}
}
void Task2(void *data)
{
uchar i=0;
data = data;
//OSTimeDly(5);
for (;;)
{
if(i<8)
{
All_led(0); //全部熄滅
One_led(i,1); //點亮指定的LED;
i=i+1;
}
else
{
i=0;
}
OSTimeDly (15);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -