標(biāo)題: 52單片機(jī)的timer2時鐘輸出500KHz頻率的源程序 [打印本頁]

作者: 虎黑    時間: 2018-7-15 16:38
標(biāo)題: 52單片機(jī)的timer2時鐘輸出500KHz頻率的源程序
STC89C52RC可以用P1.0輸出500KHz的頻率,此處為本人自己寫的源碼和整個工程,望能助有緣人一臂之力!

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. sfr T2MOD=0xc9;

  3. sbit clk_out=P1^0; //時鐘輸出端

  4. void t2_clock(void)

  5. {

  6. C_T2=0; //定時器模式

  7. T2MOD=0x02; //T2OE=1,定時器2允許輸出

  8. RCAP2L=0Xfa; //賦T2的預(yù)置值0xfffa,輸出頻率500K

  9. RCAP2H=0Xff;

  10. TR2=1;

  11. }

  12. void main(void)

  13. {

  14. t2_clock();

  15. while(1);

  16. }
復(fù)制代碼

所有資料51hei提供下載:
Timer2時鐘頻率輸出.zip (21.7 KB, 下載次數(shù): 20)



作者: shenyuqiu    時間: 2019-8-19 09:34
下載仿真試了,程序根本沒輸出,沒仿真
作者: seenian    時間: 2020-12-1 09:38
老哥,現(xiàn)在在proteus8. 6里仿真成功在7. 8就不輸出,過兩天用實物試一下,如果成功了,再來感謝你。
作者: 6620680    時間: 2020-12-1 11:47
用實物試也很簡單!
作者: rsx9583    時間: 2020-12-1 14:49
#include "reg51.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;

#define FOSC 11059200L

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

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

sfr AUXR      = 0x8e;               //輔助特殊功能寄存器
sfr INT_CLKO  = 0x8f;               //喚醒和時鐘輸出功能寄存器

sbit T1CLKO   = P3^4;               //定時器1的時鐘輸出腳

#define F38_4KHz (65536-FOSC/2/38400)    //1T模式
//#define F38_4KHz (65536-FOSC/2/12/38400) //12T模式

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

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;

    AUXR |= 0x40;                   //定時器1為1T模式
//  AUXR &= ~0x40;                  //定時器1為12T模式

    TMOD = 0x00;                    //設(shè)置定時器為模式1(16位自動重裝載)
   
    TMOD &= ~0x40;                  //C/T1=0, 對內(nèi)部時鐘進(jìn)行時鐘輸出
//  TMOD |= 0x40;                   //C/T1=1, 對T1引腳的外部時鐘進(jìn)行時鐘輸出

    TL1 = F38_4KHz;                 //初始化計時值
    TH1 = F38_4KHz >> 8;
    TR1 = 1;
    INT_CLKO = 0x02;                //使能定時器1的時鐘輸出功能

    while (1);                      //程序終止
}

用這個程序把時鐘主頻及輸出頻率改一下,效果不錯。我前一陣做了個400K的脈沖發(fā)生器。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1