?? io端口動態測試范例.txt
字號:
IO端口動態測試范例-(精)(3512字)hotpower2004-9-4 23:18:28[74次]
IO端口動態測試范例
HotPower 發表于 2004-8-22 10:08 侃單片機 ←返回版面 舉報該貼
/*
本例程是以前發表的一個主題的關鍵部分
原主題為: <<如何保護IO管腳直接外接電源或地不燒毀?>>
本例程只給出了P1口的2種測試方法,其它PX基本同理.
本例程若加在某個定時器中斷中,且在50mS時調用此2個函數(1個或2個)
將會實現對IO的實時檢測,依據"理論"以后道來...
*/
/*------------------------------------
P1端口測試
主要測試管腳接電源或地及相臨管腳的短路
-------------------------------------*/
unsigned char Port1Test(void)
{
unsigned char testval;
P1 = 0x55;//奇數管腳發低電平
_nop_();//延時
testval = P1 ^ 0x55;//比較發送及接收結果
P1 = 0xaa;//偶數管腳發低電平
_nop_();//延時
testval |= P1 ^ 0xaa;//比較發送及接收結果(2次的)
P1 = 0xff;//釋放P1口,防止外部接入電源
return testval;//測試成功返回0
}
/*------------------------------------
P1端口掃描
實現Port1Test()的全部功能及任意管腳短路
-------------------------------------*/
unsigned char Port1Scan(void)
{
unsigned char scanval;
unsigned char val;
scanval = 0;//暫設為成功標志
if (P1 == 0xff) {//P1口未工作才測試
val = 0xfe;//從P1.0開始測起
CY = 1;//每次移入高電平
do{
P1 = val;//發送數據
_nop_();//延時
scanval = P1 ^ val;//比較發送及接收結果
P1 = 0xff;//釋放P1口,防止外部接入電源
if (scanval) break;//P1管腳出錯,立即退出
_rlcr_(val);//帶進位位左移
}
while (CY);//8位數據未移完繼續
}
return scanval;//測試成功返回0
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -