欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1336|回復(fù): 1
收起左側(cè)

51單片機(jī)秒表程序有點(diǎn)問題,不知道怎么改了,求助

[復(fù)制鏈接]
ID:450993 發(fā)表于 2018-12-20 19:17 | 顯示全部樓層 |閱讀模式
  1. #include <REGX51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. #define PIN0 P0;  //數(shù)碼管段選端
  5. #define PIN1 P1;  //數(shù)碼管位選端
  6. uint cnt=0;   //1s的次數(shù)的計(jì)數(shù)值
  7. uint num=0;     //進(jìn)入中斷次數(shù)的計(jì)數(shù)值(一次50ms)
  8. uint num1=0;  //0.001s的次數(shù)的計(jì)數(shù)值
  9. uint haomiaou=0;
  10. uchar code table[]={0x3f,0x06,0x5b,
  11. 0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};
  12. //不帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9
  13. uchar code table1[]={0xbf,0x86,
  14. 0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
  15. //帶小數(shù)點(diǎn)的共陰極數(shù)碼管段碼0-9
  16. char code table2[]={0xc0,0xf9,0xa4,
  17. 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. //不帶小數(shù)點(diǎn)的共陽極數(shù)碼管段碼0-9
  19. uint a,b,c,d,e,f,g,w;
  20. void Display(uint a,uint b,uint c,uint d,uint e,uint f,uint g,uint w);  //聲明顯示函數(shù)
  21. void InitTimer0();  //聲明定時(shí)器初始化函數(shù)
  22. void Delayms(uint x);  //聲明延時(shí)函數(shù)
  23. void main ()
  24. {
  25. uint haomiao,haomiao1,haomiao2,s,s1,min,min1,minu=0,shi,shiu=0;
  26. //分別是毫秒的個(gè)位,毫秒的十位,毫秒的百位,
  27. //秒的個(gè)位,秒的十位,分的個(gè)位,分的十位,時(shí)的各位

  28.     InitTimer0();   //初始化定時(shí)器
  29.      while(1)   //進(jìn)入死循環(huán)
  30.   {
  31.   //Delayms(20); //延時(shí)消抖
  32.     num=0;      //進(jìn)入中斷次數(shù)的計(jì)數(shù)值(一次50ms)
  33.   num1=0;  //進(jìn)入中斷次數(shù)值清0
  34.   haomiaou=0; //毫秒的計(jì)數(shù)值清0
  35.   cnt=0;  //秒的計(jì)數(shù)值清0
  36.   minu=0;  //分的計(jì)數(shù)值清0
  37.   shiu=0;    //時(shí)的計(jì)數(shù)值清0
  38.   }
  39.   if(num1>=200)           //檢測是否達(dá)到0.1s,(兩百個(gè)50ms)
  40.   {
  41.    num1=0;    //進(jìn)入中斷次數(shù)值清零
  42.    haomiao++;  //毫秒秒的個(gè)位的計(jì)數(shù)值加1
  43.    if(haomiao>=10)  //若毫秒的個(gè)位計(jì)數(shù)值達(dá)到10
  44.    {
  45.     haomiao=0;       //清零毫秒的個(gè)位的計(jì)數(shù)值
  46.     num1=0;//進(jìn)入中斷次數(shù)值置0
  47.    }
  48.   }
  49.   
  50.       if(num>=20)  //判斷計(jì)時(shí)時(shí)間是否達(dá)到1s(20個(gè)50ms)
  51.    {
  52.       cnt++;   //秒的計(jì)數(shù)值加1
  53.       if(cnt>=60) //判斷是否達(dá)到60s
  54.       {
  55.         cnt=0;  //若達(dá)到60s,將秒的計(jì)數(shù)值置零
  56.          minu++;   //分的計(jì)數(shù)值加1
  57.    
  58.        TR0=!TR0;   //達(dá)到60分鐘則關(guān)閉定時(shí)器并清零所有的計(jì)數(shù)值
  59.        num1=0;
  60.        num=0;
  61.       haomiao=0;
  62.       cnt=0;  
  63.      minu=0;
  64.       }
  65.     }
  66.   haomiao=haomiaou%10;   //從毫秒的計(jì)數(shù)值里面分離毫秒的個(gè)位
  67. haomiao1=haomiaou/10;   //從毫秒的計(jì)數(shù)值里面分離毫秒的十位
  68. haomiao2=haomiaou/100;   //從毫秒的計(jì)數(shù)值里面分離毫秒的百位
  69. s=cnt%10;   //從秒的計(jì)數(shù)值里面分離秒的個(gè)位
  70. s1=cnt/10;  //從秒的計(jì)數(shù)值里面分離秒的十位
  71. min=minu%10; //從分的計(jì)數(shù)值里面分離分的個(gè)位
  72. min1=minu/10; //從分的計(jì)數(shù)值里面分離分的十位
  73. Display(haomiao,haomiao1,haomiao2,s,s1,min,min1,shi);  //顯示這8個(gè)數(shù)
  74. }
  75. void InitTimer0() //定時(shí)器初始化函數(shù)
  76. {
  77. TMOD=0x10; //選擇定時(shí)器1的工作方式1
  78. TH0=(65536-45872)/65536;  //裝初值(定時(shí)50ms),晶振11.0592MHz
  79. TL0=(65536-45872)%65536;
  80. EA=1;  //打開總中斷
  81. ET0=1; //打開定時(shí)器中斷
  82. TR0=0; //先不要啟動定時(shí)器
  83. }
  84. void TI_time()interrupt 1  //定時(shí)器中斷服務(wù)函數(shù)
  85. {
  86. TH0=(65536-45872)/65536;  //重裝初值
  87. TL0=(65536-45872)%65536;
  88. num++;  //讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到1s
  89. num1++;  //讓進(jìn)入中斷次數(shù)值加1,用于判斷是否達(dá)到0.1s
  90. }
  91. void Delayms(uint x)   //延時(shí)xms
  92. {
  93. uint i,j;
  94. for(i=x;i>0;i--)
  95.   for(j=110;j>0;j--);
  96. }
  97. void Display(uint a,uint b,uint c,uint d,uint e,uint f,uint g,uint w) //定義顯示函數(shù)
  98. {
  99. PIN0 = table[a];  //毫秒的個(gè)位的段選
  100. PIN1 = 0x7f;   //毫秒的個(gè)位的位選
  101. Delayms(5);

  102. PIN0=table1[b];  //毫秒的十位的段選
  103. PIN1=0xbf;   //毫秒的十位的位選
  104. Delayms(5);        

  105. PIN0=table1[c];  //毫秒的百位的段選
  106. PIN1=0xdf;   //毫秒的百位的位選
  107. Delayms(5);         

  108. PIN0=table[d]; //秒的個(gè)位的段選
  109. PIN1=0xef;   //秒的個(gè)位的位選
  110. Delayms(5);   

  111. PIN0=table1[e];  //秒的十位的段選
  112. PIN1=0xf7;   //秒的十位的位選
  113. Delayms(5);

  114. PIN0=table[f];  //分的個(gè)位的段選(帶小數(shù)點(diǎn))
  115. PIN1=0xfb;    //分的個(gè)位的位選
  116. Delayms(5);
  117.   
  118. PIN0=table1[g];  //分的十位的段選
  119. PIN1=0xfd;    //分的十位的位選
  120. Delayms(5);

  121. PIN0=table[w];  //時(shí)的個(gè)位的段選
  122. PIN1=0xfe;   //時(shí)的個(gè)位的位選
  123. Delayms(5);            
  124. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2018-12-20 22:06 | 顯示全部樓層
您這個(gè)問題給的信息不全,估計(jì)是沒人能回答得了的,先轉(zhuǎn)移到冷門區(qū)了,自行點(diǎn)擊編輯按鈕補(bǔ)充一下吧,審核員會幫你重新轉(zhuǎn)到熱門問答區(qū)的
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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