打印

中断程序问题

[复制链接]
1294|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2012-6-30 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大家关于中断程序实现5秒后关灯的问题,试下好久无法实现,麻烦大家帮忙看一下,代码得怎样修改,多谢!!
下面为代码


////下面为中断程序模块/////
void init() //初始化数据
{
TMOD = 0x01;
TH0 = 0x3C; //(12MHZ的晶振赋值TH0=0x3C;TL0=0xB0;)
TL0 = 0xB0;
EA = 1;
ET0 = 1;
TR0 = 0;
}

void Timer0(void) interrupt 1
{
TH0=0x3C;
TL0=0xB0;
t_flag_time=1;
}

void shijianchuli() //时间处理
{
if(t_flag_time==1)
{
t_flag_time=0;

if(ledcnt>0) //设定的延时时间
{
lsign=1;ledcnt--;}
else
{lsign=0;}

if(t_out_flag==1)
{
if(t_yanshi>0)
{t_yanshi--;}
else
{lsign=0;}
}




if(t_flag==1) //C开关一直按着则会启动该程序
{
if(t_count<18000) //十五分钟时间判定
t_count++;
if(t_count>18000)
{
lsign=0; //到了则关闭LED1,同时关闭定时器
t_count=0;
t_flag=0;
TR0=0;
}

}
}
}

void main()
{
init(); //中断服务初始化
while(1)
{
shijianchuli();
keyscan();
switch(K) //K值为键盘扫描函数的返回值
{
case 1: //按下"A开关"
{
lsign=1 //LED1灯亮
TR0=1; //中断开始
ledcnt=200; //lsign=1后,五秒后关灯
};break;
case 2: //按下"B开关"
{
lsign=1;
t_out_flag==1;
TR0=1;
t_yanshi=200; //lsign对应的LED1五秒后关灯

};break;

default:break;
}

switch(SENK)
{
case 1: //按下C开关
{
lsign=1; //开LED1
t_flag=1;
TR0=1; //当C开关持续被按下15分钟后,系统会自动关LED1并退出到待机状态
};break;
default:break;
}
}
}


问题1:先按下A开关,再按下B开关,要求是按下B开关后,利用中断程序,如果再也没有按下其他开关,则lsign对应的LED1五秒后关灯,但在测试过程中,发现LED1好像受到在按下A开关时的中断影响,要求是按下B开关后,如果再也没有按下其他开关,但LED1灯没到五秒,很快就灭了。这是为什么呢?

问题2:
switch(SENK)
{
case 1: //按下C开关
{
lsign=1; //开LED1
t_flag=1;
TR0=1; //当C开关持续被按下15分钟后,系统会自动关LED1并退出到待机状态
};break;
这一段想实现的功能是,当C开关持续被按下15分钟后,系统会自动关LED1并退出到待机状态,但现在测试时,在按下C开关不放手时,led1状态是:亮-灭-亮-灭,为什么会这样呢,程序要怎样修改??

相关帖子

沙发
火箭球迷| | 2012-6-30 09:27 | 只看该作者
看着有点晕,这情况应该很清晰的,一个键盘扫描,一个按键处理

使用特权

评论回复
板凳
hsbjb| | 2012-6-30 09:33 | 只看该作者
程序中有四点问题:
1、
if(t_count<18000) //十五分钟时间判定
t_count++;
if(t_count>18000)

使用特权

评论回复
地板
hsbjb| | 2012-6-30 09:33 | 只看该作者
第2个if永远也不会满足条件的,因为你加到18000后就不再加了,怎能大于18000呢!另外t_count应该定义为至少int型。

2、
在 “void shijianchuli() //时间处理”函数中:
if(t_out_flag==1)
t_out_flag需要在t_yanshi回零时清零。

3、
switch(SENK)
{
case 1: //按下C开关
在该分支中t_count需要初始化为0。
4、5秒延时应该是100而不是200.

使用特权

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

本版积分规则

239

主题

2284

帖子

0

粉丝