找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

怎么開(kāi)啟stc89c52單片機(jī)定時(shí)器2,用定時(shí)器2產(chǎn)生一個(gè)38khz的方波

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:815936 發(fā)表于 2022-4-28 11:03 來(lái)自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
100黑幣
用定時(shí)器2產(chǎn)生一個(gè)38khz的方波信號(hào)。定時(shí)器0和1都被占用了,拜托各位大神了

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

使用道具 舉報(bào)

沙發(fā)
ID:89072 發(fā)表于 2022-4-28 11:57 | 只看該作者

2A772E52-D709-45d2-A36A-70E7715EE851.png (10.76 KB, 下載次數(shù): 48)

2A772E52-D709-45d2-A36A-70E7715EE851.png
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2022-4-28 12:05 | 只看該作者
1、用定時(shí)器2做中斷
2、中斷時(shí)間:1/38khz/2=13158uS
3、每次中斷將P1.1求反,則P1.1就輸出38khz了。
回復(fù)

使用道具 舉報(bào)

地板
ID:732794 發(fā)表于 2022-4-28 12:10 | 只看該作者
#include "reg52.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;

//-----------------------------------------------

/* define constants */
#define FOSC 11059200L

#define F38_4KHz    (65536-18432000/4/38400)

/* define SFR */

sfr T2CON = 0xc8;                   //timer2 control register
sbit TF2  = T2CON^7;
sbit TR2  = T2CON^2;

sfr T2MOD = 0xc9;                   //timer2 mode register
sfr RCAP2L = 0xca;
sfr RCAP2H = 0xcb;
sfr TL2 = 0xcc;
sfr TH2 = 0xcd;

sbit T2 = P1^0;                     //Clock Output pin

//-----------------------------------------------

/* main program */
void main()
{
    T2MOD = 0x02;                   //enable timer2 output clock
    RCAP2L = TL2 = F38_4KHz;        //initial timer2 low byte
    RCAP2H = TH2 = F38_4KHz >> 8;   //initial timer2 high byte
    TR2 = 1;                        //timer2 start running
    EA = 1;                         //open global interrupt switch

    while (1);                      //loop
}
回復(fù)

使用道具 舉報(bào)

5#
ID:390416 發(fā)表于 2022-4-28 12:28 | 只看該作者
在STC-ISP軟件上面,配置一下,然后再使能T2的中斷,和EA=1,就可以啟動(dòng)定時(shí)器2了,然后添加定時(shí)器2的中斷服務(wù)函數(shù)即可,一般都是自動(dòng)重裝初值的。
回復(fù)

使用道具 舉報(bào)

6#
ID:161164 發(fā)表于 2022-4-28 12:49 來(lái)自觸屏版 | 只看該作者
yzwzfyz 發(fā)表于 2022-4-28 12:05
1、用定時(shí)器2做中斷
2、中斷時(shí)間:1/38khz/2=13158uS
3、每次中斷將P1.1求反,則P1.1就輸出38khz了。

少了一個(gè)小數(shù)點(diǎn)
13.158us
回復(fù)

使用道具 舉報(bào)

7#
ID:74582 發(fā)表于 2022-4-28 13:05 | 只看該作者
幫忙頂起來(lái)
回復(fù)

使用道具 舉報(bào)

8#
ID:121859 發(fā)表于 2022-4-28 13:58 | 只看該作者
        RCAP2H=(65536-13)/256;
        RCAP2L=(65536-13)%256;
          TH2=RCAP2H;
        TL2=RCAP2L;
        ET2=1;  
        TR2=1;
回復(fù)

使用道具 舉報(bào)

9#
ID:815936 發(fā)表于 2022-4-28 14:37 來(lái)自觸屏版 | 只看該作者
謝謝大家支持
回復(fù)

使用道具 舉報(bào)

10#
ID:624769 發(fā)表于 2022-4-28 16:49 | 只看該作者

#define FOSC  11059200L //設(shè)置主頻
#define Mode  4  //12T為4, 6T為2
#define OUTPUT_HZ 38400  //方波頻率
#define T2Reload (65536-FOSC/Mode/OUTPUT_HZ) //定時(shí)器初值(自動(dòng)計(jì)算)

sfr T2CON = 0xc8;
sbit TF2  = T2CON^7;
sbit TR2  = T2CON^2;
sfr T2MOD = 0xc9;
sfr16 RCAP2 = 0xca;
sfr16 Timer2 = 0xcc;

void main()
{
    T2MOD = 0x02;                   //從P1.0(T2引腳) 輸出方波
    RCAP2 = Timer2 = T2Reload;      //T2初值
    TR2 = 1;                        //T2運(yùn)行
    while (1);
}

注意: 不需要開(kāi)T2中斷,不需要設(shè)置輸出引腳,方波的輸出,是定死在P1.0的,前3個(gè)define 根據(jù)你單片機(jī)設(shè)置情況,以及需要的方波填寫(xiě)。

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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