📄 cp1.c
字号:
/***************************************************************
功能:此程序可完成CP1比较器的比较功能,比较器基准信号来自于E_VREF(+2.5V)引脚,
比较器响应后将产生中断,可在中断程序中设断点观察.
// J5-2为CP0+, J5-3为CP-
***************************************************************/
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f320.h>
#include <INTRINS.H>
//------------------------------------------------------------------------------------
//函数定义
//------------------------------------------------------------------------------------
void PORT_Init (void);
void CPT0_Init (void);
void CPT0_ISR (void);
sbit led=P2^6;
//------------------------------------------------------------------------------------
//主程序
//------------------------------------------------------------------------------------
void main (void)
{
PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
OSCICN |= 0x03; // Set internal oscillator to highest
PORT_Init ();
CPT0_Init ();
EA=1; //*开总中断标志*/
while (1)
{
}
}
//--------------------------------------------------------------------------------
//函数名称: CPT0_Init()
//函数功能: 比较器0初始化
//--------------------------------------------------------------------------------
void CPT0_Init (void)
{ int i;
EIE1 =0x20; //允许CP0FIF 标志位(CPT1CN.4)的中断请求
CPT0CN =0x8A;
for(i=0;i<35;i++);
CPT0CN &=~0x30;
CPT0MX = 0x11;
CPT0MD = 0X22;
}
//------------------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//------------------------------------------------------------------------------------
//
void PORT_Init (void)
{
XBR0 = 0x02; // Enable SMBus pins
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P0MDOUT = 0xFF; // All P0 pins open-drain output
P1MDOUT = 0xFF;
P2MDOUT = 0x40;
P3MDOUT |= 0x04; // P3.3 push-pull output
}
//------------------------------------------------------------------------
//函数名称: CPT0_ISR ()
//函数功能: 比较器1中断程序
//------------------------------------------------------------------------
void CPT0_ISR (void) interrupt 12
{
CPT0CN &=~ 0x30; //清中断标志位,在此设断点观察
led=~led;
EIE1 |=0x20;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -