分時(shí)操作系統思想在單片機中的實(shí)現
2.作業(yè)流程
為了能實(shí)現8路分時(shí)工作,最主要的工作是將這一過(guò)程細分成一個(gè)個(gè)作業(yè)。筆者通過(guò)設計把它分成8個(gè)作業(yè),各作業(yè)的流程如圖2所示。 以上每一作業(yè)返回后,“路”指針自動(dòng)加1,到8后回到0,以保證分時(shí)工作合理。
3.幾點(diǎn)技巧
8路電話(huà)信息采集卡的編程中,為了使程序更精練,筆者應用以下3個(gè)技巧:
?、? 因為這8路的工作是相同的,程序可以共用,只須再構造1“路”地址表,每一表項含有本路的輸入鎖存器地址、輸出鎖存器地址、DTMF碼存放RAM地址、計 時(shí)單元地址。這樣可以省掉“路”調度表,因為各路相同作業(yè)的入口地址是相同的。根據“路”指針的不同,帶入該“路”的地址表項,即可用相同的程序對8路分 別控制操作。
?、? 定時(shí)器中斷設置成4ms一次,這是因為電話(huà)振鈴是25Hz,檢測腳保持低電平的時(shí)間為10ms,它是最低的計時(shí)值。當振鈴檢測腳低電平保持時(shí)間少于8ms 時(shí)可認為是干擾。每一路都有自己的計時(shí)單元,每次定時(shí)器中斷后,在定時(shí)服務(wù)自程序中各路計時(shí)單元自動(dòng)加1。在上一次作業(yè)中將計時(shí)單元請0,下一次作業(yè)讀出 計時(shí)單元的值,延時(shí)值即為該值乘以4ms。這樣任何延時(shí)都不占用CPU機時(shí)。
?、? 串行數據的發(fā)送和接收是8路共有的操作,采用共同的模塊。數據的鏈接是通過(guò)開(kāi)辟緩沖區實(shí)現的,有發(fā)送緩沖區和接收緩沖區,采用4800baud的波特率。 一般程序的串行數據發(fā)送時(shí),都須要檢測TI位的變化來(lái)判斷1字節數據發(fā)送是否完成,由此決定可否發(fā)下一字節數據。應用到分時(shí)系統是行不通的,這要占用 CPU機時(shí),因為采用4800baud的波特率,則每一字節的發(fā)送時(shí)間少于4ms。當發(fā)送緩沖區有數據時(shí),可在定時(shí)器中斷服務(wù)自程序中發(fā)送。每一次定時(shí)中 斷中發(fā)送1字節數據,當下一次定時(shí)中斷來(lái)時(shí),上一字節數據必定已發(fā)送完畢,可發(fā)送下一字節數據。無(wú)須檢測TI位,也不占用CPU機時(shí)。數據接收采用串行中 斷,接收到的數據存放到接收緩沖區供各路查詢(xún)。
結論
將分時(shí)操作系統的思想引入單片機系統,提出了一個(gè)針對多路檢測控制的單片機系統軟件編程。大大減低了系統的設計成本,提高了系統的性能價(jià)格比,并在實(shí)際應用中獲得成功。
評論