使用RTX51 Tiny系统给串口发送——显示时间
生活随笔
收集整理的這篇文章主要介紹了
使用RTX51 Tiny系统给串口发送——显示时间
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??1?/**************************************************************
??2?????????????????????設計一個時鐘程序?使用RTX51?Tiny?系統?
??3???????????????????????????????????????串口發送顯示時間
??4?***************************************************************/
??5?
??6?#include<rtx51tny.h>//記得一定要包括這個頭文件
??7?#include<sst89x5xxrd2.h>
??8?
??9?#define?INIT_0 0?/*?任務號0??INIT_0????????????*/
?10?#define?chuli_1 1???????????????????
?11?#define?UARTSEND_2 2??/*?任務號2??UARTSEND_2?????????*/
?12?
?13?#define?u8?unsigned??char
?14?#define?u16?unsigned??int
?15?
?16?u8?Time[]={'0','0',':','0','0',':','0','0','?'};//時間格式?00:00:00
?17?
?18?void?UARTInt()//串口初始化
?19?{
?20????????????????
?21????SCON="0x40";??/*?串口模式1?8位數據?波特率可變*/
?22????TMOD="0x21";
?23????PCON="0x00";
?24????TH1=0xFA;????/*定時器1?工作方式2??自動裝載?波特率?9600*/
?25????TL1=0xFA;
?26????ET1=0;
?27????TR1=1;?????
?28?}
?29?
?30?void?init?(void)_task_?INIT_0?//任務0?初始化系統
?31?{
?32????UARTInt();
?33????BB="0";
?34???//?Timer1_int();
?35????os_create_task(chuli_1);//創建任務1
?36????os_create_task(UARTSEND_2);//創建任務2
?37????os_delete_task(INIT_0);//刪除不再執行的任務0
?38???}
?39?
?40?void?dis??(void)_task_?chuli_1//任務1
?41?{
?42?????while(1)
?43?????{
?44??????Time[7]=Time[7]++;
?45?
?46???if(Time[7]==0x3A)??//秒個位
?47?????{
?48??????Time[7]=0x30;
?49??????Time[6]++;?//進位
?50?????}
?51?
?52????if(Time[6]==0x36)??//秒十位
?53???????{
?54??????Time[6]=0x30;
?55???Time[4]++;
?56?????}
?57?
?58?????if(Time[4]==0x3A)??//分個位
?59???????{
?60??????Time[4]=0x30;
?61???Time[3]++;
?62?????}
?63?
?64?????if(Time[3]==0x36)??//分十位
?65???????{
?66??????Time[3]=0x30;
?67??????Time[1]++;
?68?????}
?69?
?70????if(Time[0]=='2')
?71???{?
?72?????if(Time[1]=='4')
?73?????{
?74??????Time[1]='0';
?75??????Time[0]='0';
?76?????}
?77????}
?78??????if(Time[1]==0x3A)??//小時個位
?79???????{
?80??????Time[1]=0x30;
?81???Time[0]++;
?82?????}
?83??
?84?????if(Time[0]==0x33)??//小時十位
?85????????{
?86??????Time[0]=0x30;
?87?????}
?88?????os_wait(K_IVL,200,0);???????????????//等待1s????
?89?????os_send_signal(UARTSEND_2);//發送信號給任務2?
?90???}???
?91?}?
?92?
?93?void?send??(void)_task_?UARTSEND_2???//任務2
?94?{
?95????u8?i;
?96????while(1)
?97????{
?98??????os_wait(K_SIG,0,0);//接收信號?才開始執行任務2
?99??????for(i=0;i<9;i++)?????????//發送時間?
100???{
101????SBUF="Time"[i];
102????while(!TI);?//等待發送完畢
103????TI="0";
104???}
105??????}?????
106?}
107?
108?
??2?????????????????????設計一個時鐘程序?使用RTX51?Tiny?系統?
??3???????????????????????????????????????串口發送顯示時間
??4?***************************************************************/
??5?
??6?#include<rtx51tny.h>//記得一定要包括這個頭文件
??7?#include<sst89x5xxrd2.h>
??8?
??9?#define?INIT_0 0?/*?任務號0??INIT_0????????????*/
?10?#define?chuli_1 1???????????????????
?11?#define?UARTSEND_2 2??/*?任務號2??UARTSEND_2?????????*/
?12?
?13?#define?u8?unsigned??char
?14?#define?u16?unsigned??int
?15?
?16?u8?Time[]={'0','0',':','0','0',':','0','0','?'};//時間格式?00:00:00
?17?
?18?void?UARTInt()//串口初始化
?19?{
?20????????????????
?21????SCON="0x40";??/*?串口模式1?8位數據?波特率可變*/
?22????TMOD="0x21";
?23????PCON="0x00";
?24????TH1=0xFA;????/*定時器1?工作方式2??自動裝載?波特率?9600*/
?25????TL1=0xFA;
?26????ET1=0;
?27????TR1=1;?????
?28?}
?29?
?30?void?init?(void)_task_?INIT_0?//任務0?初始化系統
?31?{
?32????UARTInt();
?33????BB="0";
?34???//?Timer1_int();
?35????os_create_task(chuli_1);//創建任務1
?36????os_create_task(UARTSEND_2);//創建任務2
?37????os_delete_task(INIT_0);//刪除不再執行的任務0
?38???}
?39?
?40?void?dis??(void)_task_?chuli_1//任務1
?41?{
?42?????while(1)
?43?????{
?44??????Time[7]=Time[7]++;
?45?
?46???if(Time[7]==0x3A)??//秒個位
?47?????{
?48??????Time[7]=0x30;
?49??????Time[6]++;?//進位
?50?????}
?51?
?52????if(Time[6]==0x36)??//秒十位
?53???????{
?54??????Time[6]=0x30;
?55???Time[4]++;
?56?????}
?57?
?58?????if(Time[4]==0x3A)??//分個位
?59???????{
?60??????Time[4]=0x30;
?61???Time[3]++;
?62?????}
?63?
?64?????if(Time[3]==0x36)??//分十位
?65???????{
?66??????Time[3]=0x30;
?67??????Time[1]++;
?68?????}
?69?
?70????if(Time[0]=='2')
?71???{?
?72?????if(Time[1]=='4')
?73?????{
?74??????Time[1]='0';
?75??????Time[0]='0';
?76?????}
?77????}
?78??????if(Time[1]==0x3A)??//小時個位
?79???????{
?80??????Time[1]=0x30;
?81???Time[0]++;
?82?????}
?83??
?84?????if(Time[0]==0x33)??//小時十位
?85????????{
?86??????Time[0]=0x30;
?87?????}
?88?????os_wait(K_IVL,200,0);???????????????//等待1s????
?89?????os_send_signal(UARTSEND_2);//發送信號給任務2?
?90???}???
?91?}?
?92?
?93?void?send??(void)_task_?UARTSEND_2???//任務2
?94?{
?95????u8?i;
?96????while(1)
?97????{
?98??????os_wait(K_SIG,0,0);//接收信號?才開始執行任務2
?99??????for(i=0;i<9;i++)?????????//發送時間?
100???{
101????SBUF="Time"[i];
102????while(!TI);?//等待發送完畢
103????TI="0";
104???}
105??????}?????
106?}
107?
108?
?
?
心得:
?1、我覺得定義任務的名稱也最好加上任務的序號,像任務1 定義為 chuli_1
?2、開始一定要建立一個任務,一定要使用至少一個系統函數。
?3、每個任務里的程序一定是類似與while(1)循環結構,程序是從任務0開始執行。
4、os_create_task(n); n的范圍是0~15 作用的建立一個任務,任務的優先級系統默認全是0,即最低級;
5、os_delete_task(n);是刪除一個任務,讓它不再執行。
6、os_wait(a,b,c);是個等待函數,a有3中形式,K_TMO,K_IVl,K_SIG??,分別表示等待超時,等待間隔,等待信號。
?
?
轉載于:https://www.cnblogs.com/lizunicon/archive/2009/05/31/1492907.html
總結
以上是生活随笔為你收集整理的使用RTX51 Tiny系统给串口发送——显示时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清华大学android源码下载网站地址
- 下一篇: 计算机图形学——大作业