找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2123|回复: 0
收起左侧

请问stc15单片机芯片这个更改频率的程序是否有效?

[复制链接]
ID:480680 发表于 2019-7-26 14:59 | 显示全部楼层 |阅读模式
占空比可以不变,一直是百分之50,直接改变定时器定时时长周期=1/频率   定时时长=周期/2假设晶振频率12M,定时器可以定时1us至65ms1000HZ时周期1ms,定时500us   50HZ时周期为20ms 定时10ms,刚好在其定时范围内.以下是我写的程序

#include "15.h"               
#define uchar unsigned char
#define uint  unsigned int
#define CCP_S0   0x10
#define CCP_S1   0x20
sbit pluse=P1^1;
sbit key1=P2^0;
uint f=0,t;
void delayms(uint z)
{
        uint i,j;
        for(i=z;i>=0;i--)
        for(j=110;j>=0;j--);
}
void keyscan()
{
if(key1==0)
{  
        delayms(10);//延时消抖
        if(key1==0)
        {
                while(key1==0);//等待按键抬起
                f=f+50;//频率增加50HZ
        }
        if(f>1000)
                f=50;//超过1000HZ回到最低50HZ
                t=1000000/f/2;//计算定时器定时时长,即计时脉冲个数
}
}
void T0_timer()  interrupt 1
{
        TL0=(65536-t)%256;
        TH0=(65536-t)/256;
        pluse=~pluse;
}
void init()
{

        TMOD=0x01;
    TL0=(65536-t)%256;
        TH0=(65536-t)/256;
        EA=1;
        ET0=1;
        TR0=1;
}
void pwminit()
{
        CMOD=0x20; //系统频率为原来的二分之一
        CCAPM0=0x42;
        PCA_PWM0=0x00;
        CH=0;
        CL=0;
        CCAP0H=128;           //初始化装载值
        CCAP0L=128;
        CR=1;
}
void main()
{
        ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);              //CCP_S0=0 CCP_S1=0
    P_SW1 = ACC;                            //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)

//  ACC = P_SW1;
//  ACC &= ~(CCP_S0 | CCP_S1);              //CCP_S0=1 CCP_S1=0
//  ACC |= CCP_S0;                          //(P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
//  P_SW1 = ACC;
//
//  ACC = P_SW1;
//  ACC &= ~(CCP_S0 | CCP_S1);              //CCP_S0=0 CCP_S1=1
//  ACC |= CCP_S1;                          //(P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
//  P_SW1 = ACC;
        init();
        pwminit();
        while(1)
        {
                keyscan();        
        }
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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