找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1539|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機計數(shù)器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:398085 發(fā)表于 2022-11-30 22:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

  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位計數(shù)器 TMOD=0x00
  33.     //0 1 方式1 16位計數(shù)器 TMOD=0x01
  34.     //1 0 方式2 自動重裝8位計數(shù)器 TMOD=0x02
  35.     //1 1 方式3 T0分為2個8位獨立計數(shù)器,T1為無中斷重裝8位計數(shù)器 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. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表