⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p89c668.c

📁 一个流量控制仪器的源码
💻 C
字号:
/***********************************************************************************

Philips P89C668芯片特殊功能控制程序  P89C668.C

MCU 型号: Philips P89C668
时钟频率: 11.0592 MHz
接口方式: I2C 100KHz,UART 9600
开发环境: Keil C51 V7.04	
开发日期: 2003.05.07
程序编写: BaoFang
	
***********************************************************************************/

#include <REG668.H>

#define  uchar  unsigned char
#define  uint   unsigned int


/******************************************************
CR  PCA计数运行控制位.
由软件置位去启动PCA计数器,必须由软件清除去关掉PCA计数器
******************************************************/
sbit  CR    =   CCON^6;

/*******************************************************************
			检查P89C668的掉电标记
函数原型: uchar PowerOff();
功能: 检查P89C668的掉电标记
      返回0--无掉电情况(热复位)
      返回1--有掉电情况(冷启动)
注意:POF需要软件清除!!
*******************************************************************/
uchar PowerOff()
{
        uchar i;
        
        i = PCON & 0x10;
        PCON &= 0xEF;   //POF需要软件清除!!
 
        return(i>>4);
}


/*******************************************************************
			启动P89C668的PCA看门狗设置
函数原型: void WatchDog0_Init();
功能: 启动P89C668的PCA看门狗设置
注意:使用了内嵌ASM,需要打开 Generate Assembler SRC file
        Assemble SRC file.
*******************************************************************/
void WatchDog0_Init()
{
/*
#pragma asm

        MOV CCAPM4 , #4CH        ;模块4 处于比较模式
        MOV CCAP4L , #0FFH       ;首先写入低字节
        MOV CCAP4H , #0FFH       ;在PCA 计数达到FFFFH之前,这些比较值必须被改变.
        ORL CMOD  , #40H         ;只对CMOD的WDTE进行置位,使看门狗定时器使能.

#pragma endasm
*/
        CCAPM4 = 0x4C;
        CCAP4L = 0xFF;
        CCAP4H = 0xFF;
        CMOD |= 0x40;
        CR = 1;                 //开始PCA计数

}



/*******************************************************************
			喂P89C668的PCA看门狗
函数原型: void WatchDog0();
功能: 喂P89C668的PCA看门狗
注意:使用了内嵌ASM,需要打开 Generate Assembler SRC file
        Assemble SRC file.
*******************************************************************/
void WatchDog0()
{

/*
#pragma asm

        CLR EA                  ;清除中断
        MOV CCAP4L , #00        ;下一个比较值是当前PCA定时器高8位(CH)值的255倍
        MOV CCAP4H , CH         ;来避免(CCAPH,CCAPL) = (CH,CL)
        SETB EA

#pragma endasm
*/

        EA = 0;
        CCAP4L = 0x0;
        CCAP4H = CH;
        EA = 1;

}



/*******************************************************************
			启动P89C668的硬件看门狗设置
函数原型: void WatchDog1_Init();
功能: 启动P89C668的硬件看门狗设置
*******************************************************************/
void WatchDog1_Init()
{
        WDTRST = 0x1E;
        WDTRST = 0xE1;
}



/*******************************************************************
			喂P89C668的硬件看门狗
函数原型: void WatchDog1();
功能: 喂P89C668的硬件看门狗
*******************************************************************/
void WatchDog1()
{
        WDTRST = 0x1E;
        WDTRST = 0xE1;
}

⌨️ 快捷键说明

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