① 單片機C語言怎樣編程才可也使兩個不用的I/O口同時執行程序
下面是一個大概的例子,由主程序mian和兩個中斷程序組成。
mian()
{
TL0=0XXX;
TH0=0XXX;
TR0=1;
EX0=1;
EA=1;
//初始化程序
while(1)
//等待鍵盤中斷或者定時器中斷結果
{
p0=0xXX:
p2=0xXX;
}
}
time0
interuper()
//定時器中斷程序
{
}
extr0
interuper()
//鍵盤中斷程序
② 單片機C語言中怎麼實現微秒級延時
可以用_nop_( )函數來實現微秒級的延時。
_nop_();//直接當成一條語句使用,產生一條NOP指令
NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。
註:使用該函數時,需要將頭文件#include<intrins.h>包含進源文件中。
③ 好單片機能毫秒級響應嗎
毫秒級響應?一般的單片機的指令周期都是微秒級的。如PIC系列單片機,晶振為4M,單指令周期為1微秒,幾個微秒,就是查詢狀態,就能得到相應。毫秒級,單片機可經過運算,比較,判定,能做的事多了。頻率高的單片機品種很多的。
④ 單片機的計數器,每計數一次是多少時間
定時器/計數器本質上都是計數器,只不過數的東西不一樣.
定時器/計數器做為定時器來用的時候,是數的單片機時鍾的脈沖個數,也就是說,單片機的時鍾做為定時器/計數器的時鍾源,因為單片機的時鍾一般比較固定,因此,我們就知道一個脈沖佔多長時間,因為根據脈沖的個數,就能推算出時間,就能做定時器用.
比如:12MHz的傳統51單片機,一個脈沖周期是1us,如果定時器數了10個脈沖周期就中斷了,說明10us時間到了.
而作為計數器的時候,數的是來自引腳上的脈沖,也就是說,是引腳上的脈沖做為定時器/計數器的時鍾源,如果這個脈沖是規律的,周期是固定的,那麼,也可以實現定時,比如,如果引腳的脈沖是10KHz的,那麼,一個脈沖周期是100us,如果定時器/計數器數了10個脈沖周期就中斷,說明1ms時間到了.
但是,如果引腳上的脈沖頻率不固定,時高時低,那麼,就沒辦法根據脈沖個數算出時間來,此時,就只是單純的計數功能.
總而言之,定時器/計數器本質都是對脈沖計數,只是作為定時器,數的是內部的脈沖,做為計數器,數的是外部的脈沖,如果脈沖固定,外部脈沖也可以用來定時.贊同0|評論
⑤ 簡述8051單片機中斷響應過程
單片機一旦響應中斷請求, 就由硬體完成以下功能:
(1) 根據響應的中斷源的中斷優先順序, 使相應的優先順序狀態觸發器置1;
(2) 執行硬體中斷服務子程序調用, 並把當前程序計數器PC的內容壓入堆棧,保護斷點,尋找中斷源;
(3) 清除相應的中斷請求標志位(串列口中斷請求標志RI和TI除外);
(4) 把被響應的中斷源所對應的中斷服務程序的入口地址(中斷矢量)送入PC, 從而轉入相應的中斷服務程序。
(5)中斷返回,程序返回斷點處繼續執行。
(5)單片機微妙級響應擴展閱讀:
單片機應用分類:
單片機(Microcontrollers)作為計算機發展的一個重要分支領域,根據發展情況,從不同角度,單片機大致可以分為通用型/專用型、匯流排型/非匯流排型及工控型/家電型。
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料:網路——單片機