打印
[PIC®/AVR®/dsPIC®产品]

PIC18F87K22单片机H口输出控制继电器的问题!

[复制链接]
1807|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里运行,寄存器的参数也没问题,根据参数,就应该一直保持的,详细点好不!

使用特权

评论回复
5
dlmudu|  楼主 | 2015-11-6 20:14 | 只看该作者
ZG11211 发表于 2015-11-6 19:10
软件延时时间过长,建议启用定时器计时,分时处理。

延时程序会对这个问题有影响吗?我明天再试试定时器吧,但愿是这个问题

使用特权

评论回复
6
dlmudu|  楼主 | 2015-11-6 21:08 | 只看该作者
问题和这个帖子类似https://bbs.21ic.com/icview-262766-1-1.html

使用特权

评论回复
7
dlmudu|  楼主 | 2015-11-7 11:10 | 只看该作者
问题找出来了,用port寄存器是不对的,输出得用LAT寄存器,谢谢

不过得问一下版主,怎么才能结贴呢

使用特权

评论回复
8
lgq1542380129| | 2015-11-7 11:14 | 只看该作者
个人感觉可能有两点:①、电路,QJ1到3,是直接接的IO还是接了限流电阻,最好加限流电阻,防止IO灌电流过大。②,楼主relay1到3的宏定义,看看有没有错误。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
dlmudu + 1 很给力!
9
dlmudu|  楼主 | 2015-11-18 13:14 | 只看该作者
lgq1542380129 发表于 2015-11-7 11:14
个人感觉可能有两点:①、电路,QJ1到3,是直接接的IO还是接了限流电阻,最好加限流电阻,防止IO灌电流过大 ...

寄存器定义的问题,输出用LAT,我用了PORT了,不过还是谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

57

帖子

0

粉丝