找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2995|回复: 4
收起左侧

52单片机的timer2时钟输出500KHz频率的源程序

[复制链接]
ID:372027 发表于 2018-7-15 16:38 | 显示全部楼层 |阅读模式
STC89C52RC可以用P1.0输出500KHz的频率,此处为本人自己写的源码和整个工程,望能助有缘人一臂之力!

单片机源程序如下:
  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的预置值0xfffa,输出频率500K

  9. RCAP2H=0Xff;

  10. TR2=1;

  11. }

  12. void main(void)

  13. {

  14. t2_clock();

  15. while(1);

  16. }
复制代码

所有资料51hei提供下载:
Timer2时钟频率输出.zip (21.7 KB, 下载次数: 20)
回复

使用道具 举报

ID:385637 发表于 2019-8-19 09:34 | 显示全部楼层
下载仿真试了,程序根本没输出,没仿真
回复

使用道具 举报

ID:826428 发表于 2020-12-1 09:38 来自手机 | 显示全部楼层
老哥,现在在proteus8. 6里仿真成功在7. 8就不输出,过两天用实物试一下,如果成功了,再来感谢你。
回复

使用道具 举报

ID:852300 发表于 2020-12-1 11:47 | 显示全部楼层
用实物试也很简单!
回复

使用道具 举报

ID:468878 发表于 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;                    //设置定时器为模式1(16位自动重装载)
   
    TMOD &= ~0x40;                  //C/T1=0, 对内部时钟进行时钟输出
//  TMOD |= 0x40;                   //C/T1=1, 对T1引脚的外部时钟进行时钟输出

    TL1 = F38_4KHz;                 //初始化计时值
    TH1 = F38_4KHz >> 8;
    TR1 = 1;
    INT_CLKO = 0x02;                //使能定时器1的时钟输出功能

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

用这个程序把时钟主频及输出频率改一下,效果不错。我前一阵做了个400K的脉冲发生器。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表