PIC12F675----8管脚单片机的ad转换小程序
将GPIO0采集电压通过ad转换成8位2进制数,其中高4位用连接在管脚GPIO1 2 4 5上的led显示出来//引用头文件
#include<pic.h>
//符号变量替换
#define u8 unsigned char
#define u16 unsigned int
//用c语言嵌套汇编来实现 “喂狗”
#defineclrwdt() asm("CLRWDT")
//全局变量声明
u8 ad_jieguo;
void yanshi(void)//延时子函数
{
u8i;
u16 j;
for(j=500;j>0;j--)
{
for(i=100;i>0;i--)
{
clrwdt();
}
}
}
void yanshi1(void)//延时子函数
{
u8k;
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();
}
} 延时程序如果用休眠,看门狗定时唤醒的方式,那么会降低功耗。 mark 顶起,正需要,感谢分享。 现在有性价比更高的PIC12F1501 PIC 的性价比还是高 wanggoals 发表于 2016-11-8 17:59
现在有性价比更高的PIC12F1501
PIC12F1501什么价格? colin2018 发表于 2016-11-9 15:28
PIC12F1501什么价格?
立创商城就有售,百片以上2.7
页:
[1]