?? 秒分程序.c
字號:
/*
** RTX-51的移植
** 移植到AT89S52
** 此程序是分秒程序
** 有六個數碼管來顯示毫秒,秒,分鐘
*/
#include <reg51.h>
#include <rtx51tny.h>
#define uchar unsigned char
#define uint unsigned int
const unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar minuter;
uchar second;
uchar micsecond;
uchar minuterh;
uchar minuterl;
uchar secondh;
uchar secondl;
uchar micsecondh;
uchar micsecondl;
void job0 (void) _task_ 0
{
micsecond = 0x00;
second = 0x00;
minuter =0x00;
micsecondh = micsecond /10;
micsecondl = micsecond %10;
secondh = second /10;
secondl = second %10;
minuterh = minuter /10;
minuterl = minuter %10;
os_create_task(1);//創建進程1
os_create_task(2);//創建進程1
os_create_task(3);//創建進程1
os_delete_task(0);//刪除任務0
}
void job1 (void) _task_ 1
{
while(1)
{
micsecond ++;
micsecondh = micsecond /10;
micsecondl = micsecond %10;
if(micsecond==100)
{
micsecond = 0;
os_send_signal(2); //發送Signal信號,激活進程2
}
os_wait(K_TMO,1,0);
}
}
void job2 (void) _task_ 2
{
while(1)
{
os_wait(K_SIG,0,0);
second ++;
if(second == 60)
{
second = 0;
minuter ++;
}
secondh = second /10;
secondl = second %10;
minuterh = minuter /10;
minuterl = minuter %10;
}
}
void job3 (void) _task_ 3
{
while(1)
{
P2 = 0x20;
P0 = table[micsecondl];
os_wait(K_TMO,1,0);
P2 = 0x10;
P0 = table[micsecondh];
os_wait(K_TMO,1,0);
P2 = 0x08;
P0 = table[secondl];
os_wait(K_TMO,1,0);
P2 = 0x04;
P0 = table[secondh];
os_wait(K_TMO,1,0);
P2 = 0x02;
P0 = table[minuterl];
os_wait(K_TMO,1,0);
P2 = 0x01;
P0 = table[minuterh];
os_wait(K_TMO,1,0);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -