找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3212|回复: 4
打印 上一主题 下一主题
收起左侧

新手求助单片机秒表制作...

[复制链接]
跳转到指定楼层
楼主
ID:58316 发表于 2014-1-5 00:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要制作秒表...第一个按钮是用来开始的...然后第二个是清零...不知道为什么不能清零..而且也不能每一秒数字增加一...求助啊...
电路图已上传...


test1.zip (20.32 KB, 下载次数: 19)


  1. #include <regx51.h>
  2. #include <absacc.h>
  3. #define N 4
  4. #define                TH_50MS                (65536-50000)/256
  5. #define                TL_50MS                (65536-50000)%256
  6. #define led12 XBYTE[0xefff]
  7. #define led34 XBYTE[0xf7ff]
  8. int x=0;
  9. main()
  10. {
  11.         EA = 1;
  12.         EX0=1;
  13.         EX1=1;
  14.         IT0=1;
  15.         IT1=1;
  16.         while(1);
  17. }       


  18. void  t1_interrupt() interrupt 0
  19. {
  20.         x++;
  21.         led12=(x%60%10)+(x%60/10)*16;
  22.         led34=(x/60%10)+(x/60/10%6)*16;
  23.         P3_7=~P3_7;
  24.         TMOD = 0x11;
  25.         TH1 = TH_50MS;
  26.         TL1 = TL_50MS;
  27.         TR1 = 1;
  28.         IE = 0x8a;
  29.         return;
  30. }


  31. void  t3_interrupt() interrupt 3
  32. {
  33.         int tn = 20;
  34.         EX1=1;
  35.         IT1=1;
  36.         for(;;)
  37.         {
  38.                 TR1 = 0;
  39.                 TH1 = TH_50MS;
  40.                 TL1 = TL_50MS;
  41.                 tn --;
  42.                 if(tn==0)
  43.                         {
  44.                                 tn = 20;
  45.                                 x++;
  46.                                 P3_7=~P3_7;
  47.                                 led12=(x%60%10)+(x%60/10)*16;
  48.                                 led34=(x/60%10)+(x/60/10%6)*16;
  49.                         }
  50.                 TR1 = 1;
  51.         }
  52.         return;
  53. }

  54. void  t2_interrupt() interrupt 2
  55. {
  56.         led12=0;
  57.         led34=0;
  58.         x=0;
  59.         return;
  60. }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58316 发表于 2014-1-5 00:05 | 只看该作者
求帮忙啊....实在想不懂为什么不能成功....
回复

使用道具 举报

板凳
ID:58502 发表于 2014-1-5 00:35 | 只看该作者
本帖最后由 liaolinhui 于 2014-1-5 00:41 编辑

只有中断0跟1吧,你那2,3错了吧
回复

使用道具 举报

地板
ID:58502 发表于 2014-1-5 12:49 | 只看该作者
虽然我才学单片机几天,但是我觉得你的思路有问题,你的程序一开始就进入死循环,然后设置三个中断,来判断按下那个键,但是你就用了2个按键。你应该设置三个键的,要有一个停止键,就是跑了一段时间后按下停止键来停止时间,我给你的思路是在主函数 while(1)循环里加入按键1的判断而不是用中断,当有按键1按下就条用开始计时函数,这函数要不断循环才能不停的计数,这是按下按键2或者按键3才停止或清0按键2和按键3你就是用中断0和中断1.所以开始键不能用中断函数来判断是否按下按键1,因为中断函数中是不能直接调用另一个中断函数的。你的程序不能归0估计也是这个原因。你全是用中断函数来判断按键是否按下,所以按了开始讲后进入循环式不能按归0讲归0
回复

使用道具 举报

5#
ID:58563 发表于 2014-1-5 16:44 | 只看该作者
求正确的程序代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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