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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2396|回復: 1
收起左側

51MCU常用延時,16進制轉10進制程序等

[復制鏈接]
ID:701952 發表于 2020-3-3 20:17 | 顯示全部樓層 |閱讀模式
常用函數:
    1. 延時函數;
    2. HexToDec(unsigned char uHex);//16進制轉10進制
    3. DecToHex(unsigned char uDec);//10進制轉16進制
     4.時鐘框架;

單片機源程序如下:
  1. //#include <reg51.h>
  2. #include <absacc.h>
  3. #include <intrins.h>
  4. #include <math.h>
  5. #include <absacc.h>
  6. #include <string.h>

  7. #include "..\\INC\\ISD51_U1.h"
  8. #include "..\\INC\\basic.h"

  9. #include "..\\INC\\SST89.h"
  10. #include "..\\INC\\ProcessCommu.H"
  11. #include "..\\INC\\CommunicationExt.h"

  12. idata struct SSysTimer sSysTimerV;

  13. //extern xdata struct SSysTime SSysTimeV;                         /* 系統時間 */

  14. bit        bNet1CpuStateFlag = 0;
  15. bit        bNet2CpuStateFlag = 0;
  16. bit        bNet3CpuStateFlag = 0;
  17. bit bDisplayCpuStateFlag = 0;


  18. void delay(unsigned int dtime)          // 1000 is equal 1000ms when crystal is 36MHz
  19. {
  20.     unsigned char i;


  21.         ISDdisable();

  22.     while((dtime--)!=0)
  23.     {
  24.          for(i=0;i<246;i++)
  25.          {
  26.              _nop_();
  27.              _nop_();
  28.              _nop_();
  29.              _nop_();
  30.          }
  31.     }

  32. //        ISDenable();

  33. }


  34. void InitSys(void)                                 /*init 8031*/
  35. {
  36.         WDTC = 0;                                                                           //禁止Watchdog

  37.         WDTD = -100;                                                                           //禁止Watchdog

  38.         //unsigned int timer2_baud;
  39.         // ISD51 makes use of Uart1 or Uart2 based on header file & object file used
  40.         T2CON  = 0x34;                // Use Timer 2 as baudrate generator
  41.                                                 // This sets Uart1 to use timer2 baud rate
  42.     PCON  |= 0x0C;                 // Set UART2 to user timer2 baud rate
  43. //        RCAP2L = 0xE0;                // 19200  at 20M  0xE0
  44.         RCAP2L = 0xC0;                // 19200  at 40M  0xC0,19200
  45.         RCAP2H = 0xff;
  46.         SCON   = 0x50;      // enable first serial UART & receiver
  47.        
  48.         EX0   =0;
  49.         EX1   =0;

  50.         ET1   =0;

  51.         TR1   =1;
  52.        
  53.         IE = IE & 0x18;       
  54.         EA = 1;             // 開放中斷

  55.         TMOD = 0x12;                             //T0 :自動載入 ; T1:16 定時器

  56.         TH0 = 0xFC;                        //old is 0xFD
  57.         TL0 = 0xFF;
  58.         IT1 = 1;
  59.         EX1 = 0;                                                                //禁止IAP中斷
  60.         EPCA = 1;                                                                //使能PCA中斷

  61. //中斷優先級
  62.         IP  = 0x40;                                                                //PCA中斷優先級最高
  63.         IPH = 0x18;                                                                //串口和定時器1中斷優先級次高

  64.         CCAPM0 = 0;
  65.         CCAPM1 = 0;
  66.         CCAPM2 = 0;
  67.         CCAPM3 = 0;
  68.         CCAPM4 = 0;

  69.         TR0 = 1;

  70.         TR1   =1;
  71.         ET1   =0;
  72.         ET0   =0;

  73. }

  74. void ProcessSystimer(unsigned char uVal)
  75. {
  76.         static unsigned char uNum = 0;
  77.         code unsigned char uAdjustNum[3]={15,15,5};
  78.         static unsigned char uIndex=0;

  79. /*
  80.         uNum=uNum+ uVal;

  81.         if(uNum<uAdjustNum[uIndex])
  82.                 return;
  83.         uNum = uNum-uAdjustNum[uIndex];
  84.         uIndex++;
  85.         if(uIndex>=3)
  86.                 uIndex=0;
  87. */


  88.         uIndex++;
  89.         if(uIndex==3)
  90.                 uIndex = 0;
  91.         else
  92.                 return;



  93.     sSysTimerV.uMillisecond++;

  94.     if(sSysTimerV.uMillisecond>=1000)
  95.     {
  96.                 sSysTimerV.uMillisecond = 0;
  97.         sSysTimerV.uSecond++;
  98.         if(sSysTimerV.uSecond>=200)
  99.         {
  100.             sSysTimerV.uSecond = 0;
  101.         }

  102.     }

  103. }

  104. unsigned char HexToDec(unsigned char uHex)
  105. {
  106.     unsigned char uTempVal;

  107.     uTempVal = (uHex/16)*10+uHex%16;

  108.     return uTempVal;

  109. }

  110. unsigned char DecToHex(unsigned char uDec)
  111. {
  112.     unsigned char uTempVal;

  113.     uTempVal = (uDec/10)*16+uDec%10;

  114.     return uTempVal;

  115. }


  116. unsigned int GetTimeInterval(struct STimeInterval * ptsTimeInterval)
  117. {
  118.          xdata unsigned int iCurrentTime;

  119.      iCurrentTime = GetCurrentTime();
  120.      if( iCurrentTime >= ptsTimeInterval[0].OldTime)
  121.          ptsTimeInterval[0].Interval = iCurrentTime - ptsTimeInterval[0].OldTime;
  122.      else
  123.          ptsTimeInterval[0].Interval = 20000 + iCurrentTime - ptsTimeInterval[0].OldTime;

  124.      return ptsTimeInterval[0].Interval;

  125. }


  126. unsigned int GetCurrentTime()
  127. {
  128.          xdata  struct SSysTimer sCurrentTimeV;

  129.      sCurrentTimeV.uSecond      = sSysTimerV.uSecond;
  130.      sCurrentTimeV.uMillisecond = sSysTimerV.uMillisecond/10;

  131. //ISDwait();

  132.      sCurrentTimeV.uTime = sCurrentTimeV.uSecond*100;
  133.      sCurrentTimeV.uTime = sCurrentTimeV.uTime + sCurrentTimeV.uMillisecond;

  134.      return sCurrentTimeV.uTime;

  135. }
復制代碼

所有資料51hei提供下載:
basic常用函數.zip (2.14 KB, 下載次數: 12)
回復

使用道具 舉報

ID:923440 發表于 2021-7-15 20:28 | 顯示全部樓層
這16進制轉10進制的程序也不對吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清精品一区二区三区 | 亚洲视频免费在线观看 | 国产精品一区一区三区 | 国产成人在线视频免费观看 | 日本高清视频在线播放 | 日韩三片| 精品国产乱码久久久久久88av | 国色天香综合网 | 亚洲www | 一级毛片,一级毛片 | 秋霞av国产精品一区 | 国产一区| 国产一区欧美 | 天堂久久久久久久 | 欧美日产国产成人免费图片 | 黄免费看| 久久99精品久久久久久 | 亚洲一区二区三区免费在线观看 | 酒色成人网 | 中文天堂在线一区 | 欧美h视频 | 亚洲欧美在线免费观看 | 亚洲精品久久久一区二区三区 | 黄色毛片黄色毛片 | 日韩一区二区在线播放 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 国产欧美一区二区精品忘忧草 | 99久久夜色精品国产亚洲96 | 伊人成人免费视频 | 国产精品自拍视频 | 99视频在线免费观看 | 能看的av网站 | 黄色成人在线网站 | 天天插天天操 | 欧美精品成人一区二区三区四区 | 国产日韩精品一区二区三区 | 一区二区三区四区在线免费观看 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 91精品中文字幕一区二区三区 | 欧美综合国产精品久久丁香 | 国产激情免费视频 |