查看: 34|回复: 11
收起左侧

咨询两个问题

[复制链接]

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 23:53 | 显示全部楼层 |返回版面|阅读模式
第一个外部中断按一下之后LED灯会暂停,按第二下时没反应。第二个,就是定时器怎么输出1s,我用for语句循环也不行。

#define uint unsigned int;
#define uchar unsigned char;

sbit key=P3^2;
sbit led=P2^7;

uchar num,flag;   //定义字符型变量num

void timer0() interrupt 0
{
flag=0;
while(1)
  {        
    EX0=1;                //开定时器中断
    EA=1;                //开总中断
    if(key==0)             //有键按下         
                        
         {
                   if(flag==0)            //flag记录上次定时器是开还是关
                {
                  flag=1;
                  TR0=0;      //关闭定时器T0
                }
            else
                {
                 flag=0;
                 TR0=1;                          //第一个问题:按一下正常暂停  再按不能正常运行
                }
          }

  }
}  

                  
main()
{                                                                 //第二个问题:不能延时1s

TMOD=0x01;      //开启定时器1  工作在定时方式1下
TH0=15536/256;
TL0=15536%256;
EX0=1;                //开定时器中断
EA=1;                //开总中断
TR0=1;                //开定时器
TF0=0;

while(1)
{
  
        if(TF0==1)                   //1s后关闭 开始闪光灯
          {        
            
            
                  num=0;
                  TH0=15536/256;
          TL0=15536%256;
                  TF0=0;
                  if(++num==20);
                  led=~led;        
                     
                  

          }
  }                  

}
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 23:55 | 显示全部楼层 |返回版面
还有,怎么让定时器高电平输出1s,低电平输出2s?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

393

主题

4093

帖子

1万

积分

资深工程师

发表于 2017-7-15 23:57 | 显示全部楼层 |返回版面

每进一次外部中断,灯取反。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-16 18:16 | 显示全部楼层 |返回版面
大神,那您看看怎么延时1S呢?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

487

主题

3889

帖子

1万

积分

资深工程师

发表于 2017-7-16 18:18 | 显示全部楼层 |返回版面

比如中断10ms,设个计数器,100次不就1S了吗。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-16 18:22 | 显示全部楼层 |返回版面


怎么设计数器啊,就是我上边这个程序,延时没用中断~~
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

393

主题

4093

帖子

1万

积分

资深工程师

发表于 2017-7-16 18:23 | 显示全部楼层 |返回版面
为什么中断服务函数里面会有个 while(1)

这样还怎么整
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

515

主题

4008

帖子

1万

积分

资深工程师

发表于 2017-7-16 18:25 | 显示全部楼层 |返回版面

你在中断里面写了个死循环,停在中断里面就跳不出去,如何继续啊!!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-16 18:27 | 显示全部楼层 |返回版面

哦,明白了~~,那您看定时器怎么延时到1s?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-16 18:29 | 显示全部楼层 |返回版面
嗯,大神,您看我这个定时器怎么能延时1s,定时器不用中断的情况下延时~~谢谢大神!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

500

主题

4167

帖子

1万

积分

资深工程师

发表于 2017-7-16 18:36 | 显示全部楼层 |返回版面
那就用delay延时了,只不过这一般不是很准确
void delayms()        
// 延时子程序   对应12M晶振
{                                                
        unsigned int ms=1000;
        while(ms--)                                //每一次循环1ms
        {
           for(i = 0; i < 120; i++);
        }
}
哪里需要延时1S就调用这个函数就行了!
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

459

主题

3764

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-16 18:38 | 显示全部楼层 |返回版面
嗯,谢谢大神~~
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

分享 快速回复 返回顶部 返回列表