久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2622|回復: 9
打印 上一主題 下一主題
收起左側

單片機定時器產生54us的方波 存在20us左右的誤差

[復制鏈接]
跳轉到指定樓層
樓主
定時器產生54us的方波,用Proteus仿真一周期內總是存在20us左右的誤差,試了不一樣的方法,也是一樣的結果,用示波器檢測也是一樣存在誤差。代碼仿真如下:
#include<reg52.h> //頭文件
#include<intrins.h>

sbit P1_1=P1^1;//位定義

void Timer1_Init();//函數聲明

bit Flag1;

void main()
{
        Timer1_Init();
        while(1);
}
//定時器
void Timer1() interrupt 3
{
        TH1=(65536-54)/256;//重新賦值
        TL1=(65536-54)%256;
        P1_1=~P1_1;
}
void Timer1_Init()
{
        TMOD=0X10;//定時器1設置為16位進制
        TH1=(65536-54)/256;//賦初值,一周期存在20us左右誤差
        TL1=(65536-54)%256;
        TR1=1;//啟動計數
        ET1=1;
        EA=1;}






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2021-1-8 09:59 | 只看該作者
由于54us定時時間較短,中斷程序中運行TH1=(65536-54)/256;TL1=(65536-54)%256;運算需要占用時間。在ms級定時中此誤差可以忽略,在us級定時其誤差就會明顯。不過芯片設計者早為你想好了應對方法:使用8位自動重裝模式,在發生中斷的同時直接把TH1中數據賦值TL1。示例如下:

  1. #include<reg52.h> //頭文件

  2. sbit P1_1=P1^1;//位定義

  3. void Timer1_Init()                //54微秒@12.000MHz
  4. {
  5.         TMOD &= 0x0F;
  6.         TMOD |= 0x20;//定時器1設置8位自動重裝模式
  7.         TL1 = 0xCA;                //設置定時初值
  8.         TH1 = 0xCA;                //設置定時重載值
  9.         TR1 = 1;                //定時器1開始計時
  10.         ET1=1;
  11.         EA=1;
  12. }

  13. void main()
  14. {
  15.         Timer1_Init();
  16.         while(1);
  17. }
  18. //定時器
  19. void Timer1() interrupt 3
  20. {
  21.         P1_1=~P1_1;
  22. }

復制代碼



評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:390416 發表于 2021-1-8 10:24 | 只看該作者
用哪門子仿真呢?直接用實物做實驗 用單位的示波器抓取。
回復

使用道具 舉報

地板
ID:517466 發表于 2021-1-8 10:39 | 只看該作者
很正常啊。晶振的精度、溫度產生的漂移,都會產生誤差的。我以前的辦法是,通過設置按鍵或者串口發指令,調節定時器初始值,每次變動一個數,直到接近自己想要的結果未知。然后就用這個數據作為程序中的初始值去設置。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:658684 發表于 2021-1-8 10:56 | 只看該作者
人人學會單片機 發表于 2021-1-8 10:24
用哪門子仿真呢?直接用實物做實驗 用單位的示波器抓取。

我用示波器檢測過了,和仿真效果一樣
回復

使用道具 舉報

6#
ID:658684 發表于 2021-1-8 11:00 | 只看該作者
suncat0504 發表于 2021-1-8 10:39
很正常啊。晶振的精度、溫度產生的漂移,都會產生誤差的。我以前的辦法是,通過設置按鍵或者串口發指令,調 ...

我明白你意思了,因為我害怕是我代碼的問題導致的誤差,所以就發這個帖子,想讓大家幫忙看看到底是不是我代碼或者其他設置方面的問題,謝謝哈
回復

使用道具 舉報

7#
ID:844772 發表于 2021-1-8 11:20 | 只看該作者
wulin 發表于 2021-1-8 09:59
由于54us定時時間較短,中斷程序中運行TH1=(65536-54)/256;TL1=(65536-54)%256;運算需要占用時間。在ms級定 ...

靠譜,知道這個原因,但沒想過用重裝模式

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:658684 發表于 2021-1-8 11:20 | 只看該作者
wulin 發表于 2021-1-8 09:59
由于54us定時時間較短,中斷程序中運行TH1=(65536-54)/256;TL1=(65536-54)%256;運算需要占用時間。在ms級定 ...

好的好的,謝謝了,我下午試試
回復

使用道具 舉報

9#
ID:658684 發表于 2021-1-8 15:06 | 只看該作者
wulin 發表于 2021-1-8 09:59
由于54us定時時間較短,中斷程序中運行TH1=(65536-54)/256;TL1=(65536-54)%256;運算需要占用時間。在ms級定 ...

謝謝謝謝,十分感謝!問題已經解決了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:669393 發表于 2021-1-29 22:39 | 只看該作者
54us的定時用定時器模式2就夠了,8位重裝模式 256-53=203,而且你這種/256,%256的寫法應該是照著書上寫的。。我感覺轉成十六進制寫更好
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产三级精品视频 | 中文字幕高清 | 亚洲精品国产电影 | 国产亚洲精品久久久久久牛牛 | 午夜国产一区 | 精品欧美视频 | 国产成人精品一区二区 | 亚洲免费视频一区二区 | 国产毛片av | 亚洲精品乱码8久久久久久日本 | 草草影院ccyy | 亚洲精品久久久一区二区三区 | 中文字幕视频在线观看免费 | 欧美亚洲视频 | 亚洲国产精品激情在线观看 | 麻豆毛片 | 五月天国产视频 | 在线观看av网站永久 | 九九亚洲 | 影音先锋中文字幕在线观看 | 正在播放亚洲 | 亚洲一区二区三区四区在线观看 | a欧美 | 欧美性tv | 黄色国产视频 | 日韩在线中文字幕 | 日本韩国欧美在线观看 | 污污的网站在线观看 | 国产美女一区 | 亚洲精品电影网在线观看 | 亚洲欧美一区二区三区国产精品 | 国产精品欧美一区二区三区 | 亚洲精品一区二区三区中文字幕 | 激情小视频 | 久久99精品久久久久久狂牛 | 色综合欧美 | 91精品久久久久久久久中文字幕 | 精品国产伦一区二区三区观看体验 | 亚洲精品自拍 | 国产欧美精品一区二区色综合朱莉 | 欧美日本一区 |