欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: [已解決]奇怪,我的單片機計數器0工作1狀態下只能計10299以下的數? [打印本頁]

作者: wolfinn    時間: 2022-3-11 13:52
標題: [已解決]奇怪,我的單片機計數器0工作1狀態下只能計10299以下的數?
工作1是16位的啊,最高可以60000多的計數量的。單片機芯片是STC516RD+的。好奇怪!

作者: wolfinn    時間: 2022-3-11 13:54
計數器1一樣的,工作方式1也是只能計10299以下的數(包括10299)。
作者: hhh402    時間: 2022-3-11 19:42
程序呢?你怎么確定只能夠計數到10299?
作者: 188610329    時間: 2022-3-11 20:14
10299  =>   0010 1000 0011 1011

所以,你也不用去捉摸其他有的沒有的,就是你程序寫錯了。
作者: ghdtgjhn    時間: 2022-3-11 23:35
就像樓上說的  絕對是程序的問題
作者: wolfinn    時間: 2022-3-12 11:02
程序是沒有問題的,一個個數代進去試的,高開10299就不運行了。比如是10000的話,另一全局變量定時來就加1.滿100清零,相當開一秒,延后時鐘運算顯示,定時10299以下一切正常,想改比如50000,全局變量滿20清零,也相當于1秒,然后時鐘就不跳了。
作者: wolfinn    時間: 2022-3-12 11:09
本帖最后由 wolfinn 于 2022-3-12 11:19 編輯

你們也別武斷的說我的程序錯了,這只是改TH0和THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;改這個10000這個數而已,從10000到10299都可以,再多1都不行。
作者: wolfinn    時間: 2022-3-12 11:16
用定時0時TMOD為0x01,用定時1時TMOD為0x10。兩定時都是在可以跳的情況下改值的,正常時秒能跳,滿60秒分鐘也能跳,。
作者: wolfinn    時間: 2022-3-12 11:30
除了一個可能沒試,就是在外面給的是10299,中斷里面重裝時給10300,這樣應該能跳一個秒數。
作者: 188610329    時間: 2022-3-12 16:42
wolfinn 發表于 2022-3-12 11:09
你們也別武斷的說我的程序錯了,這只是改TH0和THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;改這個100 ...

說實話,我是真不知道,這樣  空空而談,對你解決問題有什么幫助么? 前面,已經把 10299 的2進制給你看了,現在,我在跟你講幾個基本原理,

首先,定時器,是計數到 65535,然后再 +1 溢出之后, 歸0, 所以 TH0 和 TL0 都會計數達到 0xFF (255) 然后溢出,這個原則是不變的。
然后,所謂的13位定時器, 他是用的 TH0 的8位   和 TL0 的5位, 從這個意義上來講, 你單純看 TH0  和 TL0 的值,它也是會計數到 6萬多的。
再然后,你說你用:
改TH0和THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;
撇開, THL0 這個名稱是不存在的, 2565 這個數值的奇怪之處, 都當你是論壇里的筆誤。你也不是計數只能到 10299 而是 從 5萬多開始計數。

至于為什么不動,基于發個貼證明你自己方法沒錯,都能有那么多“筆誤”,我依然認為你的程序里存在著這樣那樣的“筆誤”,這就是我說的你的程序是錯的。至少,就算我可以理解你是筆誤,但是編譯器不會管,編譯出來的程序,最終的結果,就是“錯”的。
作者: happy2058    時間: 2022-3-12 17:52
當你發現想不通的時候,就是程序問題。
作者: wolfinn    時間: 2022-3-12 18:33
188610329 發表于 2022-3-12 16:42
說實話,我是真不知道,這樣  空空而談,對你解決問題有什么幫助么? 前面,已經把 10299 的2進制給你看 ...

別說我錯了,我只改四處10000這個值,先50000,40000,30000,10000,多次改,最后發現10000處可以動。然后為了找這個值。500加,300加,然后幾十加,10300以下從沒有出現過不動的。
作者: wolfinn    時間: 2022-3-12 18:35
10299的二進制我也會算,一般不算出來,用公式讓機器去做,這樣知道是多少定時值。
作者: wolfinn    時間: 2022-3-12 18:38
現在是改四處10299就馬上行,10300馬上不行。你別說我用的是方式1,方式1的最大值是8192,16進制是0x2000
作者: mtdzok    時間: 2022-3-12 19:23
如果程序沒錯,那一定就是芯片錯了!
作者: rundstedt    時間: 2022-3-12 19:35
編譯器在預編譯階段運算THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;溢出了。
作者: wolfinn    時間: 2022-3-12 19:39
mtdzok 發表于 2022-3-12 19:23
如果程序沒錯,那一定就是芯片錯了!

終于有人說句象樣的話了,我只說一個現象,不放程序上來不是讓人來解決問題的。那樣我覺得學不到東西。對別人也是種折磨。有空我找找看,以前我買過幾個真AT89C52的,換個芯片試試。
作者: wolfinn    時間: 2022-3-12 19:41
用10000的值跑7個多小時,做的時鐘沒問題。就改這四個10000的數,看在什么地方定時器會停。,
作者: wolfinn    時間: 2022-3-12 19:42
發表于 2022-3-12 19:35
編譯器在預編譯階段運算THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;溢出了。

真正程序沒錯的,在論壇打多了個5.
作者: wolfinn    時間: 2022-3-12 20:04
我也直接寫入換算出來的值,還是不運行。現在是10300可以運行了。
作者: wolfinn    時間: 2022-3-12 20:13
最新消息,現在是10305不行,10304可以。哈哈,奇怪的芯片。
作者: wolfinn    時間: 2022-3-12 20:24
發表于 2022-3-12 19:35
編譯器在預編譯階段運算THL0=(65536-10000)/2565;THL0=(65536-10000)%2565;溢出了。

討論一下,這是常量運算,不會溢出吧?最多是得0,運行一次就停止了。
作者: Y_G_G    時間: 2022-3-12 23:25
在通常情況下,99%是代碼的問題,你這個問題,99.99%是你代碼的問題
整了兩天,你就只說不行,它怎么個不行?你怎么知道它不行?為什么不把代碼上傳一下?
你把代碼上傳一下,基本就能解決問題
在很多情況下,是代碼的問題,你這芯片還能下載,基本就是好的
作者: wolfinn    時間: 2022-3-13 07:04
問題解決。找到我舊的AT89S52芯片,換個實驗版燒進去,故障一樣的。查了下程序,原來我把定時器0初始化語句放WHILE(1)大循環里了,放前面OK。
作者: wolfinn    時間: 2022-3-13 07:07
本帖最后由 wolfinn 于 2022-3-13 09:31 編輯

又來了新問題,普中5的實驗板,燒不了AT89S52的芯片。用別的板子WIN7 64位又不認USBaSP驅動。下載幾個據說是WIN7 64位USBaSP的都不行。又有得搞。裝了個XP系統才能燒。

作者: wolfinn    時間: 2022-3-13 10:23
萬能的某一個寶,找了家賣USBASP下載線的商戶,從商品描述里找到了一個21.3M的驅動下載地址,下完裝入OK。現在是STC的51芯片只能用STC的軟件下載。AT89S52的只能用AVR_fighter來下載,兩者不能互用。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1