📄 cp1.c
字号:
/*************************************************************************************
功能:此程序可完成CP0比较器的比较功能,比较器CP0+来自于VREF引脚,CP0-由S2控制.按下S3后,
比较器响应后将产生中断,可在中断程序中设断点观察.
版本:V1.0
*************************************************************************************/
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f310.h>
#include <INTRINS.H>
//------------------------------------------------------------------------------------
//函数定义
//------------------------------------------------------------------------------------
void PORT_Init (void);
void CPT0_Init (void);
void CPT0_ISR (void);
//sbit led=P2^4; //红色LED
//------------------------------------------------------------------------------------
//主程序
//------------------------------------------------------------------------------------
void main (void) {
PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
OSCICN |= 0x03; // Set internal oscillator to highest
// setting (24500000)
PORT_Init ();
CPT0_Init ();
EA=1; /*开总中断标志*/
while (1)
{
_nop_();
}
}
//--------------------------------------------------------------------------------
//函数名称: CPT0_Init()
//函数功能: 比较器0初始化
//--------------------------------------------------------------------------------
void CPT0_Init (void)
{
int i;
EIE1 =0x20; //允许CP0FIF 标志位(CPT1CN.4)的中断请求
CPT0CN =0x8F;
for(i=0;i<35;i++);
CPT0CN &=~0x30;
CPT0MX = 0x20;
CPT0MD = 0X22;
}
//------------------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//------------------------------------------------------------------------------------
//
void PORT_Init (void)
{
P0SKIP = 0xff;
P1SKIP = 0x7f;
XBR0 = 0x10;
XBR1 = 0x40;
P1MDOUT |=0x80;
}
//------------------------------------------------------------------------
//函数名称: CPT0_ISR ()
//函数功能: 比较器0中断程序
//------------------------------------------------------------------------
void CPT0_ISR (void) interrupt 12
{
CPT0CN &=~ 0x30; //清中断标志位,在此设断点观察
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -