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

📄 ext1.c

📁 在51上运行的小的OS系统
💻 C
字号:
#include "stdio.h"
#include "config.h"

sbit EN=P3^2;
sbit RW=P3^3;
sbit RS=P3^4;
sbit VO=P3^5;

void InitLcd(void);
void WriteData(unsigned char ch);
void WriteCmd(unsigned char ch);
void DelayS(void);
void wait_5ms( void );
void Disp_Char(unsigned char pos,unsigned char ch);
void Disp_Str(unsigned char line,char* str);

unsigned char sec,min,hour,i;
char buffer[21];

void main(void)
{
	TMOD = (TMOD & 0XF0) | 0X01;
	TL0 = 0x0;
	TH0 = 0x0;
	TR0 = 1;
	ET0 = 1;
   
    SCON  = 0x52;                      /* mode 1: 8-bit UART, enable receiver   */
    TMOD |= 0x20;                      /* timer 1 mode 2: 8-Bit reload          */
    TH1   = 0xfd;                      /* reload value 9600 baud                */
    TR1   = 1;                         /* timer 1 run                           */
    wait_5ms();
    InitLcd();
    wait_5ms();
    VO = 0;  
    
	Disp_Str(0," Small RTOS51 V1.20 ");
	Disp_Str(1," Current Time is:   ");
	wait_5ms();
    Disp_Str(2,"                    ");
	Disp_Str(3," Created by ArcDevil");

               
	OSStart();
}

void TaskA(void)
{
    while (1)
    {
        if (++sec == 60)  
		{        
	      sec = 0;
	      if (++min == 60) 
		  {      
	        min = 0;
	        if (++hour == 24)  
			{   
	          hour = 0;
	        }
	      }
	    }
		sprintf(buffer, "      %02bd:%02bd:%02bd      ",         
                 hour,                  
                 min,
                 sec);
        Disp_Str(2,buffer);
        OSWait(K_TMO,10);
    } 
}

void TaskB(void)
{
    while (1)
    {
	    Disp_Str(3,"Written  @20041022||");
        OSWait(K_TMO,50);
    }
}

void TaskC(void)
{
    while (1)
    {
	    Disp_Str(3,"TaskC is Running!   ");
        OSWait(K_TMO,100);
    }
}

void InitLcd(void)
{     
     wait_5ms();
	 wait_5ms();
	 wait_5ms();
	 WriteCmd(0x38);
	 wait_5ms();
	 WriteCmd(0x38);
	 wait_5ms();
	 WriteCmd(0x38);
	 wait_5ms();
     WriteCmd(0x38);
	 WriteCmd(0x06);
	 WriteCmd(0x0c);
	 WriteCmd(0x01);
	 WriteCmd(0x80);
}

void WriteData(unsigned char ch)
{
     DelayS();
     EN = 0;
     RS = 1;
     RW = 0;
     _nop_();
     EN = 1;
     P1 = ch;
     EN = 0;
     RS = 0;
}

void WriteCmd(unsigned char ch)
{
     DelayS();
     EN = 0;
     RS = 0;
     RW = 0;
     _nop_();
     EN = 1;
     P1 = ch;
     EN = 0;
}

void DelayS(void)
{
     unsigned char i;
	 i = 0x1f;
	 while(i--);
}

void wait_5ms( void ) 
{
	register int i ;
	for ( i=0 ; i<1000 ; i++ )
		;
}

void Disp_Char(unsigned char pos,unsigned char ch)
{
	unsigned char p,x,y;
    y = pos/20;
	x = pos%20;
    switch(y)
	{
	    case 0: p = x + 0x80; break;
        case 1: p = x + 0xc0; break;
		case 2: p = x + 0x94; break;
		case 3: p = x + 0xd4; break;
		default:break;
	}
    WriteCmd(p);
    WriteData(ch);
}

void Disp_Str(unsigned char line,char* str)
{
     unsigned char l,i;
	 l = line*20;
	 for(i = 0 ; i < 20 ; i++)
	    Disp_Char(l++,*(str+i));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -