打印
[国产单片机]

STC 11F60XE IO口扫描不及时怎么办

[复制链接]
1621|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ymr78419972|  楼主 | 2012-12-28 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main(void)
{
                    Init_System(); //初始化系统

        while(1)
        {
                while(0 == x04)       
                {
                        Control_Output_State();
                }
        }

        return 0;
}

void Control_Output_State(void) small
{       
                if(0 == x00)
                {
                                if (1 == y00)
                                {
                                                y00 = 0;
                                }
                }
                else
                {
                                y00 = 1;
                }

只贴上主要的程序,编程想法就是,只要 x04(p1.4)由0变为1,立即让y00(p2.0)停止。

程序传到芯片中后,第一次,x04置1,所以y00=1。外部开关闭合,使x04 = 0,y00立即为0(输出),不知道为什么,当我再断开外部x04时,y00没有立即停止,中间大约有2-3秒的时间才断开。郁闷中,就算是扫描延时,也不用这么长吧!

求高手解答。               

相关帖子

沙发
McuPlayer| | 2012-12-28 16:15 | 只看该作者
用状态机来做吧

使用特权

评论回复
板凳
sbalwalw| | 2013-1-1 11:39 | 只看该作者
什么呀,你写的是不是有点问题呀? int main?????你让主程序返回到那里呀?这样不是跑飞了吗?还有你的子函数用得着这么复杂吗?直接y00=~y00不就好了吗?不要if(1==y00)这样写容易出问题y00=3的时候也会条件成立的,要y00==1。从你的程序可以看出来,咱二个水平差不多,都属于不入门级别,嘎嘎。

使用特权

评论回复
地板
ymr78419972|  楼主 | 2013-1-4 14:32 | 只看该作者
sbalwalw 发表于 2013-1-1 11:39
什么呀,你写的是不是有点问题呀? int main?????你让主程序返回到那里呀?这样不是跑飞了吗?还有你的子函 ...

什么呀,你写的是不是有点问题呀? int main?????你让主程序返回到那里呀?
呵呵:兄弟,这个是标准写法,好不好!你就照这么写就对了。
这样不是跑飞了吗?
呵呵 :哪也飞了。
还有你的子函数用得着这么复杂吗?直接y00=~y00不就好了吗?不要if(1==y00)这样写容易出问题y00=3的时候也会条件成立的,要y00==1。
呵呵 :不好意思,程序没全传上来,y00是sbit y00 P2.0;所以等于3是不可能了。
从你的程序可以看出来,咱二个水平差不多,都属于不入门级别,嘎嘎。
呵呵 :我确实是刚入门,做了一个小板子,想调试一下,本来想的就是报警设备接到 x004上,如果报警了,就让所有的输出低止。开始程序没有运行的时候,报警了,输出不动作,可是报警关了,再开报警他确不能立即停止。理论上我觉得程序应该没有问题。

使用特权

评论回复
5
ymr78419972|  楼主 | 2013-1-4 14:33 | 只看该作者
McuPlayer 发表于 2012-12-28 16:15
用状态机来做吧

什么是状态机?

使用特权

评论回复
6
sbalwalw| | 2013-1-4 16:50 | 只看该作者
方便的话把你的程序全部发上来,研究一下,

使用特权

评论回复
7
ayb_ice| | 2013-1-5 09:59 | 只看该作者
人的问题,与芯片没有问题

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
jrcsh + 4 同意
8
ymr78419972|  楼主 | 2013-1-6 13:26 | 只看该作者
ayb_ice 发表于 2013-1-5 09:59
人的问题,与芯片没有问题

虚心听教,能不能给点好建议,我只是想让 P1.0收到低电平后,让P2.0全部停止输出。

使用特权

评论回复
9
ymr78419972|  楼主 | 2013-1-8 11:35 | 只看该作者
程序里放了两个时间中断,呵呵 ,把时间中断去了原来的延时就没有了,可能是我中断根本没用又开了的原因,以前试的多种方法都管用了。关键是即使是开了一个60ms的中断,删除了这个中断后,程序就正常了。

使用特权

评论回复
10
jrcsh| | 2013-1-18 12:42 | 只看该作者

使用特权

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

本版积分规则

53

主题

79

帖子

1

粉丝