標(biāo)題: 這個(gè)單片機(jī)例程是如何定義P10是ADC采集口? [打印本頁(yè)]

作者: 木示    時(shí)間: 2023-10-16 15:49
標(biāo)題: 這個(gè)單片機(jī)例程是如何定義P10是ADC采集口?
大家好,看到這個(gè)例程不太明白,這個(gè)例程是如何定義P10是ADC采集口?僅靠IO口的設(shè)定?這個(gè)例程官網(wǎng)上的。
單片機(jī)源程序如下:
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sfr     ADC_CONTR   =   0xbc;
  4. sfr     ADC_RES     =   0xbd;
  5. sfr     ADC_RESL    =   0xbe;
  6. sfr     ADCCFG      =   0xde;

  7. sfr     P_SW2   =   0xba;
  8. #define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)

  9. sbit    EADC    =   IE^5;

  10. sfr     P0M1    =   0x93;
  11. sfr     P0M0    =   0x94;
  12. sfr     P1M1    =   0x91;
  13. sfr     P1M0    =   0x92;
  14. sfr     P2M1    =   0x95;
  15. sfr     P2M0    =   0x96;
  16. sfr     P3M1    =   0xb1;
  17. sfr     P3M0    =   0xb2;
  18. sfr     P4M1    =   0xb3;
  19. sfr     P4M0    =   0xb4;
  20. sfr     P5M1    =   0xc9;
  21. sfr     P5M0    =   0xca;

  22. void ADC_Isr() interrupt 5
  23. {
  24.     ADC_CONTR &= ~0x20;                         //清中斷標(biāo)志
  25.     P2 = ADC_RES;                               //讀取ADC結(jié)果
  26.     ADC_CONTR |= 0x40;                          //繼續(xù)AD轉(zhuǎn)換
  27. }

  28. void main()
  29. {
  30.     P0M0 = 0x00;
  31.     P0M1 = 0x00;
  32.     P1M0 = 0x00;
  33.     P1M1 = 0x00;
  34.     P2M0 = 0x00;
  35.     P2M1 = 0x00;
  36.     P3M0 = 0x00;
  37.     P3M1 = 0x00;
  38.     P4M0 = 0x00;
  39.     P4M1 = 0x00;
  40.     P5M0 = 0x00;
  41.     P5M1 = 0x00;

  42.     P1M0 = 0x00;                                //設(shè)置P1.0為ADC口
  43.     P1M1 = 0x01;
  44.     P_SW2 |= 0x80;
  45.     ADCTIM = 0x3f;                              //設(shè)置ADC內(nèi)部時(shí)序
  46.     P_SW2 &= 0x7f;
  47.     ADCCFG = 0x0f;                              //設(shè)置ADC時(shí)鐘為系統(tǒng)時(shí)鐘/2/16
  48.     ADC_CONTR = 0x80;                           //使能ADC模塊
  49.     EADC = 1;                                   //使能ADC中斷
  50.     EA = 1;
  51.     ADC_CONTR |= 0x40;                          //啟動(dòng)AD轉(zhuǎn)換

  52.     while (1);
  53. }

復(fù)制代碼



作者: angmall    時(shí)間: 2023-10-16 22:09
為什么不讀元件手冊(cè)?

ADC_CHS[3:0]: ADC 模擬通道選擇位
(注意:被選擇為 ADC 輸入通道的 I/O 口,必須設(shè)置 PxM0/PxM1 寄存器將 I/O 口模式設(shè)置為高
阻輸入模式。另外如果 MCU 進(jìn)入掉電模式/時(shí)鐘停振模式后,仍需要使能 ADC 通道,則需要設(shè)置
PxIE 寄存器關(guān)閉數(shù)字輸入通道, 以防止外部模擬輸入信號(hào)忽高忽低而產(chǎn)生額外的功耗)










歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1