各位大哥!能否帮小弟看看这程序?

2019-07-15 20:50发布

本帖最后由 li1557554 于 2014-2-22 15:36 编辑

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define led P2

sbit sb = P0^0;

void ys(uint i)
{
    unsigned char j;
    for(i; i > 0; i--)   //循环 600*255 次
        for(j = 255; j > 0; j--);
}

void KAISHI(uchar x)
{
        uchar i;                                                      
        for(i = 0; i < x; i ++)
        {
                   led = 0xff;
                   ys(600);
                   led = 0x00;
                   ys(600);
        }                                                      
}

void main(void)
{
        EA = 1;                 //打开总中断
        EX1 = 1;         //INT1中断使能位
        IT1 = 1;         //负边沿触发
        while(1)
        {
            led = 0x00;
            ys(600);
                led = 0xff;
                ys(600);
        }
}
void MY_INT1(void) interrupt 2                //中断
{
        uchar bhled = led;
          EX1 =0;
         ys(20);
        if(sb == 0)                                         //判断开关
          {
             KAISHI(5);                                   //五次
                  led = bhled;
          }
        if(sb !=1)
          ys(20);
        EX1 = 1;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zy2014
1楼-- · 2019-07-16 02:46
什么要求都没有说。
中断函数中的
        if(sb == 0)   
        {}
        if(sb !=1)
        {}
这两句不是一样的吗?
fc55726298
2楼-- · 2019-07-16 03:17
 精彩回答 2  元偷偷看……
li1557554
3楼-- · 2019-07-16 06:33
zy2014 发表于 2014-2-22 17:40
什么要求都没有说。
中断函数中的
        if(sb == 0)   

这是确定是否还按下的
zy2014
4楼-- · 2019-07-16 10:39
li1557554 发表于 2014-2-23 09:21
这是确定是否还按下的

假设sb=0;那么
中断函数中的
        if(sb == 0)   
        {}
        if(sb !=1)
        {}
都会执行。
假设sb=1;那么
中断函数中的
        if(sb == 0)   
        {}
        if(sb !=1)
        {}
都不会执行。

ntmusic
5楼-- · 2019-07-16 13:00
请以后发表类似贴的朋友注意一下吧,不要只是把程序贴上来就说看一下。你这究竟是要别人学习呢,还是要别人纠错呢?不要误导了别人,至少要说明你的程序的功能和错误点先!

一周热门 更多>