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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2467|回復: 4
收起左側

單片機定時器的軟件調試,定時時間為1ms,但是調試窗口中顯示時間已經達到1.4ms左右

[復制鏈接]
ID:358460 發表于 2020-7-12 07:48 | 顯示全部樓層 |閱讀模式
使用定時器1,在編寫定時器程序時,根據公式
定時時間=(65535-X)*(12/晶振頻率)

得到初值,編寫如下程序實驗
  1. #include <reg52.h>
  2. /*工作方式1_1ms延時函數*/
  3. void delay_ms(uint xms)
  4. {
  5.         while(xms!=0)
  6.         {
  7.                 TMOD=0x01;
  8.                 TR0=1;
  9.                 TH0=0xfc;TL0=0x66;
  10.                 while(TF0!=1);
  11.                 TF0=0;
  12.                 xms--;
  13.         }
  14.         TR0=0;
  15. }
  16. /*主程序*/
  17. void main()
  18. {
  19. delay_ms(1);
  20. }
復制代碼
定時時間為1ms,但是調試窗口中顯示時間已經達到1.4ms左右,晶振頻率為11.0592MHz設置無誤,不知道是什么原因,懇請高人解答。



回復

使用道具 舉報

ID:332444 發表于 2020-7-12 10:01 | 顯示全部樓層
定時器設置一次即可,為何要循環?
回復

使用道具 舉報

ID:782419 發表于 2020-7-12 21:41 | 顯示全部樓層
你為什么不用定時中斷?那樣精度會更好一點!
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:358460 發表于 2020-7-24 17:02 | 顯示全部樓層
xianfajushi 發表于 2020-7-12 10:01
定時器設置一次即可,為何要循環?

感謝回答
我定義一個delay_ms函數,意在延遲一定的時間,
        while(xms!=0)
        {
                TMOD=0x01;
                TR0=1;
                TH0=0xfc;TL0=0x66;
                while(TF0!=1);
                TF0=0;
                xms--;
        }
是將延遲1ms的動作執行xms次,每一次賦初值后,是等待定時器溢出才重新賦初值。我感覺這樣沒有問題,教材上也是如此。不知道是不是有其他問題。
回復

使用道具 舉報

ID:358460 發表于 2020-7-24 17:05 | 顯示全部樓層
wufeng391 發表于 2020-7-12 21:41
你為什么不用定時中斷?那樣精度會更好一點!

感謝回答
我想試驗一下這種方式,遇到這個問題。不知道是操作問題還是誤差問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表