搜索
bottom↓
回复: 5

PIC18F2455 连接 LDR 有点不明白 bits

[复制链接]

出0入0汤圆

发表于 2016-12-3 02:14:16 | 显示全部楼层 |阅读模式
///////////////////////////////////////
//
//  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》

出0入0汤圆

发表于 2016-12-3 03:53:59 来自手机 | 显示全部楼层
ad开始转换,A0口作为输入口

出0入0汤圆

 楼主| 发表于 2016-12-3 06:01:19 | 显示全部楼层
砂山老妖 发表于 2016-12-3 03:53
ad开始转换,A0口作为输入口

大神还有个地方为什么   ADCON2=0b00110110      就是那个0b是什么意思来的        还有那个LATB=val是什么意思   不是很懂

出0入9汤圆

发表于 2016-12-3 06:52:46 来自手机 | 显示全部楼层
0b表示后面跟的是二进制

出0入0汤圆

 楼主| 发表于 2016-12-5 22:22:46 | 显示全部楼层

大哥,新手来的,别打脸
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 20:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表