标题:
新手求助单片机秒表制作...
[打印本页]
作者:
l404864087
时间:
2014-1-5 00:04
标题:
新手求助单片机秒表制作...
要制作秒表...第一个按钮是用来开始的...然后第二个是清零...不知道为什么不能清零..而且也不能每一秒数字增加一...求助啊...
电路图已上传...
test1.zip
(20.32 KB, 下载次数: 19)
2014-1-5 00:03 上传
点击文件名下载附件
QQ截图20140105000101.png
(41.84 KB, 下载次数: 146)
下载附件
2014-1-5 00:00 上传
#include <regx51.h>
#include <absacc.h>
#define N 4
#define TH_50MS (65536-50000)/256
#define TL_50MS (65536-50000)%256
#define led12 XBYTE[0xefff]
#define led34 XBYTE[0xf7ff]
int x=0;
main()
{
EA = 1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
while(1);
}
void t1_interrupt() interrupt 0
{
x++;
led12=(x%60%10)+(x%60/10)*16;
led34=(x/60%10)+(x/60/10%6)*16;
P3_7=~P3_7;
TMOD = 0x11;
TH1 = TH_50MS;
TL1 = TL_50MS;
TR1 = 1;
IE = 0x8a;
return;
}
void t3_interrupt() interrupt 3
{
int tn = 20;
EX1=1;
IT1=1;
for(;;)
{
TR1 = 0;
TH1 = TH_50MS;
TL1 = TL_50MS;
tn --;
if(tn==0)
{
tn = 20;
x++;
P3_7=~P3_7;
led12=(x%60%10)+(x%60/10)*16;
led34=(x/60%10)+(x/60/10%6)*16;
}
TR1 = 1;
}
return;
}
void t2_interrupt() interrupt 2
{
led12=0;
led34=0;
x=0;
return;
}
复制代码
作者:
l404864087
时间:
2014-1-5 00:05
求帮忙啊....实在想不懂为什么不能成功....
作者:
liaolinhui
时间:
2014-1-5 00:35
本帖最后由 liaolinhui 于 2014-1-5 00:41 编辑
只有中断0跟1吧,你那2,3错了吧
作者:
liaolinhui
时间:
2014-1-5 12:49
虽然我才学单片机几天,但是我觉得你的思路有问题,你的程序一开始就进入死循环,然后设置三个中断,来判断按下那个键,但是你就用了2个按键。你应该设置三个键的,要有一个停止键,就是跑了一段时间后按下停止键来停止时间,我给你的思路是在主函数 while(1)循环里加入按键1的判断而不是用中断,当有按键1按下就条用开始计时函数,这函数要不断循环才能不停的计数,这是按下按键2或者按键3才停止或清0按键2和按键3你就是用中断0和中断1.所以开始键不能用中断函数来判断是否按下按键1,因为中断函数中是不能直接调用另一个中断函数的。你的程序不能归0估计也是这个原因。你全是用中断函数来判断按键是否按下,所以按了开始讲后进入循环式不能按归0讲归0
作者:
caiziwei
时间:
2014-1-5 16:44
求正确的程序代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1