找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1331|回复: 0
收起左侧

单片机秒表作业

[复制链接]
ID:358750 发表于 2018-6-25 19:24 | 显示全部楼层 |阅读模式
                               作业11  秒表或电子钟设计
1.秒表任务要求:
    最小显示位10ms,计时范围0~59分59秒990毫秒;
    可记录多个成绩;
    系统工作符合一般秒表要求 ,具备清零、计时、停止、记录、查看功能。
     或者
     2.电子钟任务要求:
    显示当前时间;
    调整时间
    设置整点报时
    设置闹钟

  1. #include<stc12c5a60s2.h>
  2. #define uchar unsigned char
  3. uchar code distable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};
  4. uchar disnum[]={0,0,16,0,0,16,0,0};
  5. unsigned int temp1,temp2,temp3,j=0;
  6. uchar k=0x01,i=0,a,d,b=0,w=0,s=0,c=0;
  7. char data *p40,*p60,*p80;

  8. void int_0( ) interrupt 0
  9. {
  10.                 b++;
  11.                 if(b==3)
  12.                 {
  13.                         b=0;
  14.                 }
  15.                 if(b==0)
  16.                 {
  17.                         j=0;
  18.                         w=0;
  19.                         s=0;
  20.                         a=1;
  21.                         c=0;
  22.                 }
  23.                 if(b==1)
  24.                 {
  25.                         a=0;
  26.                 }
  27.                 if(b==2)
  28.                 {
  29.                         a=1;
  30.                         c=0;
  31.                 }
  32.        
  33. }

  34. void int_2( ) interrupt 2
  35. {
  36.         if(b==1)
  37.         {
  38.                 c++;
  39.                 d=c;
  40.                 if(c==1)
  41.                 {
  42.                         p40=0x40;
  43.                         p60=0x60;
  44.                         p80=0x80;
  45.                 }
  46.                 if(c<17)
  47.                 {
  48.                         *p40=j;
  49.                         *p60=w;
  50.                         *p80=s;
  51.                         p40++;
  52.                         p60++;
  53.                         p80++;
  54.                 }
  55.         }
  56.         if(b==2)
  57.         {
  58.                 c++;
  59.                 if(c==1)
  60.                 {
  61.                         p40=0x40;
  62.                         p60=0x60;
  63.                         p80=0x80;
  64.                 }
  65.                 if(c<=d)
  66.                 {
  67.                         j=*p40;
  68.                         w=*p60;
  69.                         s=*p80;
  70.                         p40++;
  71.                         p60++;
  72.                         p80++;
  73.                 }
  74.         }
  75.                


  76. }

  77. void int_1( ) interrupt 1
  78. {
  79.         TH0=55536/256;
  80.         TL0=55536%256;
  81.         if(a==1)
  82.         {
  83.                 j=j;
  84.         }
  85.         else
  86.         {
  87.                 j++;
  88.         }
  89.         if(j==100)
  90.         {
  91.                 j=0;
  92.                 w++;
  93.                 if(w==60)
  94.                 {
  95.                         s++;
  96.                         w=0;
  97.                         if(s==60)
  98.                         {
  99.                                 s=0;
  100.                         }       
  101.                 }
  102.         }       
  103.         disnum[7]=j%10;
  104.         disnum[6]=j/10;
  105.         disnum[4]=w%10;
  106.         disnum[3]=w/10;
  107.         disnum[1]=s%10;
  108.         disnum[0]=s/10;
  109.                
  110. }

  111. void int_3( ) interrupt 3
  112. {
  113.         P0M1=0X00;
  114.         P0M0=0XFF;
  115.         P2M1=0X00;
  116.         P2M0=0XFF;
  117.         TH1=65036/256;
  118.         TL1=65036%256;
  119.         P0=distable[disnum[i]];
  120.            P2=k;
  121.            k=k<<1;
  122.         i++;
  123.         if(i==8)
  124.         {
  125.                 i=0;
  126.                 k=0x01;       
  127.         }
  128.                
  129. }

  130. void main()
  131. {
  132.         TMOD=0x11;
  133.         TH1=55536/256;
  134.         TL1=55536%256;
  135.         ET1=1;
  136.         EA=1;
  137.         TR1=1;
  138.         TH0=65036/256;
  139.         TL0=65036%256;
  140.         ET0=1;
  141.         TR0=1;
  142.         IT1=1;                              
  143.         EX1=1;
  144.         IT0=1;                              
  145.         EX0=1;  
  146.         k=0x01;
  147.         i=0;
  148.         a=1;
  149.         b=0;
  150.         p40=0x40;
  151.         p60=0x60;
  152.         p80=0x80;
  153.         for(j=0;j<16;j++)
  154.         {
  155.                 *p40=0;
  156.                 p40++;
  157.                 *p60=0;
  158.                 p60++;
  159.                 *p80=0;
  160.                 p80++;
  161.         }
  162.         p60=0x60;
  163.         p80=0x80;
  164.         p40=0x40;
  165.         while(1);
  166. }

复制代码


单片机作业11(秒表).doc

27.54 KB, 下载次数: 6, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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