打印
[51单片机]

求教,学会了发红包表示感谢

[复制链接]
1016|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
210tony|  楼主 | 2016-4-23 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学51单片机,团队安排我写一个程序:用按键控制led,但是用中断,去除消抖过程。我用外部中断实现了led的亮灭。我想用定时器中断代替延时函数。结果出错了。求教大神,前辈,指点一下。程序如下


#include<reg52.h>
#define LED P1
sbit KEY=P3^2;
#define uchar unsigned char //定义unsigned char 为 uchar
uchar cCounter; //记录外部中断次数的变量
uchar i;
int j;
uchar code Dis_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*******************中断初始化*********************/
void Open_Out0()
{
EA=1;   //打开总中断
EX0=1;   //打开外部中断0中断
IT0=0;   //电平触发
PT0=1;   //定时器中断高优先级
PX0=0;   //外部中断低优先级
}
/**********延时函数*********/
/*void Delay10ms(unsigned int c)   
{
      unsigned char a, b;
      for (;c>0;c--)
{
    for (b=38;b>0;b--)
    {
     for (a=130;a>0;a--);
    }      
}      
}*/
/********************定时器中断0中断***********************/
void Timer() interrupt 0
{
j=0;
if(j<1000)     //计时作用,代替延时函数
{
    j++;
    TH0=(65536-50000)/256;   //再装值
  TL0=(65536-50000)%256;
}
}
/*****************外部中断0中断*******************/
void Out_interrupt() interrupt 0
{
EX0=0;     //关闭外部中断
TMOD|= 0x00;   //定时器方式0
ET0=1;     //定时器中断打开
TR0=1;     //定时器开关打开
TH0=(65536-50000)/256;   //初装值
TL0=(65536-50000)%256;
i=cCounter%2;
cCounter++;
//Delay10ms(20);
switch(i)
{
case 0: LED=0x00; break;
case 1: LED=0xff; break;
}
EA=1;
}
/********************主函数*******************/
void main()
{
cCounter=2;
Open_Out0();
LED=0xff;
while(1)
{
}
}

如果大神单独指教,我学会了发红包表示感谢

相关帖子

沙发
ywlzh| | 2016-4-23 19:05 | 只看该作者
就你这个小项目   何必整那么麻烦

不用定时器,用一个普通的延时函数,进了外部中断了后,延时一会,读IO电平,确认按键按下,然后控制LED就OK了

红包就不要了!

使用特权

评论回复
板凳
210tony|  楼主 | 2016-4-23 19:35 | 只看该作者
ywlzh 发表于 2016-4-23 19:05
就你这个小项目   何必整那么麻烦

不用定时器,用一个普通的延时函数,进了外部中断了后,延时一会,读IO ...

谢谢指教,不过目的就是试着用定时器这方法完成

使用特权

评论回复
地板
xyz769| | 2016-4-23 22:41 | 只看该作者
那也不复杂,定时器中断中定时查询端口状态,当连续N次(N>1)按下就控制LED得了。。

使用特权

评论回复
5
qhtflsw| | 2016-4-23 22:51 | 只看该作者
用定时器做个2ms标志,连续监测到按键电平就累加。10-20次就是20-40MS,判定按键有效,否则清计数。

使用特权

评论回复
6
xujihu| | 2016-4-24 14:29 | 只看该作者
可以看看这个文档,

矩阵键盘的工作原理和扫描确认方式.pdf

181.97 KB

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝