永发信息网

stc单片机PCA高速输出脉冲程序

答案:3  悬赏:60  手机版
解决时间 2021-02-01 12:56
stc单片机PCA高速输出脉冲程序为什么输出的频率不是100khz ,我的单片机工作晶振是11.0592MHZ的
#include "stc12.h"
#define fosc 11059200
#define T100KHZ (fosc/4/100000)
#define uint unsigned int
#define uchar unsigned char
uint value;
void main()
{
CCON =0;
CMOD =0x02;
CL=0;
CH=0;
value =T100KHZ;
CCAP0L=value;
CCAP0H=value>>8;
//value+=T100KHZ;
CCAPM0=0x4d;
CR=1;
EA=1;
}
void pca_isr()interrupt 7 using 1
{
CCF0=0;
CCAP0L=value;
CCAP0H=value>>8;
//value +=T100KHZ;
}
最佳答案
CCON = 0; //初始化PCA控制寄存器,PCA定时器停止,清除CF标志,清除模块中断标志
CL = 0; //复位PCA计数寄存器
CH = 0;
CMOD = 0x02; //设置PCA时钟源为sysclock/2,禁止PCA定时器溢出中断
value = T100KHz; //计算PCA输出100K方波应设定的值
CCAP0L = value; //将值得低8位赋给CCAP0L
CCAP0H = value >> 8; //高8位赋给CCAP0H

value += T100KHz; //累加,为下一次赋值做好准备。//这个地方绝对不能注释掉,产生方波就靠它了。

CCAPM0 = 0x4d; //PCA模块1为16位定时器模式,同时反转CEX0(P1.3)口
CR = 1; //PCA定时器开始工作
EA=1; //开中断
========================================================
void pca_isr()interrupt 7 using 1
{
CCF0=0;
CCAP0L=value;
CCAP0H=value>>8;

//value +=T100KHZ; //累加,这个地方也绝对不能注释掉。要产生方波,就得每次在原值的基础上加上同样的值。
}
全部回答
程序中的CCAP0L=value; CCAP0H=value>>8;是用来调节占空比的 而不是用来调频率的 ,你如果想调频率的话就得调节你PCA的时钟
由于stc的单片机里面没有pll,所以频率只会被分频,不会升高 从逻辑上来推导,应该是fosc/2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
成语接龙和气生财
怎么才能做隐士 需要什么物质条件
主播疯神榜第六期辛巴那一段的背景音乐是什么
若M为三角形ABC所在平面内一点,且满足(向量MB
良华网吧地址有知道的么?有点事想过去
覼的意思是什么啊?知道的请说下!
只有男方户口本可以给小孩办户口吗
明明很在乎一个人喜欢一个人为什么 却不知道
轸粟的意思是什么啊?知道的请说下!
牛油果味道像什么
维纳斯是什么神?
金顺网咖休闲会所地址在什么地方,想过去办事
以下关于seo的说法正确的是()
iOS11.2beta1弹出更新提示怎么办
宝马7系的日行灯是黄的好还是白色的
推荐资讯
为什么戴尔tb16不能直接为7720供电
添都的意思是什么啊?知道的请说下!
在一次科学发明上,同学们都尽显自己的才能。
主角是死神的小说,死神是西方的死神,不是动
齐鲁油最低多少投资
古代日全食怎么记载
南瓜蒸着吃好吗
斑衣戏彩的意思是什么啊?知道的请说下!
为什么一个男的有女朋友了,还要和其他女生聊
联想笔记本更换usb口
小米手机上的指南针坏了是硬件造成的吗
兰溪市马涧镇有圆通快递吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?