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

📄 rtx_ex1.c

📁 基于Proteus的51单片机实验平台
💻 C
字号:
/******************************************************************************/
/*                                                                            */
/*                   RTX_EX1.C:  The first RTX-51 Program                     */
/*                                                                            */
/******************************************************************************/

#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */
#include <reg52.h>
#include <51board.h>
#include <51BLCD.h>
#include <DS18B20.h>
#include <KeyScan.h>

uchar str_tmp[5]="     ";	//温度字符串
uchar str_key[16]="                ";//键盘输入字符缓冲
uint  tmp;//温度测量

//将int型数据t转换成10进制string型数据str
void Int_to_Str(uint t, uchar *str)
{
	uchar a[5];
	uchar i = 0;
    bit j = 0;

	a[0]=(t/10000)%10;         //取得整数值到数组  
	a[1]=(t/1000)%10;
	a[2]=(t/100)%10;
	a[3]=(t/10)%10;
	a[4]=(t)%10;

	for(i=0; i<5; i++)         //转成ASCII码
    {
     a[i]+='0';
	 if ((a[i] == 0x30)&&(j==0)) 
     {
      *str=' ';
     }
     else 
     {
      *str = a[i];
      j = 0x1;
     }
	  str++; 
	}
	*str='\0';
}

void Add_Dot(uchar num,uchar len, uchar *str)
{
	uchar i;
	for(i=len; i>num; i--)
    {
      *(str+i)=*(str+i-1);
     }

     *(str+num)='.';
}


//从任务0开始  
job0 () _task_ 0  
{
  os_create_task (1);
  os_create_task (2);
  os_create_task (3);  
  LCD_init();//初始化
  os_delete_task (0);
}

job1 () _task_ 1  
{
  uint temp;
  while (1)  
  {
    temp = ReadTemperature(); //读温度 
	if (temp != tmp) 
	{
	  tmp = temp;
	  os_send_signal (3);
	}
	os_wait (K_TMO, 10, 0);
  }
}

job2 () _task_ 2  
{
  uchar keynum;
  uchar j;
  bit key_flag;

  while (1)  
  {
    keynum = Key_Scan();	
    if ((keynum!=0xff) & key_flag )
	{
	  key_flag=0;	  
      for(j=0;j<16;j++) str_key[j]=str_key[j+1];
	  str_key[15]=keynum;
      LCD_w_data(2,1,str_key);	  	
	}
	else if (keynum == 0xff) key_flag = 1;

    os_wait (K_TMO, 1, 0);
  }
}

job3 () _task_ 3
{
  while (1)  
  {
	os_wait (K_SIG,0,0);
    Int_to_Str(tmp,str_tmp);
    Add_Dot(3,5,str_tmp);    //增加小数点 
    LCD_w_data(1,1,"Temperatur:");
    LCD_w_data(1,12,str_tmp);
  }
}

⌨️ 快捷键说明

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