一、 使用時鐘和定時器(alarm系統(tǒng)調(diào)用)
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元金溪做網(wǎng)站,已為上家服務(wù),為金溪各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
#include unistd.h
unsigned alarm(unsigned secs);
/*returns secs left on previous alarm or zero if none */
alarm也稱為鬧鐘函數(shù),它可以在進(jìn)程中設(shè)置一個定時器,當(dāng)指定的時間到時,它向進(jìn)程發(fā)送SIGALRM信號。需要注意的是,一個進(jìn)程只能有一個定時器。當(dāng)報(bào)警開始時,會發(fā)送一個SIGALRM,子進(jìn)程繼承其父進(jìn)程的報(bào)警時鐘值,但實(shí)際的時鐘并不共享。執(zhí)行exec后,報(bào)警時鐘仍然保持其設(shè)置。
alarm按照secs指定的秒數(shù)來設(shè)置時鐘,如果secs為0,則關(guān)閉報(bào)警時鐘,這樣做是很有必要的,如果recvfrom函數(shù)讀到數(shù)據(jù),沒到設(shè)定時鐘值時就返回了,而你又忘記關(guān)閉報(bào)警時鐘的話,那么它將在不久后報(bào)警,在計(jì)算機(jī)看來,1秒都是一個很漫長的時間,1秒后的報(bào)警可能會造成本進(jìn)程中其他函數(shù)執(zhí)行的中斷,因?yàn)橐粋€進(jìn)程只有一個定時器,所以使用完定時器后,一定要關(guān)閉定時器。
實(shí)例代碼:
詳細(xì)代碼
對于C51單片機(jī),其內(nèi)部總共有五級中斷源
分別為外部中斷0、定時器0、外部中斷1、定時器1及串行中斷。
C51單片機(jī)的中斷使用時,主要是通過中斷服務(wù)號來決定的。
如你定義一個中斷服務(wù)函數(shù):
void KEY(void) intterrupt 0
{
}
當(dāng)外部中斷0申請中斷時
會自動根據(jù)interrupt后面的0,找到上面定義的這個中斷服務(wù)函數(shù)。
對于其他四個中斷源,其對應(yīng)的中斷號分別為1、2 、3、4
2秒的應(yīng)該要用定時器好一點(diǎn)吧,while(!兩秒標(biāo)志)這樣就可以了(兩秒定時一到,則置位兩秒標(biāo)志位),如果真的對實(shí)時性要求非常高的話,就是說兩秒一到,不管程序執(zhí)行到哪里,都應(yīng)該結(jié)束這個循環(huán),那就要用到任務(wù)的調(diào)度了,這個比較麻煩,因?yàn)闀婕暗讲僮飨到y(tǒng)了,uC/OS可以實(shí)現(xiàn)這個。至于你說的讓循環(huán)程序執(zhí)行一次就結(jié)束的,既然是只有一次,那就不叫循環(huán)了對吧,不要循環(huán),直接順序執(zhí)行下來就是一次了嘛
網(wǎng)站標(biāo)題:alarmc語言函數(shù) c++ alarm
本文路徑:http://www.rwnh.cn/article24/dodocje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、ChatGPT、服務(wù)器托管、App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)