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

📄 io端口动态测试范例.txt

📁 这是单片机C51的各种代码包
💻 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 + -