#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.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |