?? p89c668.c
字號(hào):
/***********************************************************************************
Philips P89C668芯片特殊功能控制程序 P89C668.C
MCU 型號(hào): Philips P89C668
時(shí)鐘頻率: 11.0592 MHz
接口方式: I2C 100KHz,UART 9600
開發(fā)環(huán)境: Keil C51 V7.04
開發(fā)日期: 2003.05.07
程序編寫: BaoFang
***********************************************************************************/
#include <REG668.H>
#define uchar unsigned char
#define uint unsigned int
/******************************************************
CR PCA計(jì)數(shù)運(yùn)行控制位.
由軟件置位去啟動(dòng)PCA計(jì)數(shù)器,必須由軟件清除去關(guān)掉PCA計(jì)數(shù)器
******************************************************/
sbit CR = CCON^6;
/*******************************************************************
檢查P89C668的掉電標(biāo)記
函數(shù)原型: uchar PowerOff();
功能: 檢查P89C668的掉電標(biāo)記
返回0--無掉電情況(熱復(fù)位)
返回1--有掉電情況(冷啟動(dòng))
注意:POF需要軟件清除!!
*******************************************************************/
uchar PowerOff()
{
uchar i;
i = PCON & 0x10;
PCON &= 0xEF; //POF需要軟件清除!!
return(i>>4);
}
/*******************************************************************
啟動(dòng)P89C668的PCA看門狗設(shè)置
函數(shù)原型: void WatchDog0_Init();
功能: 啟動(dòng)P89C668的PCA看門狗設(shè)置
注意:使用了內(nèi)嵌ASM,需要打開 Generate Assembler SRC file
Assemble SRC file.
*******************************************************************/
void WatchDog0_Init()
{
/*
#pragma asm
MOV CCAPM4 , #4CH ;模塊4 處于比較模式
MOV CCAP4L , #0FFH ;首先寫入低字節(jié)
MOV CCAP4H , #0FFH ;在PCA 計(jì)數(shù)達(dá)到FFFFH之前,這些比較值必須被改變.
ORL CMOD , #40H ;只對(duì)CMOD的WDTE進(jìn)行置位,使看門狗定時(shí)器使能.
#pragma endasm
*/
CCAPM4 = 0x4C;
CCAP4L = 0xFF;
CCAP4H = 0xFF;
CMOD |= 0x40;
CR = 1; //開始PCA計(jì)數(shù)
}
/*******************************************************************
喂P89C668的PCA看門狗
函數(shù)原型: void WatchDog0();
功能: 喂P89C668的PCA看門狗
注意:使用了內(nèi)嵌ASM,需要打開 Generate Assembler SRC file
Assemble SRC file.
*******************************************************************/
void WatchDog0()
{
/*
#pragma asm
CLR EA ;清除中斷
MOV CCAP4L , #00 ;下一個(gè)比較值是當(dāng)前PCA定時(shí)器高8位(CH)值的255倍
MOV CCAP4H , CH ;來避免(CCAPH,CCAPL) = (CH,CL)
SETB EA
#pragma endasm
*/
EA = 0;
CCAP4L = 0x0;
CCAP4H = CH;
EA = 1;
}
/*******************************************************************
啟動(dòng)P89C668的硬件看門狗設(shè)置
函數(shù)原型: void WatchDog1_Init();
功能: 啟動(dòng)P89C668的硬件看門狗設(shè)置
*******************************************************************/
void WatchDog1_Init()
{
WDTRST = 0x1E;
WDTRST = 0xE1;
}
/*******************************************************************
喂P89C668的硬件看門狗
函數(shù)原型: void WatchDog1();
功能: 喂P89C668的硬件看門狗
*******************************************************************/
void WatchDog1()
{
WDTRST = 0x1E;
WDTRST = 0xE1;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -