查看: 983|回复: 0
打印 上一主题 下一主题

PIC12F675----8管脚单片机的ad转换小程序

[复制链接]
跳转到指定楼层
沙发
发表于 2016-3-30 20:39:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将GPIO0采集电压通过ad转换成8位2进制数,其中高4位用连接在管脚GPIO  1 2 4 5上的led显示出来

//引用头文件
#include<pic.h>

//符号变量替换
#define         u8                 unsigned char
#define         u16         unsigned int

//用c语言嵌套汇编来实现 “喂狗”
#define  clrwdt()   asm("CLRWDT")

//全局变量声明
u8 ad_jieguo;
void yanshi(void)  //延时子函数
{
        u8  i;
        u16 j;
        for(j=500;j>0;j--)
        {
                for(i=100;i>0;i--)
                {
                        clrwdt();
                }
        }        
}

void yanshi1(void)  //延时子函数
{
        u8  k;        
        for(k=20;k>0;k--)
        {
                clrwdt();
        }
        
}

void init(void)
{
        CMCON=0X07;//比较器关闭
        ANSEL=0X01;//GP0为模拟输入 设GP1到GP3都为数字IO口
        ADCS0=1;//A/D转换时钟设为 内部专用时钟
        ADCS1=1;
        OPTION=0X80;//禁止GPIO上拉
        TRIS0=1;//GP0口设为输入
        TRIS1=0;
        TRIS2=0;
        TRIS4=0;
        TRIS5=0;
        ADFM=0;//AD结果左对齐
        
        
}

u8 run_ad(void)
{
        ADON=1;//开启转换器 开始采样
        yanshi1();
        GODONE=1;
        while(GODONE==1)
        {
                ;
        }
        return ADRESH;        
}

void led_xianshi(void)
{
        ad_jieguo=ADRESH>>4;
        GPIO=~( ((ad_jieguo&0x01)<<1) | ( (ad_jieguo&0x02) <<1) |( (ad_jieguo&0x04)<<2) |( (ad_jieguo&0x08)<<2));        
}

void main(void)
{
        init();//初始化
        while(1)//循环
        {
                run_ad();
                led_xianshi();
                yanshi();
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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