1樓:匿名使用者
建議你採用定時中斷的方式實現。一般的做法舉例,比如你有20ms,30ms,50ms三種延時:
1、取這些延時的最大公約數時間,此例中就是10ms,以10ms做為定時中斷的定時時間。其實這個10ms就是一個時標。
2、定義3個char型全域性計數變數:uc20ms、uc30ms、uc50ms,初值為0。在定義3個bit型的全域性標誌變數:f20ms、f30ms、f50ms,初值為false。
3、每次定時中斷產生,在定時中斷服務程式中,將計數變數+1,如uc20ms++。
4、然後進行判斷,由於10ms為時標,所以上面3個計數變數+1操作後分別達到2、3、5時,說明相應的延時到了。哪一個延時時間到了,則相應的計數變數清零,相應的標誌變數置為true。
5、主程式中迴圈逐個檢測標誌變數,如果為true,則將其置為false,將標誌復位,然後去執行相應的任務;如果為false,則說明延時未到,什麼都不做。
以上方法是比較規範的做法,特點是計時由定時器完成,處理則在主程式完成,計時不佔cpu資源,cpu的資源可以最大限度用來處理其它事務性的任務,而且計時會更精確。delay函式的方法雖然在初學時容易理解,但在實際使用當中除非是微秒級的延時,否則用的很少。定時器的方法雖然看起來變數多,不想delay那麼直觀,但這樣做程式的模組化強,易於維護,增添其它程式時一般不用顧及其它的地方,所以一定要掌握定時器的用法,這才是此類問題的根本解決方法。
否則只用delay,程式大了以後肯定會出現互相打架無法解決的狀況的,相信我。
2樓:愛微控制器生活
最笨的方法就是在其他延時程式裡再呼叫按鍵掃描的程式,有按鍵動作馬上跳出。不過不建議這樣寫,這是實在沒辦法才這樣做。把些延時用定時器來代替不行嗎?
3樓:_全不明白
1,2個鍵的話,用外部中斷。
如果是多個鍵,用定時器掃描。
4樓:匿名使用者
把讀鍵盤函式扔到定時器中,或者基於外中斷讀取鍵盤。
微控制器問題求解答
5樓:馬文博
5.訪問片外ram只有暫存器間接定址movx a,@dptr,mov a,@ri,mov ,mov @ri,a,只有這四個指令。
1. mov ax, es:[1000h]源運算元的定址方式是? 直接定址。
2. mov ax, bah[di]源運算元的定址方式是? 暫存器相對定址。
3. mov ax, count[bx]源運算元的定址方式是? 暫存器相對定址。
4. mov ax, count[ax]源運算元的定址方式是?
mov ax, count[bx]暫存器相對定址,mov ax, count[ax]是錯的。
5. mov [ax], count[bx][di]源運算元的定址方式是? 相對基址變址定址。
6. mov [bx], count[bx][di]源運算元的定址方式是? 相對基址變址定址。
7. mov ax, count[bx][bp]源運算元的定址方式是? 錯的。
8. mov ax, count[bx][si]源運算元的定址方式是?相對基址變址定址。
7.必須採用暫存器間接定址。
微控制器作業求解
6樓:
摘要。諮詢記錄 · 於2021-05-15微控制器作業求解。
這個可以解決嗎?
你好!**看不清楚,可以打字嗎。
1 根據如下共陰極型數碼管電路,程式設計實現倒計數顯示功能,從99開始倒計數,計到0後再從99開始。
2 對數碼管採用動態顯示的方式顯示7-0。
共陰極動態數碼管實現模值為100的計數器,計數區間0~ 99 ,無進位輸出 --原理:動態掃描電路,時鐘分頻,段選位選 entity led ..
根據題目寫出程式。不是原理。
求高手解答微控制器
7樓:網友
18個不對,mov c,20h是位定址。另一個是直接定址。
19不對,用來鎖存p0口的低八位地址。
20理論上如此,但每個微控制器肯定會有時鐘的上限。
21對。22不對,一個指令週期可以包含數個機器週期。
23對的。24不對scon只是串列埠中斷的控制暫存器。
25不對,sp始終指向棧頂。
26不對 都是64k
27不對,是一條查詢外部儲存器的指令。
28對的。29不對,8155是並行介面晶片。
30對。31對的,@ri中i只能是0或1
32對的。33不對,dptr暫存器是16位,用來訪問外部儲存器。
34不對,特殊功能據存期只能用直接定址的方式。
35不對,理由同第19個。
如有錯達,請抱歉。
求高手解答微控制器問題。
8樓:匿名使用者
3.內部,外部。,2fh,29h
13.輸出外部儲存器的低8位地址。
.pop,movx,movc,pcon,thx,tlx
32.允許接收位。
38.立即,暫存器間接,位。
9樓:匿名使用者
mov r7,#04h語句執行1次 佔1個機器週期。
mov r6,#0ffh 執行4次 佔4個機器週期。
mov r5,#0ffh執行4+4*255次 佔4+4*255個機器週期。
djnz r5,del3執行4*255*255次 佔4*255*255*2個機器週期。
djnz r6,del2執行4*255次 佔4*255*2個機器週期。
djnz r7,del1執行4次 佔4*2個機器週期。
ret 佔2個機器週期。
呼叫 acall 佔2個機器週期。
一個機器週期為1微秒。
延時為t=1+4(1+1+1*255(1+255*2+1*2)+2)+2+2(us)=523281 us
以上是精確的延時,比較複雜。
我們也可以粗略估計只考慮以下語句延時。
del2:mov r5,#0ffh
del3:djnz r5,del3
djnz r6,del2
t1=4*(255*(1+255*2+1*2))=523260 us
t1和t很接近,因此工程上常用後者計算延時時間。
求解一些微控制器的問題。。。
10樓:liang冥
1.既然題目都說不能保護斷點,答案是對,為什麼還要問它是怎麼保護斷點的。
a,08feh,因為@a+pc之後不一定會等於08feh,除非你確保,但這種做法不提倡,movc a,@a+pc這種語法是用於查表用的。
只是決定cpu是僅僅訪問片內程式儲存器中的指令還是訪問內外程式儲存器中的指令,也是說當ea接高電平時,當pc的值超過4k就會自動訪問片外的程式,當接電平,pc是直接訪問片外的程式而不管內部的程式儲存器中的指令。
11樓:做而論道
1.斷點是在執行「呼叫子程式」指令的時候,由它進行儲存的。
或者進入中斷的時候,cpu自動儲存的。
在執行push指令的時候,斷點早已經儲存過了。
2.pc=0035h,目標地址是08feh,距離超過256,不可使用movc a,@a+pc。
可以用movc a,@a+dptr指令。
3.超過4k時,無論ea/vpp是何值,系統都在外部程式儲存器中定址。
微控制器問題
把外部ram中1000h 1030h的內容傳送到內ram的30h 60h中。2.試編制程式實現1 2 3 100 結果的商8位儲存內ram中51h單元中,低8位儲存在50h單元中。3.已知8051微控制器使用的晶振為12hz,試編制延時40ms的程式。我需要知道程式!提問者 oct juju 童生 ...
微控制器問題 20,微控制器有問題如何解決
親,您好,很高興為您解答 微控制器有問題如何解決如下 微控制器故障的排除1微控制器正常工作的三個條件微控制器工作的三個條件分別是電源 時鐘晶振 復位。當微控制器不能正常工作時,我們首先就要檢查這三個條件,用電壓表或者萬用表檢測他的電源和接地腳,檢測兩個引腳之間的電壓是不是5v左右 對於時鐘晶體振盪有...
微控制器有幾種,微控制器是什麼?
微控制器種類 微控制器作為計算機發展的一個重要分支領域,根據目前發展情況,從不同角度微控制器大致可以分為通用型 專用型 匯流排型 非匯流排型及工控型 家電型。1 通用型 專用型 這是按微控制器適用範圍來區分的。例如,80c51是通用型微控制器,它不是為某種專用途設計的 專用型微控制器是針對一類產品甚...