这是我写的程序~ 我用它来控制一个继电器~但是继电器老是接通状态~~只是我将P3_2接通是跳一下~求助怎么处理
#include "at89x51.h" unsigned char deng; sbit SJ=P1^4; void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } void delay2s (void) {unsigned char i; for (i=10;i>0;i--) delay10ms();} void delay20s (void) { unsigned int i; for (i=100;i<0;i--); delay2s();} void main(void) { P2_7=1; P0=0xff; P2_7=0; //关数码管 do{ if(P3_2==0) {delay10ms(); if(P3_2==0) deng=1;} if(P3_4==0) {delay10ms(); if (P3_4==0) deng=2;} if (P3_6==0) {delay10ms(); if (P3_6==0) deng=3;} if(deng==1) { SJ=0; P0=0xfe; P2_1=0; delay20s(); P0=~P0; delay2s(); } if(deng==2){ SJ=0; P0=0x00; P2_1=1; delay2s(); P0=0x18; delay2s(); P0=0x3c; delay2s(); P0=0x7e; delay2s(); P0=0xff; delay2s(); P0=0x7e; delay2s(); P0=0x3c; delay2s(); P0=0x18; delay2s(); P0=0xff; delay2s(); P0=0xff; delay2s(); P0=0x7f; delay2s(); P0=0x3f; delay2s(); P0=0x1f; delay2s(); P0=0x0f; delay2s(); P0=0x07; delay2s(); P0=0x03; delay2s(); P0=0x01; delay2s(); P0=0x00; delay20s(); P0=0xff; } if (deng==3) {P0=0x00;} } while(1); }
j8 我插上了~ 我按P3_2的时候继电器会跳一下 后有接通了
那你的程序没必要这么长啊 几行就够了
if(P3_2==0)
P2_1=0;
if(P3_2==0)
P2_1=1;
然后循环执行就可以了.
admin 发表于 2011-5-29 22:30
P2^1 是51hei开发板的可控硅端口,而且要把跳线帽j8插上, P2^1=1的情况下可控硅会导通的 P2^1=0 则 ...
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |