sunoracle 发表于 2012-10-9 08:17:25

高手们,简单又绕人的3步逻辑,要用51单片机实现,如何...

本帖最后由 sunoracle 于 2012-10-9 08:36 编辑



(1)单片机的一个io口 收到一个低电频,就使能Y轴的脉冲计数。
(2)Y轴向的脉冲输入中断P3^2。当脉冲计数等于1000个时。使能X轴向的脉冲中断计数。
(3)X轴向的脉冲输入中断P3^3。当这个X轴向的脉冲停止2秒后,给其中一个IO口一个低电平。

请问用C语言如何写?

伪代码:
(1) if(0 == P1.0) then EX0 = 1;// 如果io口 收到一个低电频,就使能Y轴的脉冲计数。Y相脉冲和P3^2连。
(2) Ex0_interrupt interrupt 0
               if ( 1000 == count)   
                     then EX1 = 1;   // Y轴向的脉冲输入数量等于1000时。使能X轴向的脉冲计数中断。 X相脉冲和P3^3连。
(3) EX1_interrupt interrupt 2
               enable TR0 = 1; //使用计时器是否为计算2秒钟。
(4) time_calculate interrupt 1
               ++timecount; // 每次中断50ms。
               if (40 == timeCount)//如果最后一个跳变脉冲后,计时器达到40次,40*50ms=2s,就使一个IO口输出低电平。
             P1.1 = 0;
         这样写的难点是如何让每次X轴脉冲跳变之后,都能初始化timecount为0呢?

dudududu 发表于 2012-10-9 08:58:24

在你的第四部中断里面,加入一个变量M,用来记录之前的X轴的脉冲次数,每次进中断的时候先判断M是否和当前的脉冲次数相等,若不想等,说明上一个中断到当前的中断期间有增加新的脉冲,接下来将当前的脉冲数重新赋值给M,并且将timecount清零;如果刚才判断M和当前的脉冲次数相等,则说明上一个中断到当前的中断期间,没有新的脉冲发生,timecount继续累加
页: [1]
查看完整版本: 高手们,简单又绕人的3步逻辑,要用51单片机实现,如何...