久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于51單片機(jī)按鈕控制數(shù)碼管計時程序 希望大佬幫忙完善一下代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:987571 發(fā)表于 2021-12-3 14:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1黑幣
本人已經(jīng)將代碼寫了一部分了,能夠?qū)⒌谝粋按鈕控制第一第二個數(shù)碼管的計時,希望有大佬能夠把第二個按鈕控制第三第四個數(shù)碼管的計時完善一下。
謝謝幫忙了!

代碼如下
  1. #include <STC89C5xRC.H>
  2. #include <intrins.H>
  3.                                                                  /*分頻*/
  4. #define u8                                         unsigned char
  5. #define u16                                 unsigned int
  6. #define cpu_f                                         12000000
  7. #define machine_cycle                    6                                //如使用RC/RD單片機(jī)的雙倍速模式則需要改成6
  8. static unsigned char time_count=0;
  9. unsigned char code   dm[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  10. unsigned char        T0RH=0,TORL=0;//初始化高低位值存放變量
  11. bit time_le=1;
  12. //時鐘周期=晶振/12(6)
  13. void configTime0(u16 ms,u8 *T0H,u8 *TOL);
  14. void smg_watch(unsigned char wx,dx);
  15. void delay_ms(unsigned int count_ms);
  16. unsigned char  key(void (*call_key)());
  17. void stop_begin(void);
  18. void stop_begin2(void);
  19. /*1s翻轉(zhuǎn)*/

  20. void main(void)
  21. {
  22.   P1=0XFF;
  23.   configTime0(50,&T0RH,&TORL);        //定時器初始化,
  24.   while(1)
  25.   {
  26.           smg_watch(0,time_count/10);
  27.         smg_watch(1,time_count%10);
  28.         key(stop_begin2);
  29.   }
  30. }

  31. void stop_begin(void)
  32. {
  33. static unsigned char mode=1;
  34. mode=!mode;
  35. if(mode)
  36.         TR0=1;
  37. else
  38.         TR0=0;       
  39. }

  40. void stop_begin2(void)
  41. {
  42. static unsigned char mode2=1;
  43. mode2=!mode2;
  44. if(mode2)
  45.         time_le=1;
  46. else
  47.         time_le=0;       
  48. }

  49. unsigned char  key(void (*call_key)())
  50. {
  51.         if(!P30)//做下降沿檢測
  52.         {
  53.                 delay_ms(20);//延時消抖
  54.                 if(!P30)//做下降沿檢測       
  55.                 {                       
  56.                         while(!P30);//做松手檢測
  57.                         call_key();        //任務(wù)
  58.                         return 1;
  59.                 }
  60.                 else
  61.                 return 0;       
  62.         }
  63.         else
  64.         return 0;
  65. }

  66. /*******************************************************************************
  67. 函數(shù)功能:
  68. *   @ 定時器0初始化
  69. 參數(shù)描述:
  70. *   @ ms 初始化時間
  71. 返回值描述:
  72. *   @ 無
  73. 說明:
  74. *   @  
  75. *******************************************************************************/
  76. void configTime0(u16 ms,u8 *T0H,u8 *TOL)
  77. {
  78.         unsigned long temp;//0~4,294,967,296(32字節(jié)一般的時鐘都用這個變量算)
  79.         /*加載初值*/
  80.         temp=cpu_f/machine_cycle;//該宏定義在timer.c(52RC/RD具備6T雙倍速模式,如果為提高程序運行效率可更改宏定義)
  81.         temp=(temp*ms)/1000; //調(diào)用函數(shù)變量ms要轉(zhuǎn)換成秒

  82.         temp=65536-temp;   
  83.         temp=temp+1;//中斷在準(zhǔn)備中斷時會使用一些機(jī)器周期去保存變量,造成響應(yīng)延遲,這里嘗試抵消延遲
  84.        
  85.          /*數(shù)據(jù)結(jié)算*/
  86.         *T0H=(u8)(temp>>8);//變量類型強(qiáng)制轉(zhuǎn)換        //ff
  87.         *TOL=(u8)temp;                                                        //f5
  88.        
  89.         /*清空T0控制位,將T0配置成模式1*/
  90.         TMOD &=0XF0;
  91.         TMOD |=0X01; //置位         0000 0001
  92.        
  93.         /*賦初值*/
  94.         TH0=*T0H;//初負(fù)載值(高)        8位寄存器
  95.         TL0=*TOL;//(低)

  96.         /*初始化T0*/
  97.         TF0=0;//清空溢出標(biāo)志位
  98.         ET0=1;//使能T0中斷
  99.         TR0=1;//啟動T0
  100.         EA=1;//開啟總中斷
  101. }

  102. void smg_watch(unsigned char wx,dx)
  103. {
  104.         /*關(guān)閉段選*/
  105.         P26=1;
  106.         P0=0Xff;/*清空位選*/
  107.         P27=1;//打開位選   =
  108.         P0=_crol_(0XFE,wx);//進(jìn)行位選
  109.        
  110.         /*關(guān)閉位選*/
  111.         P27=0;
  112.         P0=0X00;/*清空段選*/
  113.         P26=1;//打開段選
  114.         P0= dm[dx];//輸入段選信號
  115.         delay_ms(1);//留顯
  116.          
  117. }

  118. void delay_ms(unsigned int count_ms)
  119. {
  120. unsigned int count=0;
  121. unsigned char i, j;
  122. for(count=0;count<count_ms;count++)
  123. {
  124.         _nop_();
  125.         _nop_();
  126.         i = 2;
  127.         j = 15;
  128.         do
  129.         {
  130.                 while (--j);
  131.         } while (--i);
  132. }

  133. }

  134. void Interrupt_timer0(void) interrupt 1        //主要模式為計數(shù)
  135. {       
  136.         static unsigned char jishu=0;
  137.         TH0=T0RH;//初負(fù)載值(高)
  138.         TL0=TORL;//(低)
  139.         /*計時*/
  140.         if(time_le)
  141.         jishu++;
  142.         if((jishu==20))//1s后
  143.         {
  144.                 time_count++;
  145.                 if(time_count==61)
  146.                         time_count=0;
  147.                 jishu=0;
  148.         }               
  149. }
復(fù)制代碼

keilproject_3.zip

25.86 KB, 下載次數(shù): 1

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区二区三区在线播放 | 亚洲a人| 97国产精品视频人人做人人爱 | 久久精品国产v日韩v亚洲 | 美女国产一区 | 亚洲成av人影片在线观看 | 天天草天天干天天 | 精品久久久久久久久久久院品网 | 日韩成人中文字幕 | 黄a免费网络 | 午夜精品一区二区三区免费视频 | 久久国产一区 | 欧美一区在线视频 | 国产98色在线 | 日韩 | 日日碰狠狠躁久久躁96avv | 久久国产综合 | 国产色婷婷精品综合在线播放 | 狠狠干天天干 | 成人欧美一区二区三区黑人孕妇 | 97色在线观看免费视频 | 日韩一区二区三区精品 | 午夜影院免费体验区 | 成人精品 | 成人在线免费网站 | 欧洲高清转码区一二区 | 欧美激情亚洲天堂 | 伊人色综合久久久天天蜜桃 | 久久久国产精品 | 婷婷久久五月 | 亚洲一区二区在线播放 | 欧美久久久久久久久中文字幕 | 手机日韩 | 激情五月婷婷在线 | 国产一级黄色网 | 日本久久网 | 久久久久久久综合 | 日本a v在线播放 | 一级a性色生活片久久毛片 一级特黄a大片 | 懂色中文一区二区三区在线视频 | 亚洲精品av在线 | 久久久婷婷 |