📄 p89c668.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 + -