📄 cp1.c
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:CP1.c
//
// 编写人:LC
//
// 编写时间:2005/2/25
//
// 目标器件: C8051F02x
//
// 编译工具: Silicon Laboratories IDE
//
//程序说明
// 此程序可完成CP1比较器的比较功能,比较器基准信号来自于VREF引脚,比较器响应后将产生中
//断,可在中断程序中设断点观察.
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f020.h>
#include <intrins.h>
sbit BUZ = P3^5;
//------------------------------------------------------------------------------------
//函数定义
//------------------------------------------------------------------------------------
void PORT_Init (void);
void CPT1_Init (void);
void CPT1_ISR (void);
//------------------------------------------------------------------------------------
//主程序
//------------------------------------------------------------------------------------
void main (void) {
WDTCN = 0xde;
WDTCN = 0xad; //禁止看门狗定时器
PORT_Init ();
CPT1_Init ();
EA=1; /*开总中断标志*/
BUZ = 1;
while (1)
{
}
}
//--------------------------------------------------------------------------------
//函数名称: CPT1_Init()
//函数功能: 比较器1初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//--------------------------------------------------------------------------------
void CPT1_Init (void)
{
EIE1 |=0x40; /*允许CP1FIF 标志位(CPT1CN.4)的中断请求*/
CPT1CN =0x8F;
REF0CN |= 0x03; //用基准电压作为比较信号基准,CP1N接VREF
/*内部电压基准提供从VREF脚输出,ADC0电压基准取自VREF0*/
}
//------------------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//------------------------------------------------------------------------------------
//
void PORT_Init (void)
{
XBR2 = 0x40; /*交叉开关使能*/
P74OUT |= 0xc0;
//P3MDOUT &= 0xdf; /*使能P3.5推挽输出*/
}
/***************************************************************************************
函数名称: void sleep_ms(WORD count)
功能描述: 延时
输入: WORD count(所要延时的长度)
输出: 无
全局变量: 无
调用模块: _nop_()
***************************************************************************************/
void sleep_ms(unsigned int count)
{
unsigned char ii,jj;
for(ii=0;ii<count;ii++)
{
for(jj=0;jj<250;jj++)
_nop_();
}
}
//------------------------------------------------------------------------
//函数名称: CPT1_ISR ()
//函数功能: 比较器1中断程序
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//------------------------------------------------------------------------
void CPT1_ISR (void) interrupt 12
{
CPT1CN &=~ 0x30; /*清中断标志位*/
BUZ=0; /*有键按下*/
sleep_ms(200);
BUZ=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -