⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 秒分程序.c

📁 我自己做的一个proteus仿真实例
💻 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 + -