找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2902|回復(fù): 8
收起左側(cè)

初學(xué)者關(guān)于單片機(jī)定時(shí)器初值計(jì)算沒有懂,請(qǐng)教一下大家,謝謝!

[復(fù)制鏈接]
ID:404479 發(fā)表于 2018-11-6 11:34 來(lái)自手機(jī) | 顯示全部樓層 |閱讀模式
我看的普中科技的教程,首先按照普中科技講解的辦法,我的理解是:
①首先,確認(rèn)晶振的振蕩頻率,由晶振的振蕩頻率除以機(jī)器的周期12,即,比如我晶振頻率,12MHZ,那么12MHZ÷12=1,也就是1us微秒,我的這個(gè)理解方法是否正確?
②然后,賦值,我是這樣理解的,拿T0定時(shí)計(jì)數(shù)器來(lái)說(shuō),當(dāng)TH0和TL0滿了后,也就是16個(gè)1,也就是65535,然后我要定時(shí)1ms,也就是1000us,于是初始值=65535-1000+1=64536,然后我把64536化成16進(jìn)制=FC18,也就是高位TH0=0xFC  低位TL0=0x18,請(qǐng)問(wèn)大家這種方法有沒用錯(cuò)?除了這種方法,還有沒有其他賦值方法?下圖有一個(gè)時(shí)郭天祥的方法。我看不懂他為什么要這樣賦值,他和65535-x+1這種公式賦值方法有什么不一樣么,為何非要去搞得那么的復(fù)雜,又是除法運(yùn)算,又是模運(yùn)算的!
提問(wèn)完畢,謝謝大家��!
Screenshot_20181106-110550.png
Screenshot_20181106-110658.png
Screenshot_20181106-110252.png
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2018-11-6 13:01 | 顯示全部樓層
單片機(jī)的類型,很有關(guān)係,看看STC下載工具中的時(shí)鐘初始化代碼

回復(fù)

使用道具 舉報(bào)

ID:89515 發(fā)表于 2018-11-6 13:25 | 顯示全部樓層
都沒錯(cuò),都可以,你自己能看懂就行
回復(fù)

使用道具 舉報(bào)

ID:421675 發(fā)表于 2018-11-6 14:10 | 顯示全部樓層
郭天祥的方法其實(shí)和你說(shuō)的一樣只不過(guò)你的是自己算 他的賦值是你想計(jì)多少個(gè)數(shù)只需改變65536減的哪個(gè)數(shù)就可以,很方便,高八位賦值時(shí)/256的意思就是將低八位去掉只剩高八位賦值給高八位,低八位賦值時(shí),%256就是將高八位去掉只剩低八位賦值給低八位,無(wú)需你自己計(jì)算賦值。
回復(fù)

使用道具 舉報(bào)

ID:387733 發(fā)表于 2018-11-6 14:13 | 顯示全部樓層
一樣的呀,你說(shuō)的 65535-1000+1時(shí)1mS的,這個(gè)65536-50000是50mS的。使用 /256 和 %256是為了分別得到高8位與低8位,不要再人工化解了
回復(fù)

使用道具 舉報(bào)

ID:411811 發(fā)表于 2018-11-6 15:10 | 顯示全部樓層
哪位大佬和我說(shuō)說(shuō)(0xffff - 50000)/ 0xff 這種算法法和郭天祥的算法是不是一樣的
回復(fù)

使用道具 舉報(bào)

ID:404479 發(fā)表于 2018-11-6 16:53 來(lái)自手機(jī) | 顯示全部樓層
1657329982 發(fā)表于 2018-11-6 14:10
郭天祥的方法其實(shí)和你說(shuō)的一樣只不過(guò)你的是自己算 他的賦值是你想計(jì)多少個(gè)數(shù)只需改變65536減的哪個(gè)數(shù)就可以 ...

請(qǐng)問(wèn)我根據(jù)郭天祥的辦法,我定時(shí)1毫秒,那么TH0=(65536-1000)/256=252.09375,那么我把得到的252化成16進(jìn)制數(shù)=FC,這我能理解,但是他給TL0賦值時(shí)我就不能理解了,同樣的(65536-1000)%256=?這個(gè)大數(shù)字的取模這么算,65536-1000=64536,那么用64536%256=?  我算了一下首先64536÷256=252.09375這么多得余數(shù),怎么��?
回復(fù)

使用道具 舉報(bào)

ID:404479 發(fā)表于 2018-11-6 16:54 來(lái)自手機(jī) | 顯示全部樓層
sxhwdz 發(fā)表于 2018-11-6 14:13
一樣的呀,你說(shuō)的 65535-1000+1時(shí)1mS的,這個(gè)65536-50000是50mS的。使用 /256 和 %256是為了分別得到高8位 ...

請(qǐng)問(wèn)我根據(jù)郭天祥的辦法,我定時(shí)1毫秒,那么TH0=(65536-1000)/256=252.09375,那么我把得到的252化成16進(jìn)制數(shù)=FC,這我能理解,但是他給TL0賦值時(shí)我就不能理解了,同樣的(65536-1000)%256=?這個(gè)大數(shù)字的取模這么算,65536-1000=64536,那么用64536%256=?  我算了一下首先64536÷256=252.09375這么多得余數(shù),怎么��?
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2018-11-6 20:37 | 顯示全部樓層
專業(yè)級(jí)入門的我告訴你:
郭天祥的方法是對(duì)的,你的也是對(duì)的,結(jié)果是一樣的,還有,那+1要不要都不重要的,無(wú)源晶振你就別想著它能達(dá)到理想的12.00MHZ,有時(shí)候是11.88有時(shí)候是12.22.
雖然郭天祥的方法是對(duì),但那也是不對(duì)的,他忘記了他是教別人,你用一個(gè)新手沒有學(xué)過(guò)的東西去教新手,卻不告訴新手這是個(gè)什么原理,我看過(guò)網(wǎng)上對(duì)他書的評(píng)論,真不咋的.
8位機(jī)是沒有浮點(diǎn)這個(gè)說(shuō)法的,是不可能在機(jī)器內(nèi)部計(jì)算出一個(gè)小數(shù)點(diǎn)給你的
在8051或者大多的單片機(jī)機(jī)中,除以256是以不帶進(jìn)位標(biāo)志右移8次來(lái)完成的,而FC18=11111100 00011000="FC"高位加上 "18"低位.右移8個(gè)位,你看一下結(jié)果是不是FC?取模運(yùn)算是一樣的右移,然后只取之前的低8位的值.
如果你學(xué)過(guò)匯編你就會(huì)明白我說(shuō)的了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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