|
按你的意圖給你重新寫了個ADC轉(zhuǎn)換程序,如果還玩不轉(zhuǎn)只能懷疑你的硬件電路有問題。
- /*---------------------------------
- 此程序適合STC15W系列單片機(jī)
- ------------------------------------*/
- #include<STC15F2K60S2.H>
- #include <intrins.h>
- #define uint unsigned int //宏定義變量uint為無符號整型數(shù)據(jù)(0-65535)
- #define uchar unsigned char //宏定義變量uchar為無符號字符型數(shù)據(jù)(0-255)
- //宏定義ADC的操作命令
- #define ADC_POWER 0x80 //ADC power control dit (宏定義ADC電源控制位)1000 0000
- #define ADC_START 0x08 //ADC start control dit (宏定義ADC啟動控制位)0000 1000
- #define ADC_FLAG 0x10 //ADC complete flag (宏定義ADC完成標(biāo)志位) 0001 0000
- #define ADC_SPEEDLL 0x00 //420 clocks (宏定義540個時鐘)速度控制 0000 0000
- /*-----------------------------------------------------------------
- 1ms延時子程序(11.0592MHz 1T)
- ------------------------------------------------------------------*/
- void delayms(uint k)
- {
- uint i,j;
- for(i=k;i>0;i--)
- for(j=829;j>0;j--);
- }
- /*-----------------------------------------------------------------------------
- InitADC 初始化ADC
- -----------------------------------------------------------------------------*/
- void InitADC()
- {
- P1ASF=0x08; //設(shè)置P1.3通道端口作為模擬輸入
- ADC_RES=0; //清除ADC_RES存儲器以前的結(jié)果
- ADC_RESL=0;
- ADC_CONTR=ADC_POWER|ADC_SPEEDLL;//ADC 開啟電源、轉(zhuǎn)換速度 1000 0000
- delayms(1); //上電延時1ms
- }
- /*----------------------------------------------------------------------------
- Get ADC Result(獲取ADC結(jié)果)
- ----------------------------------------------------------------------------*/
- uint Read(uchar CHA) //獲取ADC結(jié)果
- {
- ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//啟動轉(zhuǎn)換1000 1011
- _nop_(); //延時確保正確讀到ADC_CONTR寄存器的值
- _nop_();
- _nop_();
- _nop_();
- while(!(ADC_CONTR & ADC_FLAG)); //等待ADC轉(zhuǎn)換完成標(biāo)志置位 1001 1011
- ADC_CONTR &=~ADC_FLAG; //清除完成標(biāo)志
- return(ADC_RES<<2|ADC_RESL); //返回十位ADC結(jié)果
- }
- void main()
- {
- uint temp;
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M1 = 0x08;//設(shè)置P1.3高阻
- P1M0 = 0x00;//設(shè)置P1.3高阻
- P2M1 = 0x00;//設(shè)置P2推挽模式
- P2M0 = 0xff;//設(shè)置P2推挽模式
- P3M1 = 0x00;//設(shè)置P3.6~3.7推挽模式
- P3M0 = 0xc0;//設(shè)置P3.6~3.7推挽模式
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
- P6M0 = 0x00;
- P6M1 = 0x00;
- P7M0 = 0x00;
- P7M1 = 0x00;
- InitADC();
- while(1)
- {
- temp=Read(3);
- P2=temp>>2;
- P3=temp<<6;
- delayms(500);
- }
- }
復(fù)制代碼
|
評分
-
查看全部評分
|