将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();
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>