MCP3208,ADC程序設計
下載:
MCP3204.zip
(715 Bytes, 下載次數: 61)
2017-9-11 18:55 上傳
點擊文件名下載附件
c程序 下載積分: 黑幣 -5
- #include "config_Economy.h"
- #include "..\APP\config.h"
- #include "typedef.h"
- #include "extern.h"
- void adclkoutvalue(unsigned char bits)
- {
- if(bits==1)
- FIO1SET =0x80000000;
- else
- FIO1CLR =0x80000000;
- }
- void adcsvalue(unsigned char bits)
- {
- if(bits==1)
- FIO0SET =1<<27;
- else FIO0CLR =1<<27;
- }
- void adconfig(unsigned char bits)
- {
- if(bits==1)
- FIO0SET |=1<<28;
- else FIO0CLR =1<<28;
- }
- unsigned char add(void)
- {
- if((FIO1PIN&(1<<30))>0) return 1;
- else return 0;
- }
- void adclk_out(void)
- {
- FIO1DIR |=0x80000000; //輸出
- }
- void add_out(void)
- {
- FIO1DIR &=~(1<<30); //輸入
- }
- void add_config(void)
- {
- FIO0DIR |=1<<28; //輸出
- }
- void ad_cs(void)
- {
- FIO0DIR |=1<<27; //輸出
- }
- unsigned int read_mcp3204(unsigned char channel)
- {
- unsigned int value;
- unsigned int i;
- unsigned char start=0x18;
- adcsvalue(1);
- adclkoutvalue(0);
- adconfig(0);
- OSTimeDlyHMSM(0,0,0,1);
- start |= channel;
- adcsvalue(0);
- OSTimeDlyHMSM(0,0,0,1);
- for(i=0;i<2;i++)
- {
- adclkoutvalue(0);
- adconfig(0);
- OSTimeDlyHMSM(0,0,0,1);
- adclkoutvalue(1);
- OSTimeDlyHMSM(0,0,0,1);
- }
- for(i=0;i<8;i++)
- {
- adclkoutvalue(0);
- if(((1<<(7-i))&start)>0) adconfig(1);
- else adconfig(0);
- OSTimeDlyHMSM(0,0,0,1);
- adclkoutvalue(1);
- OSTimeDlyHMSM(0,0,0,1);
- }
- for(i=0;i<2;i++)
- {
- adclkoutvalue(0);
- adconfig(0);
- OSTimeDlyHMSM(0,0,0,1);
- adclkoutvalue(1);
- OSTimeDlyHMSM(0,0,0,1);
- }
- value = 0;
- for(i=0;i<12;i++)
- {
- adclkoutvalue(0);
- OSTimeDlyHMSM(0,0,0,1);
- adclkoutvalue(1);
- OSTimeDlyHMSM(0,0,0,1);
- value = value<<1;
- if(add()==1)
- {
- value++;
- }
- }
- adcsvalue(1);
- adclkoutvalue(0);
- adconfig(0);
- return(value);
- }
- void MCP3204_init(void)
- {
- SCS |= 0x01;
- adclk_out();
- add_out();
- add_config();
- ad_cs();
- adcsvalue(1);
- adclkoutvalue(0);
- adconfig(0);
- }
復制代碼
|