?? rtx_ex1.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 + -