SOGO論壇
標題:
Keil C RTOS 的使用
[列印本頁]
作者:
if8051
時間:
2014-7-11 17:11:52
標題:
Keil C RTOS 的使用
本帖最後由 if8051 於 2014-7-12 08:46 編輯
單晶片微電腦 8051 使用 Keil C compiler 是很普遍的情形,但很奇怪!
明明 Keil C 有內建的 RTX51 Tiny Real-Time Operating System
許多人就是不會好好的利用,可能是老師沒有教,所以不會運用!
簡單好用的 RTOS 不會使用,如同自廢武功!
如今在此提供一個昨日完工的案子 source code 供參考。
若要使用 RTOS 需要變更設定
2014-7-11 17:03:37 上傳
下載附件
(69.09 KB)
RTX51TNY.H
Prototypes for RTX51 Tiny Real-Time Operating System Version 2.02
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
2014-7-11 17:05:07 上傳
下載附件
(99.37 KB)
完整 source code 如下:
#include <at89x52.h>
#include <rtx51tny.h>
void startProgram( ) _task_ 0 // 程式進入點
{
EA=1; // 開啟總中斷
ET2=1; // IE bit 5 T2 overflow interrupt 控制 enable
TH2=(65536-16300)/256; // 設定 T2 初始值
TL2=(65536-16300)%256;
RCAP2H=(65536-16300)/256; // 16 bit Auto-Reload Mode
RCAP2L=(65536-16300)%256; // 溢位發生 TF2 = 1 RCAP2H 及 RCAP2L 值,分別被載入 TH2 及 TL2
TR2=1; // 啟動 T2 開始計時
WDTRST=0x1e; // WDE 啟動看門狗計時器
WDTRST=0xe1; // 14 bit 3FFF 16384 uS
// 啟動之後就無法停止,除非硬體 RESET 或是 WDT RESET 自動開機
os_create_task(1); // CPU monitor 2S clock
os_create_task(2); // 主程式
os_create_task(3); // counter
os_delete_task(0); // 結束此 task
}
void cpuMonitor( ) _task_ 1 // CPU 監督程式
{ // 用於監控 軟體是否當機,硬體是否故障(常 Low )
while(1)
{
P2_2=!P2_2; // P2.2 ON 1 秒 OFF 1 秒
os_wait2(K_IVL,100); // 每間隔 1 秒
}
}
void controlProgram( ) _task_ 2 // motor 控制主程式
{
while(1)
{
while(P1_0) // 機械原點
P0_6=0; // motor CCW
while(!P1_1); // 確定開關放開
P0_6=1;
os_wait2(K_TMO,20); // delay 0.2S
while(P1_1)
P0_5=0; // motor CW
while(!P1_0); // 確定開關放開
P0_5=1;
os_wait2(K_TMO,20); // delay 0.2S
os_send_signal(3); // 送個信號給 task 3
}
}
void counter( ) _task_ 3 // counter function
{
while(1)
{
os_wait1(K_SIG); // 等待接收信號
P0_4=0;
os_wait2(K_TMO,30); //delay 0.3S
P0_4=1;
}
}
void watchdogTimerReset() interrupt 5 // T2 interrupt subrouting
{ // 當機超過 16300 uS 自動開機,避免死當
WDTRST=0x1e; // WDT 上數到 16300 uS WatchDog Timer Reset
WDTRST=0xe1; // 未當機之前 WatchDog Timer Reset
TF2=0; // 硬體不會自動清除,必須以軟體清除
}
複製代碼
附件:
1.jpg
(2014-7-11 17:03:37, 69.09 KB) / 下載次數 2
https://oursogo.com/forum.php?mod=attachment&aid=ODM2Mzg2NXw4OTcxMDVhZXwxNzMyNTI0OTAwfDB8MA%3D%3D
附件:
2.jpg
(2014-7-11 17:05:07, 99.37 KB) / 下載次數 4
https://oursogo.com/forum.php?mod=attachment&aid=ODM2Mzg2Nnw3YjA1NGJlNXwxNzMyNTI0OTAwfDB8MA%3D%3D
作者:
zaq1234
時間:
2014-7-23 21:07:17
謝謝大大讓我受益良多
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM