标题: 请教一个非常简单的起保停电路 [打印本页]

作者: 孤独行者    时间: 2020-3-3 09:56
标题: 请教一个非常简单的起保停电路
初学单片机想写一个起保停电路,开始觉得很简单(因为以前写过PLC的),后来自己写了发现单片机的扫描和PLC的不一样不能像PLC的去写,就是我写了一个按键去置位一个位M0,while(M0)然后像让下面的程序在这个WHILE里面一直循环,,然后我在用另一个按键去复位M0就可以这样,但是现实中单片机去了执行WHILE里面的程序就不会跳出来执行扫描我另外一个按键了,,所以停不了这样

作者: haierzaifei11    时间: 2020-3-3 13:59
下面的程序????没有程序啊,你仔细看看中断位置。设置合理不,我也不会
作者: 孤独行者    时间: 2020-3-3 16:37
haierzaifei11 发表于 2020-3-3 13:59
下面的程序????没有程序啊,你仔细看看中断位置。设置合理不,我也不会

有啊,里面还有几个根据输入再去相应输出的程序,中断我也想过,,但是如果需要多个起保停的话,很明显中断是不行的
作者: f556    时间: 2020-3-3 17:31
好象是程序思路问题,这样行不:
while(1)
{
   监测key0;  M0=1;
    while(M0)
    {
       处理key0;
     监测key1;  M0=0;
         while(M1)
               {  
                 处理key1;
           }

   }

作者: brew9    时间: 2020-3-3 18:28
你如果把while(M0)和按键判断程序都放在主循环while(1)里,当用按键设置M0为1后,程序会永远卡在while(M0)那,不会再响应其它代码了。可以考虑把按键判断放在中断里面试试,或者在while(M0)里加入判断使其能退出。
作者: sunxxxx3321    时间: 2020-3-3 19:41
单片机好多人被挡住被难住的入门条件就是这类的。
作者: sunxxxx3321    时间: 2020-3-3 19:49
这个问题难住了好多刚入门的!
你要反逻辑去写;就是IF判断停止按钮是不是被按下,按下就复位M0。
没有按下再判断停止按钮没有按下与启动按钮被按下置位M0.
作者: 孤独行者    时间: 2020-3-4 08:03
f556 发表于 2020-3-3 17:31
好象是程序思路问题,这样行不:
while(1)
{

检测哪里是IF语句吗,
作者: 孤独行者    时间: 2020-3-4 08:04
brew9 发表于 2020-3-3 18:28
你如果把while(M0)和按键判断程序都放在主循环while(1)里,当用按键设置M0为1后,程序会永远卡在while(M0) ...

中断不行,如果需要多个这样的程序就不太现实了
作者: 孤独行者    时间: 2020-3-4 08:05
sunxxxx3321 发表于 2020-3-3 19:49
这个问题难住了好多刚入门的!
你要反逻辑去写;就是IF判断停止按钮是不是被按下,按下就复位M0。
没有按 ...

我就是新手
作者: f556    时间: 2020-3-4 10:48
孤独行者 发表于 2020-3-4 08:03
检测哪里是IF语句吗,

是的,除了if判断,可能还要消抖,我主要想说明的逻辑思路
作者: lrkeji1982    时间: 2020-3-4 11:31
不懂你的具体需求,起保停就两个按键,一个开按钮和一个关按钮,一个输出端口,
作者: sunxxxx3321    时间: 2020-3-7 09:23
while(1)
{   
};这个语句再程序里面最好只在主程序里用一次,做大循化用。一般你写程序是要一遍一遍的执行的。这条就是让你开启程序一直循环,不然程序一遍就停了。就是像PLC里面程序是从上到下一边一边连续不停的扫描,却没有让你写这条程序段。是因为PLC已经默认写好这条了。一般你要用到的多次循环或实时(就是你要一直判断的条件)就要放到这里。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1