新手求助

[复制链接]
327|10
 楼主 | 2018-2-1 17:40 | 显示全部楼层 |阅读模式
我用pic12F1822的单片机 ,烧录了一段程序,功能是延时1秒钟左右某个IO口输出取反,也就是想输出占空比为50%的方波,结果上电以后用示波器观察,发现占空比为60%以上,且在60%到67%之间有浮动。我把该io口悬空,再用示波器看,还是一样的结果。还有我用2块这种单片机烧录同样的程序,同时上电,发现输出的方波频率有几个mhz的差异,到底我错在哪里啊?
 楼主 | 2018-2-1 17:43 | 显示全部楼层
我是想用几个单片机输出一模一样的占空比都为50%的方波,但是发现不同个体输出的方波频率有比较小的差异,且占空比为60%多,我没有用片外晶振。请指教
| 2018-2-1 17:55 | 显示全部楼层
假设延时是用定时器做的,且定时正确。
那么,
IO没有接负载吗?
IO先改用上拉输出再试一下!
 楼主 | 2018-2-1 18:46 | 显示全部楼层
感谢回复我,这个io口是输出经三极管放大后控制mos管开关灯板的,程序就是延时后取反,反复循环,没用定时器,照理来说占空比应该是50%啊,我在使用这款单片机的时候发现相同的程序烧录在2个片子里面,出来的波形周期时间并不完全相同,难道是因为晶振在2个片子内部频率并不完全相同吗
| 2018-2-1 19:56 | 显示全部楼层
slnbcumt 发表于 2018-2-1 18:46
感谢回复我,这个io口是输出经三极管放大后控制mos管开关灯板的,程序就是延时后取反,反复 ...

程序贴出来看看吧
| 2018-2-1 19:57 | 显示全部楼层
slnbcumt 发表于 2018-2-1 18:46
感谢回复我,这个io口是输出经三极管放大后控制mos管开关灯板的,程序就是延时后取反,反复 ...

程序贴出来看看吧
 楼主 | 2018-2-1 20:52 | 显示全部楼层
郑朝清 发表于 2018-2-1 19:57
程序贴出来看看吧

unsigned char int_flag;

void interrupt int_9v()
{
    INTF=0;
    INTE=0;
    int_flag=1;
}
void main(void)
{
    int a,b;   
    WPUA=0;   
    SWDTEN=0;
    ANSELA =0x00;
    TRISA=0X0C;
    LATA=0;
    RA0=0;
    INTEDG=1;
    GIE=1;
    INTE=1;
    while(int_flag==0);
    int_flag=0;
    while(1)
    {

        RA0=!LATA0;
        for(a=100;a>1;a--)
        {
            for(b=100;b>1;b--);
        }
        
     }   
 楼主 | 2018-2-1 20:58 | 显示全部楼层
郑朝清 发表于 2018-2-1 19:57
程序贴出来看看吧

谢谢关注,我第一次用这个单片机,程序凑合着看,主要是我把这程序烧录到2个片子里面,用示波器看RA2端引起中断的信号波形一直都是重合的,即基本一致,没什么纹波,但是输出io的波形一开始同步,但是慢慢的就错开了,一看一个频率是480mhz,另一个是476mhz,且有几mhz的波动,慢慢就错开了,然后我就想别的法子,上面的程序是后来想验证想法改过了的,想试试就开头中断依次,然后定时,看波形能一直同步不,结果发现占空比都不是50%,而且也是慢慢错开,我就懵了,想是否是片内晶振有差异的缘故,请指点
| 2018-2-2 16:43 | 显示全部楼层
时钟问题吧
| 2018-2-5 12:44 | 显示全部楼层
内部晶振有误差!
精确定时,推荐外接振荡器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-2-5 15:42 | 显示全部楼层
fy1999 发表于 2018-2-5 12:44
内部晶振有误差!
精确定时,推荐外接振荡器

非常感谢回复我的朋友,遇到问题再来和你们分享
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

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