中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開(kāi)發(fā)

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開(kāi)發(fā)工具

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶(hù)產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

單片機(jī)延時(shí)與中斷常見(jiàn)問(wèn)題及相關(guān)解答

更新時(shí)間: 2019-03-25
閱讀量:5544

新手在單片機(jī)開(kāi)發(fā)應(yīng)用過(guò)程中,時(shí)而出現(xiàn)延時(shí)與中斷的問(wèn)題,那該怎么解決呢?

一些人會(huì)把單片機(jī)中斷和延時(shí)概念搞混,首先我們先來(lái)理清楚單片機(jī)中斷和延時(shí)的概念。中斷是停止當(dāng)前正執(zhí)行的任務(wù),轉(zhuǎn)而去執(zhí)行中斷任務(wù),等中斷任務(wù)執(zhí)行結(jié)束后繼續(xù)回來(lái)執(zhí)行當(dāng)前正在運(yùn)行的任務(wù)。開(kāi)啟中斷源之后,有初始化中斷、響應(yīng)中斷等都是從中斷入口地址處執(zhí)行中斷程序的,建議有中斷程序盡可能的簡(jiǎn)潔,越短越好。而延時(shí)僅僅是主程序在執(zhí)行的過(guò)程中不斷調(diào)用的一段子程序。

下邊為大家分享一下大多數(shù)單片機(jī)包含PIC單片機(jī)開(kāi)發(fā)在內(nèi)的延時(shí)與中斷的常見(jiàn)問(wèn)題及解決方法。

1、單片機(jī)延時(shí)程序的延時(shí)時(shí)間怎么算的?

答:如果用循環(huán)語(yǔ)句實(shí)現(xiàn)的循環(huán),沒(méi)法計(jì)算,但是可以通過(guò)軟件仿真看到具體時(shí)間,但是一般精精確延時(shí)是沒(méi)法用循環(huán)語(yǔ)句實(shí)現(xiàn)的。

如果想精確延時(shí),一般需要用到定時(shí)器,延時(shí)時(shí)間與晶振有關(guān)系,單片機(jī)系統(tǒng)一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)準(zhǔn)的波特率,后兩種的一個(gè)機(jī)器周期分別為1 μs和2 μs,便于精確延時(shí)。本程序中假設(shè)使用頻率為12 MHz的晶振。最長(zhǎng)的延時(shí)時(shí)間可達(dá)216=65 536 μs。若定時(shí)器工作在方式2,則可實(shí)現(xiàn)極短時(shí)間的精確延時(shí);如使用其他定時(shí)方式,則要考慮重裝定時(shí)初值的時(shí)間(重裝定時(shí)器初值占用2個(gè)機(jī)器周期)。

2、求個(gè)單片機(jī)89S51 12M晶振 用定時(shí)器延時(shí)10分鐘,控制1個(gè)燈就可以

答:可以設(shè)50ms中斷一次,定時(shí)初值,TH0=0x3c、TL0=0xb0。中斷20次為1S,10分鐘的話,需中斷12000次。計(jì)12000次后,給一IO口一個(gè)低電平(如功率不夠,可再加擴(kuò)展),就可控制燈了。而且還要看你用什么語(yǔ)言計(jì)算了,匯編延時(shí)準(zhǔn)確,知道單片機(jī)工作周期和循環(huán)次數(shù)即可算出,但不具有可移植性,在不同種類(lèi)單片機(jī)中,匯編不通用。用c的話,由于各種軟件執(zhí)行效率不一樣,不會(huì)太準(zhǔn),通常用定時(shí)器做延時(shí)或做一個(gè)不準(zhǔn)確的延時(shí),延時(shí)短的話,在c中使用匯編的nop做延時(shí)

3、51單片機(jī),晶振為6M,求一個(gè)10ms的延時(shí)程序

答:延時(shí)有很多種方法,有一種是讓單片機(jī)去做無(wú)聊的循環(huán),還有一種是用定時(shí)器。

第一種的算法是:

晶振的周期T1=1/f; 這里f=6MHz 所以T1=1/6 us;(微秒)

單片機(jī)花12個(gè)T1去執(zhí)行一個(gè)指令,

所以一個(gè)機(jī)器周期等于12個(gè)晶振周期,

T2=12*T1=2us

10ms=1000 0us

所以你要得到10ms的延時(shí)就要想辦法讓機(jī)器去做5000條“無(wú)聊的指令”

(尤其是在多中斷任務(wù)執(zhí)行時(shí)),中斷首先要開(kāi)啟中斷源,初始化中斷,然后響應(yīng)中斷,從中斷的入口地址處執(zhí)行中斷程序。

利用中斷可以使程序執(zhí)行效率高效,實(shí)現(xiàn)“一邊。。。一邊。。?!背跏蓟袛嘣春笾鞒绦颍涂梢匀ジ善渌虑榱?。

4、51單片機(jī)C語(yǔ)言for循環(huán)延時(shí)程序時(shí)間計(jì)算 ,設(shè)晶振12MHz,即一個(gè)機(jī)器周期是1us。

for(i=0,i<100;i++)

for(j=0,j<100;j++)

我覺(jué)得時(shí)間是100*100*1us=10ms,怎么會(huì)是100ms

答:

不可能的,是不是你的編譯有錯(cuò)的啊

我改的晶振12M,在KEIL 4.0 里面編譯的,為你得出的結(jié)果最大也就是40ms,這是軟件的原因,

不可能出現(xiàn)100ms那么大的差距,是你的軟件的原因。

不信你實(shí)際編寫(xiě)一個(gè)秒鐘,利用原理計(jì)算編寫(xiě)一個(gè)燒進(jìn)單片機(jī)和利用軟件測(cè)試的秒程序燒進(jìn)單片機(jī),你會(huì)發(fā)現(xiàn)原理計(jì)算的程序是正確的。

5、PIC單片機(jī)AD中斷什么時(shí)候開(kāi)啟,對(duì)AD中斷應(yīng)該怎樣理解。

答:

AD模數(shù)轉(zhuǎn)換,是把模擬電壓數(shù)值采樣進(jìn)來(lái),然后轉(zhuǎn)換成數(shù)字信號(hào)。這一采樣和轉(zhuǎn)換是需要時(shí)間的。并不是一開(kāi)AD就能讀到數(shù)字信號(hào)數(shù)據(jù)。

一般來(lái)說(shuō)其時(shí)間都只有幾微秒到幾百微秒(根據(jù)設(shè)置不同而定)。如果單片機(jī)沒(méi)有其他工作的時(shí)候,可以用循環(huán)等待的方式等AD轉(zhuǎn)換結(jié)束(轉(zhuǎn)換結(jié)束后DONE位會(huì)被置位)。但如果你的單片機(jī)還有其他工作,那就沒(méi)必要在等待它上面花費(fèi)時(shí)間??梢蚤_(kāi)AD操作后,繼續(xù)執(zhí)行其他程序。而轉(zhuǎn)換結(jié)束后,AD中斷可以暫時(shí)斷開(kāi)現(xiàn)有炒作,而把AD數(shù)據(jù)讀進(jìn)來(lái)。這就是AD中斷的作用。

6、51單片機(jī)的五個(gè)中斷分別在什么時(shí)候(什么情況)執(zhí)行里面的程序!

答:

外部中斷0 :P3.2口有低電平(IT0=0)/ 下降沿(IT0=1)。

外部中斷1 :P3.3口有低電平(IT1=0)/ 下降沿(IT1=1)。

定時(shí)器0中斷:當(dāng)定時(shí)器0計(jì)數(shù)到FFFF溢出時(shí)

定時(shí)器1中斷:當(dāng)定時(shí)器1計(jì)數(shù)到FFFF溢出時(shí)

串口中斷:串口接收到一幀?;虬l(fā)送完一幀數(shù)據(jù)都會(huì)產(chǎn)生中斷。

你網(wǎng)上找一下TCON和SCON。什么條件讓中斷標(biāo)志位的值改變。 那么就會(huì)進(jìn)入中斷服務(wù)程序去。 


7、51單片機(jī),如果中斷函數(shù)比較長(zhǎng),執(zhí)行到一半又觸發(fā)了這個(gè)中斷,程序會(huì)停止從頭執(zhí)行,還是執(zhí)行結(jié)束后響應(yīng)中

答:51單片機(jī)中,中斷分高低兩個(gè)優(yōu)先級(jí),高優(yōu)先級(jí)的中斷能打斷低優(yōu)先級(jí)的中斷。

但同級(jí)中斷是不能打斷同級(jí)中斷的!無(wú)論該中斷函數(shù)有多長(zhǎng),在執(zhí)行到一半這個(gè)中斷又發(fā)生了,還是要等到該中斷函數(shù)執(zhí)行完畢,并再執(zhí)行了一條主程序指令后才會(huì)再次進(jìn)入該中斷。

不過(guò),若樓主恰好在這個(gè)低優(yōu)先級(jí)中斷服務(wù)程序中修改了該中斷為高優(yōu)先級(jí),那么如果該中斷函數(shù)比較長(zhǎng),執(zhí)行到一半又觸發(fā)了這個(gè)中斷,則該中斷函數(shù)就會(huì)被重新從頭開(kāi)始執(zhí)行(中斷嵌套)。這是因?yàn)槌谥袛嘁酝獾钠渌袛?,? CPU 響應(yīng)該中斷,程序轉(zhuǎn)入該中斷函數(shù)前就已經(jīng)將該中斷的中斷標(biāo)志清零了。

另外,51的串口中斷比較特別,因?yàn)樾枰浖宄谥袛鄻?biāo)志,所以只要在未清串口中斷標(biāo)志前,是不會(huì)發(fā)生上述這樣的中斷嵌套的。

以上是一些單片機(jī)開(kāi)發(fā)過(guò)程中的中斷與延時(shí)的常見(jiàn)問(wèn)題解答。單片機(jī)開(kāi)發(fā)過(guò)程是比較復(fù)雜的,需要進(jìn)行項(xiàng)目評(píng)估及項(xiàng)目實(shí)施兩個(gè)大步驟,希望以上的知識(shí)總結(jié)能夠給你帶來(lái)一定幫助。


沧州市| 平利县| 罗甸县| 新竹县| 聂荣县| 驻马店市| 宜春市| 抚松县| 克拉玛依市| 班玛县| 龙江县| 丹江口市| 斗六市| 二手房| 乌拉特前旗| 上饶市| 灌云县| 尼玛县| 西华县| 新野县| 古浪县| 全州县| 昭觉县| 赤水市| 措勤县| 武夷山市| 托克托县| 新津县| 綦江县| 文山县| 阳曲县| 洛宁县| 富宁县| 开平市| 文昌市| 淳化县| 荔波县| 定州市| 乐清市| 延津县| 博客|