學會以合作的方式思考

2021-06-02 07:56:49 字數 934 閱讀 5654

對於所有任務,無論在何種情況下,任務的執行時間 t 都應該小於時間間隔。即如果任務不能在規定的時段內完成,就中止該任務,尤其是對於以查詢方式執行的中斷程式。

比如,這樣的**是不可靠的:

// 等待, 直到ad轉換結束(檢查adci)

while((adcon & adci) == 0);

因為在某些情況下,可能由於如下原因導致系統被掛起:

a 如果模數轉換器的初始化不正確,不能確定模數轉換將被執行

b 如果模數轉換器的輸入電壓過高,那麼可能根本就不執行

c 如果沒有正確初始化變數adcon或adci,那麼可能不按要求執行

如果要求系統很可靠,則必須能夠保證沒有函式會這樣掛起。迴圈超時提供了一種簡單而有效的方法來提供這樣的保證。

迴圈超時很容易建立,其**結構的基礎是軟體延遲:

uint16 timeout_loop = 0;

...while(((adcon & adci) == 0) || (++timeout_loop == 0));

uint16 timeout_loop = 1;

...while(((adcon & adci) == 0) || (timeout_loop == 0))

後者的好處是可以很方便的注釋掉這種迴圈超時,這時如果再發生前面所說的錯誤,至少程式不會一直停留這這裡,而會繼續往下執行,當然緊接著後面應該有對這種錯誤的相應處理方法。

注: 這種迴圈超時因為是軟體延遲實現的,故不太容易精準的控制延遲時間,且沒有很好的可移植性,可以考慮用硬體定時器替代。

比如,假設8051定時器1已經開啟,10ms定時

while((adcon & adci) == 0) || ! tf0);

學會以合作的方式思考

對於所有任務,無論在何種情況下,任務的執行時間 t 都應該小於時間間隔。即如果任務不能在規定的時段內完成,就中止該任務,尤其是對於以查詢方式執行的中斷程式。比如,這樣的 是不可靠的 等待,直到ad轉換結束 檢查adci while adcon adci 0 因為在某些情況下,可能由於如下原因導致系統...

SQL 以面向集合的思維方式來思考

圖4 1給出了12張卡片,從中你應該可以找出6個集合。每張卡片左上角的字母表示顏色 r 紅色,g 綠色,p 紫色 試試吧。答案在本章的最後 可別作弊哦!我首先給出第乙個集合 第1行第2列 實心綠色花體 第3行第2列 實心紅色花體 和第3行第4列 實心紫色花體 這個遊戲迫使你按集合來思考,除此以外別無...

2021 03 08 關於合作的思考

2021.03.08 18 33 40 我覺得乙個人的思想境界,有乙個人思想境界的發展階段,比如說自己之前的話,做什麼事情都喜歡自己乙個人做,但是現在越來越感覺力不從心了,這個時候才感覺到和而合作的重要。若是在一開始的時候就要求自己和他的合作,並不是把重心放在技術上面,我覺得自己後面很難真正理解合作...