bijiaoqizhongduan.c

来自「一个遥控器的程序」· C语言 代码 · 共 74 行

C
74
字号
/****************************************************************************
*文件名: bijiaoqizhongduang.c
*功能: LPC900比较器演示程序
*日期: 11:53 06-12-25
*****************************************************************************/
#include <reg932.h>
#define uchar unsigned char
sbit LED=P2^6;
sbit RING=P2^7;
uchar temp;
void CMP_Init();
void Delay10us();

//----------------------------------
//功能:比较器中断服务程序
//----------------------------------

void CMP_ISR() interrupt 8
{
	EA=0;                    //关中断
	temp=CMP1&0x02;          //判断CMP1.1
	if(temp==0x02)           //如果CMP1.1为1(正向输入端大于反向输入端)
	{
		RING=0;
        LED=1;
	}
	else if(temp==0x00)      //如果CMP1.1为0
	{
        RING=1;
        LED=0;

	}
	CMP1&=0xFE;              //清0比较器中断标志位
	EA=1;                    //开中断
}

//----------------------------------
//功能:主函数
//----------------------------------

void main()
{
	CMP_Init();              //比较器初始化
	while(1);
}

//----------------------------------
//功能:比较器初始化
//----------------------------------

void CMP_Init()
{
	PT0AD=0x10;              //禁止CIN1A上的数字输入功能
	P0M1=0x00;
	P0M2=0x10;               //设置P0.4为仅为输入
	P2M1=0xC0;
	P2M2=0xC0;               //设置P2.6,P2.7为开漏方式
	CMP1=0x28;               //0010 1000,CMP1使能,内部Ref,CIN1A
	Delay10us();             //延迟10us,以等待比较器稳定
	CMP1&=0xFE;              //清除比较器中断标志位
	EC=1;                    //比较器中断输出使能
	EA=1;                    //开中断
}

//----------------------------------
//功能:延迟10us(7.373MHz下)
//----------------------------------

void Delay10us()
{
	uchar i;
	for(i=0;i<10;i++);
}
//----------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?