




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)程序結(jié)構(gòu)單片機(jī)程序結(jié)構(gòu)void main() sysinit(); moduleInit(); while(1) if(!ADTimer) ADTimer=500; 處理AD數(shù)據(jù); if(!KeyTimer) KeyTimer=10; 掃描按鍵; if(!LEDTimer) LEDTimer=2; 掃描LED; if(hp!=rp) 處理串行接口數(shù)據(jù); 單片機(jī)程序結(jié)構(gòu)void SysTick_Handler() if(ADTimer) ADTimer-; if(KeyTimer) KeyTimer-; if(LEDTimer) LEDTimer-;時間片輪詢法架構(gòu)1.設(shè)計一個結(jié)構(gòu)體:/
2、任務(wù)結(jié)構(gòu)typedef struct _TASK_COMPONENTS uint8 Run; / 程序運行標(biāo)記:0-不運行,1運行 uint8 Timer; / 計時器 uint8 ItvTime; / 任務(wù)運行間隔時間 void (*TaskHook)(void); / 要運行的任務(wù)函數(shù) TASK_COMPONENTS; 時間片輪詢法架構(gòu)2. 任務(wù)運行標(biāo)志出來,此函數(shù)就相當(dāng)于中斷服務(wù)函數(shù),需要在定時器的中斷服務(wù)函數(shù)中調(diào)用此函數(shù),這里獨立出來,并于移植和理解。voidTaskRemarks(void) uint8 i; for (i=0; iTask_Max;i+)/逐個任務(wù)時間處理 if (
3、TaskCompsi.Timer) / 時間不為0 TaskCompsi.Timer-; / 減去一個節(jié)拍 if (TaskCompsi.Timer = 0) / 時間減完了 TaskCompsi.Timer = TaskCompsi.ItvTime; / 恢復(fù)計時器值 TaskCompsi.Run = 1; / 任務(wù)可以運行 時間片輪詢法架構(gòu)3. 任務(wù)處理,主程序中調(diào)用voidTaskProcess(void) uint8 i; for (i=0; iTASKS_MAX; i+) /逐個任務(wù)時間處理 if (TaskCompsi.Run) / 時間不為0 TaskCompsi.TaskHoo
4、k(); / 運行任務(wù) TaskCompsi.Run = 0; / 標(biāo)志清0 時間片輪詢法架構(gòu)4. 應(yīng)用建立任務(wù)static TASK_COMPONENTS TaskComps = 0, 1000, 1000, TaskDisplayClock, / 顯示時鐘 0, 10, 10, TaskKeyScan, / 按鍵掃描 0, 5, 5, TaskLedScan, / 動態(tài)刷新LED / 可以繼續(xù)添加任務(wù)。; 時間片輪詢法架構(gòu)4. 應(yīng)用編寫各個任務(wù)函數(shù)void TaskDisplayClock() void TaskKeySan() void TaskLedScan() 時間片輪詢法架構(gòu)4.
5、應(yīng)用編寫主函數(shù)void main(void) InitSys(); / 初始化 while (1) TaskProcess(); / 任務(wù)處理 按鍵掃描程序unsigned char read_key(void) unsigned char key_press; /按鍵是否被按下 unsigned char key_return = 0; /按鍵返回值 key_press = key_sr1; / 讀按鍵I/O電? if(!key_press) delay(10); key_press = key_sr1; / 讀按鍵I/O電? if(!key_press) key_return = 1; 狀
6、態(tài)機(jī)按鍵掃描程序按鍵初始狀態(tài)按鍵按下狀態(tài)按鍵釋放狀態(tài)I/O口低電平I/O口高電平I/O口高電平I/O口低電平I/O口低電平I/O口高電平執(zhí)行按鍵動作按鍵掃描程序/*名 稱:狀態(tài)機(jī)按鍵掃描功 能:運用狀態(tài)機(jī)思想,實現(xiàn)按下按鍵LED點亮,再按一下LED燈熄滅。作 者:創(chuàng)建時間:2014年12月14日修改時間:備 注:*/#include /頭文件#includeKey_State.h /按鍵掃描頭文件 sbit Led = P07; /LED燈輸出unsigned char Key_Number = 0; /按鍵值 按鍵掃描程序/*函數(shù)名稱:主程序功 能:程序執(zhí)行的入口返 回 值:無時 間:201
7、4-12-14 備 注:*/void main() while(1) if(!Key_Timer) Key_Timer=10; /在定時器內(nèi)每1Ms增1 Key_Number = read_key(); /按鍵掃描函數(shù),取得按鍵值,10MS調(diào)用一次 if(Key_Number = 1) /按鍵返回值是1 Led = Led; /LED燈取反 按鍵掃描程序Key_State.c#include sbit key_sr1 = P16; / 按鍵輸入口 #define key_state_0 0 /按鍵的初始狀態(tài)#define key_state_1 1 /按鍵按下的狀態(tài)#define key_st
8、ate_2 2 /按鍵釋放的狀態(tài)按鍵掃描程序 /*函數(shù)名稱:按鍵掃描程序功 能:檢測按鍵,并返回按鍵值返 回 值:key_press時 間:2014-12-14 備 注:*/unsigned char read_key(void) static char key_state = 0; /按鍵的狀態(tài) unsigned char key_press; /按鍵是否被按下 unsigned char key_return = 0; /按鍵返回值 key_press = key_sr1; / 讀按鍵I/O電? switch (key_state) return key_return; /返回按鍵值按鍵掃
9、描程序 switch (key_state) case key_state_0: / 按鍵初始態(tài) break; case key_state_1: / 按鍵確認(rèn)態(tài) break; case key_state_2: /按鍵釋放的狀態(tài) break; 按鍵掃描程序 case key_state_0: / 按鍵初始態(tài) if (!key_press) key_state = key_state_1;/ 鍵被按下,狀態(tài)轉(zhuǎn)換到鍵確認(rèn)態(tài) break; case key_state_1: / 按鍵確認(rèn)態(tài) if (!key_press) key_return = 1; / 按鍵仍按下,按鍵確認(rèn)輸出為“1” key_state = key_state_2;/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六一游園運球活動方案
- 蘭州市政府春節(jié)活動方案
- 研究院考試試題及答案
- 學(xué)生憲法考試試題及答案
- 關(guān)于變廢為寶活動方案
- 關(guān)于商品營銷活動方案
- 就業(yè)教育模式創(chuàng)新與數(shù)字化轉(zhuǎn)型對人才培養(yǎng)的要求
- 高職院校獸醫(yī)文化融入的必要性分析
- 輕度智力障礙兒童粗大運動能力的現(xiàn)狀分析
- 社會力量參與鄉(xiāng)村職業(yè)教育的可行性與成效
- 【MOOC】經(jīng)濟(jì)數(shù)學(xué)-微積分(二)-武漢理工大學(xué) 中國大學(xué)慕課MOOC答案
- 《藥物代謝學(xué)》課程教學(xué)大綱
- 起重機(jī)械吊具、索具檢查記錄表(鋼絲繩)
- 中學(xué)籃球社團(tuán)教案全套
- 信息科技大單元教學(xué)設(shè)計之七年級第二單元直播網(wǎng)絡(luò)我來建
- 湖北省部分高中2025屆高三上學(xué)期11月(期中)聯(lián)考語文試題(含答案)
- 2024年山東省青島市中考地理試題卷(含答案及解析)
- 2024秋期國家開放大學(xué)本科《經(jīng)濟(jì)學(xué)(本)》一平臺在線形考(形考任務(wù)1至6)試題及答案
- 2024版《大學(xué)生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo)》 課程教案
- 北師大版五年級下冊解方程練習(xí)100道及答案
- 形勢與政策智慧樹知到答案2024年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院
評論
0/150
提交評論