[51单片机] 这种程序怎么让它按一次等于300

[复制链接]
 楼主| 不一样的烟火 发表于 2015-5-2 19:33 | 显示全部楼层 |阅读模式
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
void delay();
void timer1_uint();
void main()
{
        timer1_uint();
        while(1);
}
void timer1_uint()
{
       
        TMOD=0x60;
        TH1=256-12;
        TL1=256-12;
       
        EA=1;
        ET1=1;
        TR1=1;
       
}
void delay()       
{
        uchar i,j;
        for(i=0;i<500;i++)
        for(j=0;j<500;j++);
       
}
void int2() interrupt 3
{
        P0=0x00;
        delay();
        P0=0xff;
        delay();
       
       
       
}
as564335sa 发表于 2015-5-2 20:47 | 显示全部楼层
这问题问的......谁能看懂?
JY-DX-JY 发表于 2015-5-2 20:49 | 显示全部楼层
外部中断吧?什么等于300?
 楼主| 不一样的烟火 发表于 2015-5-2 20:59 | 显示全部楼层
JY-DX-JY 发表于 2015-5-2 20:49
外部中断吧?什么等于300?

这是生产线打包系统   按300下灯亮
JY-DX-JY 发表于 2015-5-2 21:00 | 显示全部楼层
这个程序实现不了吧?一次灯就亮了吧?
112207301219 发表于 2015-5-2 21:04 来自手机 | 显示全部楼层
中断里面计数,到了300开灯,同时把计数清零
four_zhg 发表于 2015-5-2 21:20 | 显示全部楼层
可以用按键按下中断计数的方式,在中断里进行计数。
Landway 发表于 2015-5-3 00:45 | 显示全部楼层
这种程序根本就不要中断处理.

一个死循环.
一个按键去抖函数.
一个累加变量.

然后输出.
void main(void)
{
unsigned int key_counter = 0;     //按键计数器  
while(true)
{
  if(key_input())
    ++ key_counter;
  if(key_counter >= 300)
    {
       key_counter = 0;
       亮灯();
     }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部