freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機和cpld試驗開發(fā)板的設(shè)計-文庫吧資料

2025-06-29 15:40本頁面
  

【正文】 e = BM2。 beep_modle = BM2+0x10。beep_time = BM2 amp。 break。 beep_time = BM1。break。//開蜂鳴器 beep_time = BM0。//蜂鳴器發(fā)聲時間長度控制變量switch (beep_modle){case 0:break。//發(fā)聲模式選擇全局變量,其它任務(wù)中通過該變量啟動蜂鳴器發(fā)聲void task3_init(void){beep_modle = BM0。 蜂鳴器多模式發(fā)聲任務(wù)流程圖部分程序解讀如下: include /***蜂鳴器模式定義***/define BM0 0x01define BM1 0x02define BM2 0x11define BM3 0x22define ON 0define OFF 1define BUZZR(x) BUZZR=(x)sbit BUZZR = P1^0。 蜂鳴器發(fā)聲 蜂鳴器是 IO 口驅(qū)動的簡單開關(guān)控制,Mini51 板上的蜂鳴器是采用的有源蜂鳴器,接通電源就發(fā)出單 音頻聲音,單片機的控制只是控制其發(fā)聲時長和開關(guān)頻度,從而產(chǎn)生不同的效果,看似“接通”“延時”“斷 開”如此簡單的控制,如果考慮多任務(wù)模式,不用常規(guī)死循環(huán)延時(那樣極大的浪費 CPU 資源,不適合 多任務(wù)模式),還要實現(xiàn)多種發(fā)聲模式可選擇,這就需要我們突破傳統(tǒng)程序設(shè)計思路,這里還是基于定時 器中斷任務(wù)輪詢的思路,采用狀態(tài)機控制,程序流程圖如圖所示,這里實現(xiàn)了單次短發(fā)聲,單次長發(fā)聲, 連續(xù)短發(fā)聲,連續(xù)長發(fā)聲,根據(jù)需要還可以添加更多種發(fā)聲模式,這樣在其它需要發(fā)聲處,只要給出發(fā)聲模式即可。 lcd_put_xyns(1,2,16,str_buff+16)。}else if(fly_t 12) fly_t=0。//將顯示內(nèi)容用空白字符替換,產(chǎn)生閃爍效果if(fly_space!=15) str_buff[fly_space+1]=39。if(fly_t 3){str_buff[fly_space]=39。 //首先關(guān)閉閃爍標(biāo)志}void task1(void){static uchar fly_t=0。 39。i32。lcd1602_init()。 //定義全局顯示緩沖區(qū)uchar fly_space。閃爍控制原理是根據(jù)閃爍控制標(biāo)志位,周期替換顯示內(nèi)容為空白字符符。 //一次性讀取鍵值if(key_num != 0xff)//判斷是否有鍵按下{switch (state_dn)//采用狀態(tài)機記住前后按鍵變化情況{……}}else //按鍵釋放觸發(fā)任務(wù)執(zhí)行{switch (state_up){……}}} LCD 顯示 LCD 顯示刷新流程圖 LCD 顯示刷新流程圖如圖 4 所示,給 LCD 分配全局變量顯示緩沖區(qū)并在獨立任務(wù)中周期刷新顯示, 這樣做的好處是程序設(shè)計思路清晰,各任務(wù)獨立,程序可讀性好,缺點是占用太多內(nèi)存,沒有更新的數(shù)據(jù) 也不斷刷新,浪費了 CPU 資源。 //長按鍵計數(shù)器,控制長按鍵時間uchar key_num。 //有鍵按下狀態(tài)機變量static uchar state_up = 0。//長按鍵連續(xù)執(zhí)行頻度,時間間隔 void task0_init(void)//任務(wù)初始化,在主程序 sys_init()中調(diào)用{KEY_PORT = 0xff;//按鍵端口初始化} 本任務(wù)開始時需要執(zhí)行一次的任務(wù)初始化函數(shù),在主程序 sys_init()中調(diào)用,僅僅執(zhí)行一次。//長按鍵時間設(shè)置,2s,其中 50 為本任務(wù)執(zhí)行頻度define WAIT_DN_TIME 50*1。define KEY0_UP 0x15define KEY1_UP 0x16define KEY2_UP 0x17define KEY3_UP 0x18 以上定義按鍵彈起對應(yīng)按鍵的關(guān)聯(lián)狀態(tài),數(shù)據(jù)本身沒有實際意義,只要不重復(fù)就行,由于在程序中多 處使用,如果使用常數(shù),程序可讀性差,容易出錯。 以 50Hz 的頻度掃描鍵盤,基本不會出現(xiàn)按鍵丟失現(xiàn)象。 按鍵掃描 按鍵掃描任務(wù)流程圖 按鍵輸入需要要實現(xiàn)以下功能:按鍵去抖動,快速單次觸發(fā),長按單次觸發(fā),長按多次連續(xù)觸發(fā),同 一按鍵既有長按又有短按功能。}}} 紅色數(shù)字表示任務(wù)執(zhí)行的頻度,即每秒鐘執(zhí)行多少次。} if(task_delay[7]==0) {task7()。} if(task_delay[6]==0) {task6()。} if(task_delay[5]==0) {task5()。} if(task_delay[4]==0) {task4()。} if(task_delay[3]==0) {task3()。} if(task_delay[2]==0) {task2()。} if(task_delay[1]==0) {task1()。//開總中斷 while(1){//根據(jù)任務(wù)延時量是否為零選擇執(zhí)就緒任務(wù)執(zhí)行,任務(wù)執(zhí)行完成后返回再恢復(fù)設(shè)定的延時量if(task_delay[0]==0) {task0()。 //系統(tǒng)初始化,包含各子任務(wù)初始化 OS_Init_Timer0()。各任務(wù)之間不具有搶占功能,因此不用考慮堆棧與保護,初學(xué)者也能夠完全掌握。//任務(wù)延時量減一歸零,使任務(wù)就緒}} 在定時中斷服務(wù)中,執(zhí)行的任務(wù)必須很簡短,重置定時器初值,把大于 0 的任務(wù)延時量減 1,該定時 中斷作為心臟跳動,不斷進(jìn)出運行,為了節(jié)省 CPU 時間,該中斷任務(wù)越簡單越好。iMAX_TASK。//每節(jié)拍對任務(wù)延時量減 1 ,減至 0 后,任務(wù)就緒。TH0=255CLOCK/TIME_PER_SEC/12/256。 //開啟定時器中斷} 這里通過宏定義,把易變參數(shù)在頭文件中定義,這樣使得程序容易修改,便于移植。 TR0 =1。 //定時器 0 工作在模式 1,16Bit 定時器模式TH0 = 255CLOCK/TIME_PER_SEC/12/256。//任務(wù)延時量初始化TMOD = (TMOD amp。iMAX_TASK。 define CLOCK 22118400 //定義時鐘晶振,單位 Hz,與硬件一致即可void OS_Init_Timer0(void) //定時器 0 初始化{uchar i。 定時中斷在這里就是心臟,依靠定時中斷完成任務(wù)延時量的修改,從而實現(xiàn)不同任務(wù)運行頻度控制。務(wù)調(diào)度過程就是對任務(wù)延時量檢測過程,只有任務(wù)延時量為零時,CPU 從其它任務(wù)中 返回后立即執(zhí)行相應(yīng)的任務(wù),由于不同任務(wù)延時量不同,從而實現(xiàn)不同任務(wù)具有不同的執(zhí)行頻度而相互不受影響。(b) 所示,定時器固定節(jié)拍中斷,該節(jié)拍需 滿足最快任務(wù)執(zhí)行頻度需要,例如 50Hz,對于按鍵掃描程序,每秒按 50 次頻度執(zhí)行即可,而 LCD1602 可以按每秒 3 次頻度執(zhí)行,實時時鐘數(shù)據(jù)讀取也只需按每秒 3 次頻度執(zhí)行一次。(a) 定時中斷的多任務(wù)輪循程序架構(gòu)流程圖 基于定時器中斷的多任務(wù)輪循架構(gòu),各子任務(wù)必須設(shè)計成主動放棄 CPU 運行模式,子任務(wù)不能設(shè)計 成死循環(huán)流程,子任務(wù)的執(zhí)行依靠主程序任務(wù)調(diào)度來實現(xiàn)。不同任務(wù),需要不同的執(zhí)行頻度(CPU 關(guān)照度),如果采用傳統(tǒng)大循環(huán)模式,各任務(wù)按一個頻度運行,顯然不適合本設(shè)計。在 主程序中,根據(jù)任務(wù)延時量判斷任務(wù)是否就緒,各任務(wù)輪循占用 CPU,由任務(wù)延時量控制任務(wù)執(zhí)行頻度及 CPU 關(guān)照度,而任務(wù)延時量又由定時器中斷控制。 多任務(wù)程序架構(gòu) 為了程序移植性好,維護性好,易裁剪,我們有必要引入多任務(wù)編程思想,就是一個系統(tǒng)由多個任務(wù) 構(gòu)成,各任務(wù)之間相對獨立。聲音提示:所有按鍵操作伴隨聲音提示,長短按鍵有不同的提示聲,按鍵手感好。 按鍵操作:長按 set 鍵進(jìn)入時間設(shè)定模式,在進(jìn)入設(shè)定模式以前,隨意短按任意鍵,不產(chǎn)生任何作用, 保證時間不被隨便修改;同一鍵短按鍵選擇設(shè)定對象;加減鍵長按直接退出設(shè)定模式。 LCD 顯示要根據(jù) LCD 每行 16 字符的特點設(shè)計,如上,可以顯示年、月、日、星期、時間,還有鬧鐘 設(shè)定功能。 任務(wù)解析及人性化設(shè)計要求 Mini51 板上可用硬件資源有實時時鐘芯片 DS1302 和備用電池,還有 LCD1602 顯示屏、按鍵和
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1