找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机计数器程序

[复制链接]
跳转到指定楼层
楼主

  1. #include<reg51.h>

  2. unsigned char code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. unsigned char count;
  4. int time_count;
  5. sbit clk = P1^0;
  6. sbit set = P3^4;
  7. sbit start = P3^5;
  8. char start_flag = 0;
  9. void delay(unsigned int time)
  10. {
  11.     unsigned int j = 0;
  12.     for(; time>0; time--)
  13.         for(j=0; j<125; j++);
  14. }

  15. key0() interrupt 0
  16. {
  17.     delay(10);
  18.     count++;
  19.     if(count==20)
  20.         count=0;
  21. }

  22. void display_mode()
  23. {
  24.     P2 = 0x00;
  25.     delay(500);
  26.     P2 = 0x3f;
  27.     delay(500);
  28. }
  29. void time_init()
  30. {
  31.     TMOD=0x10;          //工作于方式1
  32.     //0 0 方式0 13位计数器 TMOD=0x00
  33.     //0 1 方式1 16位计数器 TMOD=0x01
  34.     //1 0 方式2 自动重装8位计数器 TMOD=0x02
  35.     //1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03
  36.     EA=1;              // 中断允许
  37.     ET1=1;                                                 // 中断1打开
  38.     TH1=(65536-50000)/256;              // (65536-50000)/256=60.6875
  39.     TL1=(65536-50000)%256;
  40. //    TR1=1;
  41. }
  42. void timer1(void) interrupt 3
  43. {
  44.     TH1=(65536-50000)/256;
  45.     TL1=(65536-50000)%256;
  46.     time_count++;
  47.     if (time_count==20)             //达到1s
  48.     {
  49.         time_count = 0;
  50.         clk = ~clk;
  51.     }
  52. }
  53. void main(void)
  54. {

  55.     EA = 1;
  56.     EX0 = 1;
  57.     IT0 = 1;
  58.         time_init();
  59.     P0 = table[0];
  60.     P2 = table[0];
  61.     display_mode();
  62.     while(1)
  63.     {
  64.                 if(set == 0)
  65.                 {
  66.                         delay(200);
  67.                         if(set == 0)
  68.                         {
  69.                                 count++;
  70.                                 if(count == 20)
  71.                                         count = 0;
  72.                         }
  73.                 }
  74.                 if(start == 0)
  75.                 {
  76.                         delay(200);
  77.                         if(start == 0)
  78.                         {
  79.                                 if(start_flag == 0)
  80.                                 {
  81.                                         start_flag = 1;
  82.                                         TR1=1;                                       
  83.                                 }
  84.                                 else if(start_flag == 1)
  85.                                 {
  86.                                         start_flag = 0;
  87.                                         TR1=0;
  88.                                 }
  89.                         }
  90.                 }
  91.                 P0=table[count/10];
  92.                 P2=table[count%10];
  93.     }
  94. }
复制代码


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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