找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4969|回復(fù): 7
收起左側(cè)

關(guān)于利用單片機(jī)定時(shí)器測量外部脈沖寬度的問題

  [復(fù)制鏈接]
ID:450037 發(fā)表于 2019-3-7 09:58 來自觸屏版 | 顯示全部樓層 |閱讀模式
為什么定時(shí)器關(guān)閉之后,只把TL0給A啊,假如脈沖很長,TH0也有數(shù)值呢。
mmexport1551921419250.jpg
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2019-3-8 08:52 | 顯示全部樓層
很長,你就增加一個(gè)計(jì)數(shù)器,數(shù)TH計(jì)滿的次數(shù)不就行了嗎?
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2019-3-8 11:35 | 顯示全部樓層
哥們?yōu)楹稳绱说膱?zhí)著于看別人的程序呢?這匯編,你自己不動(dòng)手是不可能學(xué)會(huì)的了,看得懂和自己能寫,這是完全不同的一回事呀!
“作者懶呀!”
我是這么告訴你了吧?他只管把TL1的值送去顯示了,為了不管TH1了呢?就算是TH1和TL1一塊算也才65535,這萬一脈沖超過65535了呢?
8051是一個(gè)8位單片機(jī),它只能處理256以下的數(shù)據(jù)。如果脈沖的時(shí)間超過了256,比如是:1234,那么與之對(duì)應(yīng)的16進(jìn)制就是:04D2H,高8位地址存放04H,低8位地址存放0D2H,如果你想把1234在數(shù)碼管或者是在12864上顯示出來,你得先把1234分解成“1”,“2”,“3”,“4”分別存放在四個(gè)地址,這得用到除法運(yùn)算,超過8位的8051沒有除法的匯編指令,只能用減法運(yùn)算來實(shí)現(xiàn)。且得是高低兩個(gè)地址參與運(yùn)算,一共就是四個(gè)地址。
這前前后后加顯示一塊,至少得是一百行代碼以上,到時(shí)候會(huì)越扯越多,所以“將數(shù)據(jù)送顯示緩存區(qū)并轉(zhuǎn)換成可顯示的代碼”,很顯然比我前面所說的簡單多了
回復(fù)

使用道具 舉報(bào)

ID:18297 發(fā)表于 2019-3-8 14:36 | 顯示全部樓層
1、假設(shè)你的定時(shí)時(shí)間<256,TL0的讀書就是你的定時(shí)時(shí)間。(TL0初值=0)這里的TH0=0;不需要計(jì)算。
2、256<假設(shè)你的定時(shí)時(shí)間<65535,TH0*256+TL0就是你的定時(shí)時(shí)間(TH0,TL0的初值都為0)
3、假設(shè)你的定時(shí)時(shí)間>65535;
   你可以設(shè)置初值TH0=(65535-50000)/256;
                        TL0=(65535-50000)%256;
            設(shè)置累加計(jì)算器count=0;
  設(shè)置定時(shí)器0溢出中斷,每一次溢出中斷一次count加1,并重新裝載TH0,TL0初值。
你所的測量時(shí)間是50000*count+(TH0*256+TL0);
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-3-8 22:50 | 顯示全部樓層
只看書,不動(dòng)手,真是死腦筋。假如脈沖很長,定時(shí)器寄存器計(jì)滿溢出會(huì)重復(fù)計(jì)數(shù),只要把溢出次數(shù)保存起來,最后加上TH0、TL0的數(shù)不就成了,你這個(gè)脈沖再怎么寬,呵呵,只要不斷電,幾年都行。
回復(fù)

使用道具 舉報(bào)

ID:450037 發(fā)表于 2019-3-9 20:44 來自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2019-3-8 22:50
只看書,不動(dòng)手,真是死腦筋。假如脈沖很長,定時(shí)器寄存器計(jì)滿溢出會(huì)重復(fù)計(jì)數(shù),只要把溢出次數(shù)保存起來,最 ...

關(guān)鍵這題他沒有加溢出次數(shù)累加器啊,怎么知道他溢出多少次呢
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-3-10 09:42 | 顯示全部樓層
zhangzhao2423 發(fā)表于 2019-3-9 20:44
關(guān)鍵這題他沒有加溢出次數(shù)累加器啊,怎么知道他溢出多少次呢

教科書的例題只是假定某一特定條件的應(yīng)用。在這里假定脈沖寬度小于255個(gè)機(jī)器時(shí)鐘周期,只計(jì)算TL0當(dāng)然可以。如果脈沖寬度小于65536、大于255個(gè)機(jī)器時(shí)鐘周期就要計(jì)算(TH0<<8)|TL0,如果脈沖寬度大于65535就要計(jì)算x=(count<<16)|(TH0<<8)|TL0;
回復(fù)

使用道具 舉報(bào)

ID:478073 發(fā)表于 2019-3-10 12:52 | 顯示全部樓層
在網(wǎng)上找個(gè)頻率計(jì)的案子看看,脈沖寬度與頻率分不開,懂得擔(dān)相互聯(lián)系就能解決

評(píng)分

參與人數(shù) 8黑幣 +111 收起 理由
還有誰? + 14
正規(guī)007 + 15
sheng7533967 + 8
yoxi + 16
站著說話不腰疼 + 16
#include51.h + 16
找人PK + 16
微小苛 + 10

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表