dcqq88 发表于 2012-7-22 10:07:26

求解一个有关继电器程序问题??

为什么程序中P2口的值不用重新赋值,就能够自动变化?主函数语句是什么意思?

/*
*继电器控制照明设备*
*/
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;

#define K1_DOWN                 P1& 0x01                        //K1按键定义
#define RELAY_SWITCH()        P2 ^= 0x10                        //继电器开关切换控制
#define LED_Light()                P2 ^= 0x04

void delay(uint16 x)
{
        uint16 i,j;
        for(i = x; i > 0; i --)
                for(j = 114; j > 0; j --);               
}

int main()
{                                                                       
        while(1)
        {
                if(K1_DOWN)                                                               
                {
                        while (K1_DOWN);                                       
                        RELAY_SWITCH();                                               
                        LED_Light();
                        delay(10);                                                                                                         
                }
        }
}

sunnyqd 发表于 2012-7-22 10:35:33

P2 ^= 0x10
与1异或就是取反,所以前后两次调用时,对端口取反,P2口已重新赋值

dcqq88 发表于 2012-7-25 20:10:42

谢谢!{:smile:}

wpami 发表于 2012-7-25 22:24:17

学习了.........
页: [1]
查看完整版本: 求解一个有关继电器程序问题??