📄 text1.c
字号:
/******************************************************************************/
/* */
/* Task 0: Create other Tasks and Count up Every 5 ticks */
/* */
/******************************************************************************/
#include <rtx51tny.h> /* RTX-51 tiny functions & defines */
#include <reg52.h>
typedef unsigned char uchar;
uchar Led1Data;
uchar Led2Data;
uchar Led3Data;
uchar Led4Data;
uchar TH2DataTmp;
uchar TL2DataTmp;
uchar TH1DataTmp;
uchar TL1DataTmp;
uchar Timeflag1;
uchar Timeflag2;
uchar LedTable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar bdata flagp;
sbit flag0=flagp^0;
sbit flag1=flagp^1;
void MCUInit(void);
void LedProgram(void);
void FrequnceOut(void);
/******************************************************************************/
/* Task 0 'job0': RTX-51 tiny starts execution with task 0 */
/******************************************************************************/
void job0 (void) _task_ 0 {
os_create_task (1); /* start task 1 */
// os_create_task (2); /* start task 2 */
// os_create_task (3); /* start task 3 */
MCUInit();
while (1) { /* endless loop */
LedProgram(); /* led */
os_wait2 (K_TMO, 1); /* wait for timeout: 5 ticks */
}
}
void job1 (void) _task_ 1 {
while (1) { /* endless loop */
os_wait1 (K_SIG); /* wait for sigle */
FrequnceOut();
Timeflag1 = 0;
Timeflag2 = 0;
TH2 = 0;
TL2 = 0;
IE0 = 0;
EX0 = 1;
}
}
void LedProgram(void)
{
P2 |= 0x3f;
P0 = LedTable[Led1Data];
P2 &= 0xfb;
os_wait2 (K_TMO, 1);
P2 |= 0x3f;
P0 = LedTable[Led2Data]&0x7f;
P2 &= 0xf7;
os_wait2 (K_TMO, 1);
P2 |= 0x3f;
P0 = LedTable[Led3Data];
P2 &= 0xef;
os_wait2 (K_TMO, 1);
P2 |= 0x3f;
P0 = LedTable[Led4Data];
P2 &= 0xdf;
os_wait2 (K_TMO, 1);
P2 |= 0x3f;
}
void MCUInit(void)
{
IE |= 0xa1;
TCON|= 0x05;
IP = 0x25;
TMOD|= 0x11;
//T2CON= 0x01;
}
void FrequnceOut(void)
{
unsigned long FTemp;
unsigned long DataTmp;
//FTemp =((TH1DataTmp*256+TL1DataTmp)/(Timeflag*65536+TH2DataTmp*256+TL2DataTmp))*3600;
FTemp = /*Timeflag2*65536+*/TH1DataTmp*256+TL1DataTmp;
FTemp *= 3600;
DataTmp = Timeflag1*65536+TH2DataTmp*256+TL2DataTmp;
DataTmp = FTemp/DataTmp;
Led4Data = (DataTmp%10000)/1000;
Led3Data = (DataTmp/100)%10;
Led2Data = DataTmp%100/10;
Led1Data = DataTmp%10;
flag0 = 0;
}
void Int0Interrupt(void) interrupt 0
{
if(flag0 == 0){
TR2 = 1;
TR1 = 1;
//ET2 = 1;
IE1 = 0;
EX1 = 1;
// EXEN2 = 1;
// EXF2= 0;
flag0 = 1;
}
else {
TR2 = 0;
//ET2 = 0;
EX0 = 0;
TH2DataTmp = TH2;
TL2DataTmp = TL2;
flag0 = 0;
isr_send_signal(1);
}
}
void Int1Interrupt(void) interrupt 2
{
TR1 = 0;
EX1 = 0;
TH1DataTmp = TH1;
TL1DataTmp = TL1;
TH1 = 0;
TL1 = 0;
}
void Timer2Interrupt(void) interrupt 5
{
if(TF2==1){
Timeflag1++;
TF2 = 0;
}/*
else if(EXF2==1){
Timeflag2 = Timeflag1;
EXEN2 = 0;
EXF2 = 0;
TH1DataTmp = RCAP2H;
TL1DataTmp = RCAP2L;
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -