#include "at89x51.h" #include "51hei.H" 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=20;i>0;i--) delay10ms();} void main(void) { P2_7=1; P0=0xff; P2_7=0; do{ if(P3_2==0) { delay10ms(); { if(P3_2==0) SJ=0; P0=0xff; delay2s(); P0=~P0; delay2s(); } } if(P3_4==0) {delay10ms(); {if (P3_4==0) SJ=0; P0=0x00; delay2s(); P0=0x01; delay2s(); P0=0x03; delay2s(); P0=0x07; delay2s(); P0=0x0f; delay2s(); P0=0x1f; delay2s(); P0=0x3f; delay2s(); P0=0x7f; 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; } } } while(1); } 该程序我想P3_4==0后一直保持这种循环 直到P3_2==0时
你好,你可以这样做,先在顶部定义一个全局变量 unsigned char deng;
然后程序循环检测按键
if(P3_2==0)
{
deng=1;
}
if(P3_4==0)
{
deng=2;
}
也就是说检查到按键有按下就给deng这个变量赋值;
然后也在这个大循环里判断
if (deng==1)
{执行你自己定义的}
if (deng==2)
{执行你自己定义的}
这样就可以了,你先试试,有问题再讨论
这是按照我的思路放进去~怎么LED没有反应????请问这是怎么回事?
#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=20;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; if(P3_2==0) {delay10ms(); if(P3_2==0) deng=1;} if(P3_4==0) {delay10ms(); if (P3_4==0) deng=2;} do{ if(deng==1) { SJ=0; P0=0xff; delay2s(); P0=~P0; delay2s(); } if(deng==2){ SJ=0; P0=0x00; delay2s(); P0=0x01; delay2s(); P0=0x03; delay2s(); P0=0x07; delay2s(); P0=0x0f; delay2s(); P0=0x1f; delay2s(); P0=0x3f; delay2s(); P0=0x7f; 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; } } while(1); }
你没有按照我说的把 给deng 赋值的语句 放到do的大循环里去。一旦上电后只会执行一次判断按键的语句,然后就进了你的do大循环,没机会判断按键了,所以没有反应属正常现象.
if(P3_2==0)
{
deng=1;
}
所以按你上面的写法,运行效果是开机前你必须按住P3_2 不松,然后打开电源,你会看到led灯亮。
你试试就知道了.
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |