- 註冊時間
- 2012-3-16
- 最後登錄
- 2024-11-8
- 主題
- 查看
- 積分
- 173
- 閱讀權限
- 40
- 文章
- 223
- 相冊
- 0
- 日誌
- 0
狀態︰
離線
|
本帖最後由 if8051 於 2014-7-12 08:46 編輯
單晶片微電腦 8051 使用 Keil C compiler 是很普遍的情形,但很奇怪!
明明 Keil C 有內建的 RTX51 Tiny Real-Time Operating System
許多人就是不會好好的利用,可能是老師沒有教,所以不會運用!
簡單好用的 RTOS 不會使用,如同自廢武功!
如今在此提供一個昨日完工的案子 source code 供參考。
若要使用 RTOS 需要變更設定
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.
完整 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; // 硬體不會自動清除,必須以軟體清除
- }
複製代碼 |
-
總評分: 威望 + 2
查看全部評分
|