问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PIC16F877A单片机 我不想使用外部的石英晶振,怎样设置使用内部振荡器让单片机跑起来呢?

发布网友 发布时间:2022-05-05 06:51

我来回答

1个回答

热心网友 时间:2023-10-13 21:08

给公司做一块电路板,通过定时器定时,但发现速度有点慢可能自动启用了内部RC振荡,可我怎么设都不能用外部晶振。芯片为PIC16F877A 晶振用的是4.194304M 两个启振电容为30P. 当中intnum计到20才为1秒 ,实际计算下来值为6刚好1秒。用示波器测晶振两个脚整个系统处于死状态。请各位老师指点一下我写的程序和教程上一样但延时出来的时间为什么不一样呢?是不是晶振一定要是4M的?

程序如下( 当中部分端口设置省略了但主要程序上传上来)

#include<pic.h>
__CONFIG(0x2f3e); //开HS高频振荡,看门狗开启
void init()
{ INTCON=0xc0;//总中断使能
PIE1=0x01;//打开定时器1
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//溢出时间为50ms
T1CON=0x21;//0010 0001 预分频为4倍
}
void interrupt time0()
{
TMR1IF=0;//中断标志必须软件清0
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//初值要重装
intnum++;
}
void main()
{
dksz(); //调用端口设置
init(); //定时器0初始
watch_init();//启动看门狗
while(1)
{
if(intnum==6)//刚好1秒 教程上20才为1秒不知为何有这么大出入
{
RA3=1; //红灯亮 RA2=0; //绿灯灭 RA1=0; //黄灯灭
}
}

解决方案:

#include<pic.h>

__CONFIG(0x3872); // HS, 关闭看门狗, LVP 关闭

void init()
{
ADCON1 = 0x06; // 关闭IO 端口摸拟功能
TRISA = 0x00;

TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//溢出时间为50ms

T1CON=0x01;//0010 0001 预分频为1:1

INTCON=0xc0;//总中断使能
PIE1=0x01;//打开定时器1
}

void interrupt time0()
{
static char intnum = 0;

TMR1IF=0;//中断标志必须软件清0
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//初值要重装

if (++intnum == 20)
{
intnum = 0;

RA3 = ~RA3; // 输出取反测试
}
}

void main()
{
init(); //定时器0初始

while(1)
{
}
}

1, 定时器1, 单片机 工作为4M , 每个指令周期为1us , 分频要设置为1:1 分频.

2, 测试方法错误, 从单片机上电,到运行要一定的时间.追问答非所问!

热心网友 时间:2023-10-13 21:08

给公司做一块电路板,通过定时器定时,但发现速度有点慢可能自动启用了内部RC振荡,可我怎么设都不能用外部晶振。芯片为PIC16F877A 晶振用的是4.194304M 两个启振电容为30P. 当中intnum计到20才为1秒 ,实际计算下来值为6刚好1秒。用示波器测晶振两个脚整个系统处于死状态。请各位老师指点一下我写的程序和教程上一样但延时出来的时间为什么不一样呢?是不是晶振一定要是4M的?

程序如下( 当中部分端口设置省略了但主要程序上传上来)

#include<pic.h>
__CONFIG(0x2f3e); //开HS高频振荡,看门狗开启
void init()
{ INTCON=0xc0;//总中断使能
PIE1=0x01;//打开定时器1
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//溢出时间为50ms
T1CON=0x21;//0010 0001 预分频为4倍
}
void interrupt time0()
{
TMR1IF=0;//中断标志必须软件清0
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//初值要重装
intnum++;
}
void main()
{
dksz(); //调用端口设置
init(); //定时器0初始
watch_init();//启动看门狗
while(1)
{
if(intnum==6)//刚好1秒 教程上20才为1秒不知为何有这么大出入
{
RA3=1; //红灯亮 RA2=0; //绿灯灭 RA1=0; //黄灯灭
}
}

解决方案:

#include<pic.h>

__CONFIG(0x3872); // HS, 关闭看门狗, LVP 关闭

void init()
{
ADCON1 = 0x06; // 关闭IO 端口摸拟功能
TRISA = 0x00;

TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//溢出时间为50ms

T1CON=0x01;//0010 0001 预分频为1:1

INTCON=0xc0;//总中断使能
PIE1=0x01;//打开定时器1
}

void interrupt time0()
{
static char intnum = 0;

TMR1IF=0;//中断标志必须软件清0
TMR1L=(65536-50000)%256;
TMR1H=(65536-50000)/256;//初值要重装

if (++intnum == 20)
{
intnum = 0;

RA3 = ~RA3; // 输出取反测试
}
}

void main()
{
init(); //定时器0初始

while(1)
{
}
}

1, 定时器1, 单片机 工作为4M , 每个指令周期为1us , 分频要设置为1:1 分频.

2, 测试方法错误, 从单片机上电,到运行要一定的时间.追问答非所问!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
鞋底是空心格子怎么办 鞋里有格子硌脚怎么办 买的鞋子里面是空心格子底硌脚怎么办 鞋子底是空心格子的怎样办 浅谈NY5196—2002有机茶 有机食品茶叶标准 茶叶的储藏运销:茶叶贮藏期的化学变化 东方美人茶要怎么储存?东方美人茶储存方法 乌龙茶贮运方法 有机乌龙茶是什么贮藏与运输的? PIC16F877单片机的5个端口RA~RE各具什么特色?分别适用于什么场合? pic16f877a系列单片机串口接收中断屏蔽后,若外部有串口数据不断的发入,单片机会溢出出错吗! 头皮屑真多怎么办? 求单片机的。用PIC16f877设计可调速流水灯的电路图及程序,拜托了 头屑太多怎么办呢? PIC16F874 PIC16F877 区别 PIC16F877单片机如何实现定时开机和定时关机? 单片机 PIC16F877 电饼铛哪个牌子好= 新的一年的句子 适合新的一年第二天发圈的句子 祝新的一年开始的句子 新娘妆怎样选择?需注意哪些问题? 选择新娘跟妆时要注意什么 新娘跟妆有哪些细节 新娘跟妆需注意细节 作为一名化妆师,试妆的时候该如何跟顾客沟通,该说些什么,才能不冷场。 很多人都是专柜免费试妆,柜姐真的会给化妆吗? 关于结婚前试妆该定在什么时候更合适 结婚试妆要注意哪些 婚纱试妆需要注意什么 用PIC16F877单片机时不用的引脚应该怎么处理亚,悬空么 一品焖锅和黄记煌三汁焖锅哪个比较好吃 aoc m2060swd显示器怎么样?优缺点速答。 求惠普hp m1522nf打印机的驱动……… 黄记煌焖锅的酱汁非常好吃,在家怎么自己调制? 绿源电动车的电机号是SWDX C48430LYBHM01436,请问能查出它的车架号吗? 仙剑奇侠传四剧情宝典 50多M的那个 能不能发我一个 wjswd123@163.com 谢了 冠捷m2060swd和i2080sw哪个好 AOC M2060SWD和AOC E970SWN 一品焖锅(燕郊永旺店)的五花肉好不好吃 吴昕代言的瘦身霜有用吗 峰蜜和醋放在一起喝有什么好处 phpcms中怎么上传视频 在phpcms内容管理模块中 添加内容时怎么上传视频到自己的服务器呢 phpcms如何在首页上添加视频模块 问一个关于PHPCMS视频模块的视频上传问题 phpcms怎么添加网络视频 phpcms https 文件上传 phpcms程序如何在文章中插入优酷视频,请高手指教,最好能回答的详细些,感激不尽! phpcms急 请问怎么回事?视频上传问题