打印

虾米冒泡,求教

[复制链接]
1460|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宙斯的泪水|  楼主 | 2008-9-13 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一段控制流水灯的粗糙的程序,用外中断1控制流水灯的关停,用编辑器(KELL)编译没报错,把程序拷到板上,能正常启动,再按下中断想让它停止时每次都跑飞,超级初学者,一直搞头不清,祈求点评
#include<reg51.h>
#include<intrins.h>
sbit P2_3=P2^3;
void delayms(unsigned int ms)         
{                    
   unsigned char i;
   while(ms--)
   {
    for(i=0; i < 120; i++);
    }
}
void main(void)
{
   unsigned char LED,a,b;
   P2_3=1;
   LED=0xfe;
   P1=LED;
   EA=1;
   EX1=1;
   IT1=1;
   do{}while(P2_3==1);
   while(P2_3==0)
   {
    a=7;
    b=7;
   while(a--)
   {
    delayms(500);
    LED = _crol_(LED,1);        
    P1 = LED;
    
    }
   while(b--)
    {
    delayms(500);
    LED=_cror_(LED,1);
    P1=LED;
    } 
   }
}
void interrupt1() interrupt 2 using 1
{
    P2_3=!P2_3;
}

相关帖子

沙发
原野之狼| | 2008-9-14 16:49 | 只看该作者

while(P2_3==0)

如果不等于0呢?

使用特权

评论回复
板凳
孤星119| | 2008-9-14 17:47 | 只看该作者

LZ这个程序错误太大了.半天说不完.

1:IO口是不能这么用的.2:程序流成也不能这么写

使用特权

评论回复
地板
NE5532| | 2008-9-15 10:30 | 只看该作者

程序总有一个不会退出的死循环,在哪里?

使用特权

评论回复
5
宙斯的泪水|  楼主 | 2008-9-15 23:58 | 只看该作者

不知哪位前辈,愿意牺牲点时间,写个正确的示例

 就是简单的流水灯,中断控制开关,LED左右移动(右移八次然后左移八次)如此反复,
回3楼:IO口和程序流程设计时应该注意什么,孤星前辈指教一下,初学C,渴望点滴进步~~

使用特权

评论回复
6
孤星119| | 2008-9-16 09:12 | 只看该作者

在你原来的程序上修改了以下,自己再仿真下.


#include<reg51.h>
#include<intrins.h>
bit stop=0;
void delayms(unsigned int ms)         
{                    
   unsigned char i;
   while(ms--)
   {
    for(i=0; i < 120; i++);
    }
}
void main(void)
{
   unsigned char LED,a,b;
   LED=0xfe;
   P1=LED;
   EA=1;
   EX1=1;
   IT1=1;
   while(1)
   {
     a=0;
     for(;a<=14;)
     {
         if(!stop)
        {
           if(a<=7)
           {
             delayms(500);
             LED = _crol_(LED,1);        
             P1 = LED;
           }
           else
          {
            delayms(500);
            LED=_cror_(LED,1);
            P1=LED;
           }
           a++;
         }
      }
   }
}
void interrupt1() interrupt 2 using 1
{
    stop=!stop;
}

使用特权

评论回复
7
孤星119| | 2008-9-16 09:31 | 只看该作者

纠错:

for(;a<14;)
....

if(a<7)


使用特权

评论回复
8
宙斯的泪水|  楼主 | 2008-9-16 21:44 | 只看该作者

学习了,谢谢楼上各位

谢谢

使用特权

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

本版积分规则

23

主题

79

帖子

0

粉丝