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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機定時/計數器的疑惑

[復制鏈接]
ID:152785 發表于 2023-10-13 20:41 | 顯示全部樓層 |閱讀模式
下面的代碼來自STC89C52的手冊,代碼如下:
#include <reg52.h>

#define FOSC 18432000L
#define T1MS (65535-FOSC/12/1000)

sbit TEST_LED=P2^0;

unsigned int count;

void tm0_isr() interrupt 1
{
        TL0=T1MS;
        TH0=T1MS>>8;
        if(count--==0)
        {
                count=1000;
                TEST_LED=!TEST_LED;
        }
}

void main()
{
        TMOD=0x01;
        TL0=T1MS;
        TH0=T1MS>>8;
        TR0=1;
        ET0=1;
        EA=1;
        count=0;
        
        while(1);
}


代碼是用T0定時器,定時1秒翻轉led燈,源碼如下:
屏幕截圖 2023-10-13 203636.png 屏幕截圖 2023-10-13 203706.png
疑問1:
#define FOSC 18432000L   這個18432000L是什么意思?怎么得出來的?
疑問2:
測試這套代碼,演示并不準確,是程序本身出了問題,還是我操作有問題?
回復

使用道具 舉報

ID:1085441 發表于 2023-10-14 00:52 | 顯示全部樓層
1,18432000表示晶振頻率是18.432MHz
2,單片機平常用的是11.0592M或22.1184M,可能你的單片機晶振頻率是這個,與例子不一樣,所以定時不準確
回復

使用道具 舉報

ID:213173 發表于 2023-10-14 07:39 | 顯示全部樓層
//#define FOSC 18432000L//晶振頻率18.432MHz
//#define FOSC 12000000L//晶振頻率12.0MHz
#define FOSC 11059200L//晶振頻率11.0592MHz
//#define T1MS (65535-FOSC/12/1000)
#define T1MS (65536-FOSC/12/1000)
回復

使用道具 舉報

ID:1064915 發表于 2023-10-14 08:29 | 顯示全部樓層
常量也是有類型的,不同類型有不同的存儲空間。在常數后面加L,表示此常量為long類型的,占4字節空間.
回復

使用道具 舉報

ID:517951 發表于 2023-10-14 09:08 | 顯示全部樓層
定時器程序可以自己寫, 總體思路是晶振頻率(12分頻, 可以選擇不12分頻) 一次 ,定時器就加或減一下. 預設的TH0,TL0 溢出了就進入定時器中斷服務函數做處理(翻轉IO口電平).  
定時器有一定的精度, 但要求高就要換更高規格的時鐘芯片了.
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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