设为首页 - 加入收藏 - 网站地图 我爱嵌入式(www.52embed.com),专注嵌入式开发技术!
当前位置:主页 > 嵌入式软件 > 正文

C8051F020单片机使用内部比较器源码

时间:2015-05-11 21:09 来源:网络 作者:网络 阅读:
/***************************************************************
功能:此程序可完成CP1比较器的比较功能,比较器基准信号来自于VREF引脚,
比较器响应后将产生中断,可在中断程序中设断点观察.
作者:ZDP
时间:2005-11-30
版本:V1.0
***************************************************************/ 
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f020.h>           
//------------------------------------------------------------------------------------
//函数定义
//------------------------------------------------------------------------------------
void PORT_Init (void);
void CPT1_Init (void);
void CPT1_ISR  (void);
sbit led=P2^4; //红色LED
//------------------------------------------------------------------------------------
//主程序
//------------------------------------------------------------------------------------
void main (void) {
   
   WDTCN = 0xde;   
   WDTCN = 0xad;   //禁止看门狗定时器
 
   PORT_Init ();
   CPT1_Init ();
   EA=1; /*开总中断标志*/
   while (1)
   {
    if((CPT1CN&0x40)==0x40) //CP+>CP-,led=1
{
led=1;
}
else //CP+<CP-,led=0
{
led=0;
}
}
//--------------------------------------------------------------------------------
//函数名称:      CPT1_Init()
//函数功能:      比较器1初始化
//--------------------------------------------------------------------------------
void CPT1_Init (void)
 {
  EIE1   |=0x40; //允许CP1FIF 标志位(CPT1CN.4)的中断请求
  CPT1CN =0x8F; //启用CP1比较器,CP+、-回差电压为10mV
  REF0CN |= 0x03;   //用基准电压作为比较信号基准,CP1-接VREF
  //用电位器从3.3V分压输出至CP1+,调节电位器输出电压大、小于VREF看断点变化
 }
//------------------------------------------------------------------------------------
//函数名称:      PORT_Init ()
//函数功能:      通用I/O口及交叉开关初始化
//------------------------------------------------------------------------------------
//
void PORT_Init (void)
{
P2MDOUT   = 0x10; //LED 输出驱动
    XBR2  = 0x40; /*交叉开关使能*/             
}
//------------------------------------------------------------------------
//函数名称:      CPT1_ISR ()
//函数功能:      比较器1中断程序
//------------------------------------------------------------------------
void CPT1_ISR (void) interrupt 12
{
  CPT1CN &=~ 0x30; //清中断标志位,在此设断点观察
}

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。