[PIC®/AVR®/dsPIC®产品] PIC18F87K22单片机H口输出控制继电器的问题!

[复制链接]
2213|8
 楼主| dlmudu 发表于 2015-11-6 17:09 | 显示全部楼层 |阅读模式
自己做了一块板子,遇到一个奇怪的问题,大家给我分析分析是不是硬件那里出了问题当按键启动三个继电器同时动作时,没有问题,当加上延时子程序时,见程序
if(!FGK)
{
        relay1=0;
        delay_100ms(100);
        relay2=0;
        delay_100ms(200);
        relay3=0;
        delay_100ms(300);
        FGK=1;
}
if(FGG==1)
{
        relay1=1;
        relay3=1;
        relay5=1;
        FGG=0;
}

问题来了,第一个继电器导通,延时后,当第二个继电器导通的同时,第一个继电器断开了,当第三个继电器导通后,第二个继电器断开了,最后就剩下第三个继电器是导通的

我在MPLAB IDE运行过程中,看到WATCH窗口的数据是应该都导通的,说明程序应该没有问题,大家给我看看硬件哪里出问题了

要是感觉软件问题,我再贴出来,劳烦大家了

本帖子中包含更多资源

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

×
ZG11211 发表于 2015-11-6 19:10 | 显示全部楼层
软件延时时间过长,建议启用定时器计时,分时处理。

评分

参与人数 1威望 +1 收起 理由
dlmudu + 1 赞一个!

查看全部评分

yklstudent 发表于 2015-11-6 19:33 | 显示全部楼层
明显自己程序的问题

评分

参与人数 1威望 +1 收起 理由
dlmudu + 1 很给力!

查看全部评分

 楼主| dlmudu 发表于 2015-11-6 20:13 | 显示全部楼层
yklstudent 发表于 2015-11-6 19:33
明显自己程序的问题

哪个地方明显了?我在PROTUES中仿真没有问题,在MPLABA IDE里运行,寄存器的参数也没问题,根据参数,就应该一直保持的,详细点好不!
 楼主| dlmudu 发表于 2015-11-6 20:14 | 显示全部楼层
ZG11211 发表于 2015-11-6 19:10
软件延时时间过长,建议启用定时器计时,分时处理。

延时程序会对这个问题有影响吗?我明天再试试定时器吧,但愿是这个问题
 楼主| dlmudu 发表于 2015-11-6 21:08 | 显示全部楼层
 楼主| dlmudu 发表于 2015-11-7 11:10 | 显示全部楼层
问题找出来了,用port寄存器是不对的,输出得用LAT寄存器,谢谢

不过得问一下版主,怎么才能结贴呢
lgq1542380129 发表于 2015-11-7 11:14 | 显示全部楼层
个人感觉可能有两点:①、电路,QJ1到3,是直接接的IO还是接了限流电阻,最好加限流电阻,防止IO灌电流过大。②,楼主relay1到3的宏定义,看看有没有错误。

评分

参与人数 1威望 +1 收起 理由
dlmudu + 1 很给力!

查看全部评分

 楼主| dlmudu 发表于 2015-11-18 13:14 | 显示全部楼层
lgq1542380129 发表于 2015-11-7 11:14
个人感觉可能有两点:①、电路,QJ1到3,是直接接的IO还是接了限流电阻,最好加限流电阻,防止IO灌电流过大 ...

寄存器定义的问题,输出用LAT,我用了PORT了,不过还是谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

57

帖子

0

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