⑴ C51單片機動態顯示秒分時
兄弟,我粗粗看了一下,問題的確在定時器上。
先告訴你怎麼解決吧:
if(TF0==1)
{
//加上以下幾句
TF0=0;
TH0=(65536-20000)/256;//
TL0=(65536-20000)%256;//定時20ms
………你自己的程序……
buffer[4]=hour%10;
buffer[5]=hour/10;
}
如果你的定時器初始值TH0,TL0沒有計算錯的話應該正常了。
你的原因在:方式1定時器溢出之後TF0是需要手動清零的。因為你沒有清0,所以if(TF0==1)這個判斷一直成立,定時器當然沒有用了。
再者,方式1定時器溢出之後TH0,TL0會自動清零,如果需要定時器繼續按方式1工作下去,應該再給TH0,TL0重新賦初值或定時時間常數。
最後有個建議,
TH0=(65536-20000)/256;//
TL0=(65536-20000)%256;//定時20ms
這兩個TH0,TL0定時常數賦值還是你自己直接算一下寫進去好了,反正是個常數。單片機計算上面兩個式子很累的啊,特別是這里的除法,取余運算。
⑵ 如何在單片機系統中加入分時程序
這個問題很簡單,因為循環左移和循環右移並不相互排斥,可以單獨存在,不僅僅在一個工程中,在用一個文件或者同一個程序段中都是可以的。比如。 #include<reg51.h> #include<intrins.h> void delay(int a) { int i,j; for(i=0;i<a;i++) for(j=0;j<110;j++); } main() { unsigned char led1=0xfe,led2=0x7f; while(1) { P0=_crol_(led1); P1=_cror_(led2); delay(100); } }
⑶ 求助:51單片機如何實現兩個串口分時復用的
是一個單片機,要接成兩個串口嗎?
那隻好用一個模擬開關,來切換兩個串口。但實際上是一個串口,需要單片機分時來使用兩個串口。這需要有嚴格的通信協議,編寫程序要按這個協議,否則,兩個串口在時間上會出現沖突,或不能正常通信,或丟失數據。
STC單片機,就有這種類型的,外部引腳是兩個串口,即兩組RXD,TXD引腳。內部還是一個UART,但兩個串口的切換是在內部完成的,外部用起來就方便多了。
STC單片機還有內部有兩個獨立串口的,這樣,用起來就省事多了,兩個獨立串口,互相不影響。
⑷ 51單片機P0口分時復用原理是什麼啊急需解答啊
下圖為採用74LS244作為擴展輸入、74LS273作為擴展輸出的簡單I/O口擴展。
1:74LS244為8緩沖線驅動器(三態輸出),為低電平有效的使能端。即G1G2低電平是數據輸入單片機,G1G2高電平時244輸出為高阻態。
2:74LS273為8D觸發器,為低電平有效的清除端。當為0時,輸出全為0且與其它輸入端無關;CP端是時鍾信號,當CP由低電平向高電平跳變時刻,D端輸入數據傳送到Q輸出端。
3:圖中74ls273可以換成74ls373、74ls573等鎖存器,這樣就就不必利用脈沖來輸出數據,373的LE端為低時輸出跟隨輸入變化,為1是輸出口鎖存。
4:你還可以對圖稍加改動,WRRDP2.0就只要一個就可以了,或者用一個反相器只需要一個IO口來作為控制端就好了。若還閑這樣擴展不夠用,可用兩片373擴展輸出,兩片244擴展輸入。
5:51單片機選用這些74系列晶元是ls和hc都可以用。但若你用3.3V的久必須用HC系列的74晶元了。
我有個我實際利用的例子,需要的話可以聯系我
⑸ 80c51單片機p0口地址數據分時復用如何實現的
P0在前一個時刻輸出地址的低8位,然後由ALE信號將它們鎖存到外面的邏輯晶元(例如74LS245之類)里,之後再從P0輸出或輸入數據,就實現了分時復用。
在這兩個期間,地址的高8位,也就是P2口的信號是不變的,並且ALE在後一半的時候也是不變的。這樣的話,之前輸出的地址低8位被ALE鎖存到外面的邏輯晶元里了。
因此不管匯流排上的信號如何變,只要ALE不變,那麼邏輯晶元的輸出就是不變的,因此此時的P0口就可以執行別的任務了。
(5)單片機分時擴展閱讀:
單片機的分時復用:
首先,具有分時復用的埠只有P0口,而在使用分時復用功能時,是只對單片機訪問外部存儲器的時候來說的,其他時候都是普通IO口。
單片機在訪問外部存儲器的時候,P0口首先是作為低8位的地址數據線輸出地址信號,外接鎖存器。然後,74LS373或者245一類的鎖存器將其鎖存後,P0口再輸出數據或者是寫入數據。
這個就是P0口的雙向8位數據口和低8位地址輸出口的復用,分時就是先地址後數據。
⑹ 單片機的分時復用是如何實現的
P0=0x00; P0=0xff;這樣在第一個周期中P0全為低電平,在第二個周期中全為高電平,分時復用了。 1樓正確。使用373活著是573一類的晶元。
⑺ 單片機何為分時復用
就是在不同的時間做不同的事。
比如檢測按鍵的IO口,要以在不檢測時刷新屏幕顯示。同一個IO口,既做了按鍵檢測,又做了顯示的功能。這個就是分時復用。
⑻ 51單片機的分時復用
51單片機的分時復用51單片機的分時復用功能,最直接的就是MOVX指令,用這個指令就是在分時復用P0口,執行:MOVX A,@DPTR,那麼首先要送地址A0~A7給P0口,ALE有效,鎖存在373上,再將這個地址的數據從P0口讀入傳給A。
⑼ 一個51單片機定時器怎樣分時工作
什麼意思啊?你的意思是不是用一個定時器設定n個定時啊,很簡單的啊,把定時器定成單位時間,需要幾個單位時間就幾倍的單位時間啊