|
///////////////////////////////////////
//
// EAT237 ADC Lab
//
// Written by Dr Mike Knowles
// September 2016
//
// Target Device - PIC18F2455 (ECIO)
//
///////////////////////////////////////
#include <xc.h>
#define _XTAL_FREQ 48000000
///////////////////////////////////////
// configureAnalogueInput
//
// this function will set up pin A0
// to read analogue values
///////////////////////////////////////
void configureAnalogueInput()
{
//Set TRIS for input
TRISAbits.TRISA0=1;
//Configure analog pins, voltage reference and digital I/O (ADCON1)
//Value is 0000 1110
ADCON1=14;
//Select A/D input channel (ADCON0)
//Value is 0000 0000
ADCON0=0;
//Select A/D acquisition time (ADCON2)
//Select A/D conversion clock (ADCON2)
ADCON2=0b00110110;
//Turn on A/D module (ADCON0)
ADCON0bits.ADON=1;
__delay_ms(10);
}
void configurePortB(void)
{
TRISB=0x00;
return;
}
void writeToPortB(unsigned char val)
{
LATB=val;
}
///////////////////////////////////////
// readADC()
//
// this function will read an analogue
// value and return it as an int
///////////////////////////////////////
int readADC()
{
int result;
//Begin ADC Read
ADCON0bits.GO_DONE=1;
while(ADCON0bits.GO_DONE!=0);
result=ADRESH+1;
return result;
}
int main(void)
{
int value;
configurePortB();
writeToPortB(1);
while(1)
{
value=readADC();
if(value>30)writeToPortB(1);
if(value>60)writeToPortB(3);
if(value>90)writeToPortB(7);
if(value>120)writeToPortB(15);
if(value>150)writeToPortB(31);
if(value>180)writeToPortB(63);
if(value>210)writeToPortB(127);
if(value>240)writeToPortB(255);
}
}
这是个当LDR受到光照时 8个led灯显示渐渐减少,光线弱时led会渐渐亮起来
不是很懂ADCON0bits.GO
TRISAbits.TRISA0=1;
求大神指点指点 刚刚玩这个东西 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。
如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》
|