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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5492|回復: 1
打印 上一主題 下一主題
收起左側

51單片機P1口的數據采樣(ADC)驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:51773 發表于 2013-7-19 02:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "reg52.h"
  2. #include "intrins.h"

  3. #define FOSC    18432000L
  4. #define BAUD    9600

  5. typedef unsigned char BYTE;
  6. typedef unsigned int WORD;

  7. /*Declare SFR associated with the ADC */
  8. sfr ADC_CONTR   =   0xBC;           //ADC control register
  9. sfr ADC_RES     =   0xBD;           //ADC high 8-bit result register
  10. sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register
  11. sfr P1ASF       =   0x9D;           //P1 secondary function control register

  12. /*Define ADC operation const for ADC_CONTR*/
  13. #define ADC_POWER   0x80            //ADC power control bit
  14. #define ADC_FLAG    0x10            //ADC complete flag
  15. #define ADC_START   0x08            //ADC start control bit
  16. #define ADC_SPEEDLL 0x00            //420 clocks
  17. #define ADC_SPEEDL  0x20            //280 clocks
  18. #define ADC_SPEEDH  0x40            //140 clocks
  19. #define ADC_SPEEDHH 0x60            //70 clocks

  20. void InitUart();
  21. void InitADC();
  22. void SendData(BYTE dat);
  23. BYTE GetADCResult(BYTE ch);
  24. void Delay(WORD n);
  25. void ShowResult(BYTE ch);
  26. /*
  27. void main()
  28. {   InitUart();                     //Init UART, use to show ADC result
  29.     InitADC();                      //Init ADC sfr
  30.     while (1)
  31.     {
  32.         ShowResult(0);              //Show Channel0
  33.     }
  34. }
  35. */

  36. /*----------------------------
  37. Send ADC result to UART
  38. ----------------------------*/
  39. void ShowResult(BYTE ch)
  40. {
  41.     SendData(ch);                   //Show Channel NO.
  42.     SendData(GetADCResult(ch));     //Show ADC high 8-bit result

  43. //if you want show 10-bit result, uncomment next line
  44. //    SendData(ADC_LOW2);             //Show ADC low 2-bit result
  45. }

  46. /*----------------------------
  47. Get ADC result
  48. ----------------------------*/
  49. BYTE GetADCResult(BYTE ch)
  50. {
  51.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
  52.     _nop_();                        //Must wait before inquiry
  53.     _nop_();
  54.     _nop_();
  55.     _nop_();
  56.     while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
  57.     ADC_CONTR &= ~ADC_FLAG;         //Close ADC

  58.     return ADC_RES;                 //Return ADC result
  59. }

  60. /*----------------------------
  61. Initial UART
  62. ----------------------------*/
  63. void InitUart()
  64. {
  65.     SCON = 0x5a;                    //8 bit data ,no parity bit
  66.     TMOD = 0x20;                    //T1 as 8-bit auto reload
  67.     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
  68.     TR1 = 1;                        //T1 start running
  69. }

  70. /*----------------------------
  71. Initial ADC sfr
  72. ----------------------------*/
  73. void InitADC()
  74. {
  75.     P1ASF = 0xe7;                   //Open 8 channels ADC function
  76.     ADC_RES = 0;                    //Clear previous result
  77.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  78.     Delay(2);                       //ADC power-on and delay
  79. }
  80. /*----------------------------
  81. Send one byte data to PC
  82. Input: dat (UART data)
  83. Output:-
  84. ----------------------------*/
  85. void SendData(BYTE dat)
  86. {   while (!TI);                    //Wait for the previous data is sent
  87.     TI = 0;                         //Clear TI flag
  88.     SBUF = dat;                     //Send current data
  89. }
  90. /*----------------------------
  91. Software delay function
  92. ----------------------------*/
  93. void Delay(WORD n)
  94. {   WORD x;
  95.     while (n--)
  96.     {   x = 5000;
  97.         while (x--);
  98.     }
  99. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:390650 發表于 2018-9-22 15:57 | 只看該作者
這跟STC的一樣么
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表