只需一步,快速開始
熱門: 51單片機 | 24小時必答區(qū) | 單片機教程 | 單片機DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機樂園 | Arduino | 嵌入式OS | 程序設(shè)計
#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后一直保持這種循環(huán) 直到P3_2==0時
使用道具 舉報
你好,你可以這樣做,先在頂部定義一個全局變量 unsigned char deng;
然后程序循環(huán)檢測按鍵
if(P3_2==0)
{
deng=1;
}
if(P3_4==0)
deng=2;
也就是說檢查到按鍵有按下就給deng這個變量賦值;
然后也在這個大循環(huán)里判斷
if (deng==1) {執(zhí)行你自己定義的}
if (deng==2) {執(zhí)行你自己定義的}
這樣就可以了,你先試試,有問題再討論
這是按照我的思路放進去~怎么LED沒有反應(yīng)????請問這是怎么回事?
#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的大循環(huán)里去。一旦上電后只會執(zhí)行一次判斷按鍵的語句,然后就進了你的do大循環(huán),沒機會判斷按鍵了,所以沒有反應(yīng)屬正常現(xiàn)象.
所以按你上面的寫法,運行效果是開機前你必須按住P3_2 不松,然后打開電源,你會看到led燈亮。
你試試就知道了.
本版積分規(guī)則 發(fā)表回復(fù) 回帖后跳轉(zhuǎn)到最后一頁
手機版|小黑屋|51黑電子論壇 | 管理員QQ:125739409;技術(shù)交流QQ群281945664
Powered by 單片機教程網(wǎng)