关于单片机用在自动化测试方面的问题

[复制链接]
2401|6
 楼主| duhemayi 发表于 2012-9-16 14:55 | 显示全部楼层 |阅读模式
不知道坛子里有没有朋友用单片机做过自动化测试,或者用一此测试台方面的呢?
最近做一些这方面的,感觉程序总是的频繁的进入死循环,很郁闷!不知道应该怎么下?
举个例子
#include <reg52.h>
typedef unsigned char uint8;
typedef unsigned int  uint16;
sbit start = P3^7;
sbit alarm = P3^6;
sbit fan   = P2^0;
sbit door  = P2^1;
sbit flash = P2^2;
void delay_1ms()
{
uint8 a=152;
while(a--);
}
void delay_ms(uint16 n)
{
uint16 i;
for(i=n;i--;i>0)
{
  delay_1ms();
}
}
void start_test(void)
{
while(1)
{
  fan = 0;
  door = 0;
  flash = 1;
}
}
void alarm_test(void)
{
fan = 1;
door = 1;
flash = 0;
}
main()
{
P0 = 0xff;
P3 = 0xff;
fan   = 1;
door  = 1;
flash = 1;
if(start==0);
{
  delay_ms(10);
  if(start==0)
  {
   while(start==0);
   start_test();
  }
else if(alarm==0)
{
  delay_ms(10);
  if(alarm==0)
  {
   while(alarm==0)
   alarm_test();
  }
}   
}
}
我想让程序在按下START后开始,在START中进行的同时检查malrm,如报警则退出,回到主程序等待START按下,不知道程序怎么写?
有没有朋友帮下??
ningling_21 发表于 2012-9-16 20:57 | 显示全部楼层
的同时检查alarm .
while(start==0)
{
    if(alarm ==0)
   {
       break;
   }
}
 楼主| duhemayi 发表于 2012-9-17 13:48 | 显示全部楼层
多谢!那像1602这样显示器,显示的时候闪烁,我检查了一下原因,是因为单片机一直在扫描,那怎么让它不闪呢?
darlin520 发表于 2012-9-17 16:19 | 显示全部楼层
把写命令和写数据函数中的延时加长一点就不会闪了。。
 楼主| duhemayi 发表于 2012-9-17 18:11 | 显示全部楼层
把写命令和写数据函数中的延时加长一点就不会闪了。。


我试下!
henglin 发表于 2017-1-28 21:32 来自手机 | 显示全部楼层
我经常用单片机做测试台,你这么说只能说明你的功夫还不够深
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

1685

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部