专业级入门的我告诉你: 郭天祥的方法是对的,你的也是对的,结果是一样的,还有,那+1要不要都不重要的,无源晶振你就别想着它能达到理想的12.00MHZ,有时候是11.88有时候是12.22. 虽然郭天祥的方法是对,但那也是不对的,他忘记了他是教别人,你用一个新手没有学过的东西去教新手,却不告诉新手这是个什么原理,我看过网上对他书的评论,真不咋的. 8位机是没有浮点这个说法的,是不可能在机器内部计算出一个小数点给你的 在8051或者大多的单片机机中,除以256是以不带进位标志右移8次来完成的,而FC18=11111100 00011000="FC"高位加上 "18"低位.右移8个位,你看一下结果是不是FC?取模运算是一样的右移,然后只取之前的低8位的值. 如果你学过汇编你就会明白我说的了 |
sxhwdz 发表于 2018-11-6 14:13 请问我根据郭天祥的办法,我定时1毫秒,那么TH0=(65536-1000)/256=252.09375,那么我把得到的252化成16进制数=FC,这我能理解,但是他给TL0赋值时我就不能理解了,同样的(65536-1000)%256=?这个大数字的取模这么算,65536-1000=64536,那么用64536%256=? 我算了一下首先64536÷256=252.09375这么多得余数,怎么取? |
1657329982 发表于 2018-11-6 14:10 请问我根据郭天祥的办法,我定时1毫秒,那么TH0=(65536-1000)/256=252.09375,那么我把得到的252化成16进制数=FC,这我能理解,但是他给TL0赋值时我就不能理解了,同样的(65536-1000)%256=?这个大数字的取模这么算,65536-1000=64536,那么用64536%256=? 我算了一下首先64536÷256=252.09375这么多得余数,怎么取? |
哪位大佬和我说说(0xffff - 50000)/ 0xff 这种算法法和郭天祥的算法是不是一样的 |
一样的呀,你说的 65535-1000+1时1mS的,这个65536-50000是50mS的。使用 /256 和 %256是为了分别得到高8位与低8位,不要再人工化解了 |
郭天祥的方法其实和你说的一样只不过你的是自己算 他的赋值是你想计多少个数只需改变65536减的哪个数就可以,很方便,高八位赋值时/256的意思就是将低八位去掉只剩高八位赋值给高八位,低八位赋值时,%256就是将高八位去掉只剩低八位赋值给低八位,无需你自己计算赋值。 |
都没错,都可以,你自己能看懂就行 |
單片機的類型,很有關係,看看STC下載工具中的時鐘初始化代碼 |