PIC16F690中断奇怪的问题

[复制链接]
 楼主| hellodjl 发表于 2013-10-9 08:58 | 显示全部楼层 |阅读模式
想法是用定时器计算一定值到时候LED灯闪烁,但是发现有些这样的程序,可以正常实现,但是将RA5改为RA4,或者RC7均实现不了这样的功能,用延时函数可以实现这样的功能,不知道是什么原因,还请高手赐教,谢谢!!
#include<htc.h>
#define uint unsigned int
#define uchar unsigned char
uint intnum;
void init();
void main()
{
        init();
        while(1)
        {
                if(intnum==5)
                {
                        intnum=0;
                        RA5=!RA5;
                }       
        }
}

void init()
{   TRISA=0;
        TRISB=0;
        TRISC=0;
        PORTA=0;
        PORTB=0;
        PORTC=0;
        OPTION_REG=0x07;
        INTCON=0xa0;
        TMR0=61;
}

void interrupt time0()
{
        T0IF=0;
        TMR0=61;
        intnum++;
}
yewuyi 发表于 2013-10-9 09:08 | 显示全部楼层
这一段代码本身就是问题。


1、尽量别写if(intnum==5)这种代码,最好是写成:if(intnum>=5)
2、在不具备IO缓存器的型号中,尽量不要对IO口进行位操作,最好使用整体直接赋值的方式操作,或者是建立一个变量作为IO缓存器。
3、注意关闭IO口上的复合功能模块,特别是模拟模块

评分

参与人数 1威望 +3 收起 理由
hellodjl + 3

查看全部评分

 楼主| hellodjl 发表于 2013-10-9 11:44 | 显示全部楼层
谢谢,找到答案啦,是需要关闭模拟模块,谢谢版主!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

153

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

153

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部