找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1600|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機(jī)定時(shí)/計(jì)數(shù)器的疑惑

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:152785 發(fā)表于 2023-10-13 20:41 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
下面的代碼來自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定時(shí)器,定時(shí)1秒翻轉(zhuǎn)led燈,源碼如下:

疑問1:
#define FOSC 18432000L   這個(gè)18432000L是什么意思?怎么得出來的?
疑問2:
測試這套代碼,演示并不準(zhǔn)確,是程序本身出了問題,還是我操作有問題?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1085441 發(fā)表于 2023-10-14 00:52 | 只看該作者
1,18432000表示晶振頻率是18.432MHz
2,單片機(jī)平常用的是11.0592M或22.1184M,可能你的單片機(jī)晶振頻率是這個(gè),與例子不一樣,所以定時(shí)不準(zhǔn)確
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 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)
回復(fù)

使用道具 舉報(bào)

地板
ID:1064915 發(fā)表于 2023-10-14 08:29 | 只看該作者
常量也是有類型的,不同類型有不同的存儲空間。在常數(shù)后面加L,表示此常量為long類型的,占4字節(jié)空間.
回復(fù)

使用道具 舉報(bào)

5#
ID:517951 發(fā)表于 2023-10-14 09:08 | 只看該作者
定時(shí)器程序可以自己寫, 總體思路是晶振頻率(12分頻, 可以選擇不12分頻) 一次 ,定時(shí)器就加或減一下. 預(yù)設(shè)的TH0,TL0 溢出了就進(jìn)入定時(shí)器中斷服務(wù)函數(shù)做處理(翻轉(zhuǎn)IO口電平).  
定時(shí)器有一定的精度, 但要求高就要換更高規(guī)格的時(shí)鐘芯片了.
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表