?? dio.#3
字號:
/****************************************************************************
**
** 文件名: DIO.c
** 功能: C8051Fxxx在LZK中的DI、DO應用;
** 創建時間:2005.08.05
** 修改時間:2006.08.28
** 修改說明:2006.09.30 沈盧斌
修改了
** 修改說明:2006.09.30 薛佳元
修改了
** 作者: 李立學
** 版權申明:可以拷貝,可以修改,但必須保留修改時間和作者信息
**
****************************************************************************/
#include "LZK.H"
/****************************************************************************
** 函數名稱: DIO_CS()
** 功能描述: DIO地址片選
** 入口參數: 無
** 出口參數: 無
** 全局變量: 無
** 調用模塊: 無
** 說明:
****************************************************************************/
void DIO_CS(void)
{
uint8 data ucTMP;
/*******************************
*** Switch to ExSRAM ***
*******************************/
SFRPAGE = 0x00;
EMI0CF = 0x25; // 0010_0101, ALE: 2SYSCLK. SRAM Split Mode.
EMI0TC = 0x49; // 01_0010_01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
SFRPAGE = 0x0f;
ucTMP = ucP4DATA & 0xC0 | 16; // ExSRAM Page 16;
P4 = ucTMP; // ExSRAM Page Setting.
SFRPAGE = 0x00;
}
/****************************************************************************
** 函數名稱: RelayOutPut_Init()
** 功能描述: 繼電器輸出初始化.
** 入口參數: 無
** 出口參數: 無
** 全局變量: 無
** 調用模塊: 無
** 說明:
****************************************************************************/
void RelayOutPut_Init(void)
{
DIO_CS(); // ExSRAM Page 16.
RelayOutDATA = 0xff; // Relay Reset to 0x00.
RelayOutOE = 0xff; // Relay Output Enabled.
ExInSRAM_Select(0); //
}
/****************************************************************************
** 函數名稱: RelayOutPut()
** 功能描述: 繼電器控制輸出
** 入口參數: RelayOutCMD,RelayOutCMD^n = 1對應位的繼電器動作,否則為默認值;
** 出口參數: 無
** 全局變量: RelayOUT
** 調用模塊: 無
** 說明:
****************************************************************************/
void RelayOutPut(uint8 ucDATA)
{
DIO_CS(); // ExSRAM Page 16.
RelayOutDATA = ucDATA; //
ExInSRAM_Select(0); //
}
/****************************************************************************
** 函數名稱: RelayInPut()
** 功能描述: 外部開關量I/O輸入,遙信
** 入口參數: 無;
** 出口參數: RelayIN,外部開關量
** 全局變量: RelayIN
** 調用模塊: 無
** 說明:
****************************************************************************/
uint8 RelayInPut(void)
{
uint8 data ucTMP;
SFRPAGE = 0x00;
EMI0CF = 0x25; // 0010_0101, ALE: 2SYSCLK. SRAM Split Mode.
EMI0TC = 0x49; // 01_0010_01: AST:1,nWR/nRd:3SYSCLK,AHT:1.
SFRPAGE = 0x0f; // P4,P7 SFR PAGE.
P4 = 0xd0; // 1___1___0___10000;
// nWR_nRD_ALE_A[20..A16].
ucTMP = RelayInDATA; // RelayInDATA Valid.
// A[4..0] be Saved.
P7MDOUT = 0x00; // P7口設置為輸入方式.
P4 = 0xd0 & 0xbf; // nRD ='0';
P4 = 0xd0 & 0xbf; // nRD ='0';
P4 = 0xd0 & 0xbf; // nRD ='0';
P4 = 0xd0 & 0xbf; // nRD ='0';
ucTMP = P7;
P4 = 0xd0; // nRD ='1';
P7MDOUT = 0xff; // P7口設置為推挽方式.
ExInSRAM_Select(0); //
return ucTMP;
}
/****************************************************************************
** 函數名稱: PulseOutPut()
** 功能描述: 可控硅觸發變壓器輸出
** 入口參數: PulseOutCMD,PulseOutCMD^n = 1對應位的脈沖觸發變壓器輸出;
** 出口參數: 無
** 全局變量: PulseOUT
** 調用模塊: 無
** 說明:
****************************************************************************/
void PulseOutPut(uint8 ucDATA)
{
SFRPAGE = 0x0f; // P5 SFR PAGE.
ucP5DATA = ucDATA & 0x7f;
P5 = ucP5DATA;
SFRPAGE = 0x00;
}
/****************************************************************************
** 函數名稱: RelayOut_SelfTest()
** 功能描述: 繼電器輸出自檢測試
** 入口參數: 無
** 出口參數: 無
** 全局變量: 無
** 調用模塊: 無
** 說明:
****************************************************************************/
void RelayOut_SelfTest(void)
{
uint8 idata i, ucTMP;
for(i=0; i<8; i++)
{
ucTMP = 0x01 << i; // 0000 0001.
ucTMP = ~ucTMP; // 1111 1110.
RelayOutPut(ucTMP);
D1S(1);
}
RelayOutPut(0xff); // Disabled all Relays.
}
/****************************************************************************
** 函數名稱: PulseOut_SelfTest()
** 功能描述: 繼電器輸出自檢測試
** 入口參數: 無
** 出口參數: 無
** 全局變量: 無
** 調用模塊: 無
** 說明:
****************************************************************************/
void PulseOut_SelfTest(void)
{
uint8 xdata i, ucTMP;
for(i=0; i<7; i++)
{
ucTMP = 0x01 << i; // 0000 0001.
ucTMP = ~ucTMP; // 1111 1110.
ucTMP = ucTMP & 0x7f; // 0111 1110.
PulseOutPut(ucTMP);
DmS(3);
}
PulseOutPut(0xff); // Disabled all PulseOUT.
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -