久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2487|回復: 3
打印 上一主題 下一主題
收起左側

請教個跳出循環問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:65643 發表于 2014-11-6 08:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
當按某個 按鍵后,對應 mode 運行,但接著按 其它按鍵時,不能立刻跳出循環。例:按 S3 后執行 mode3();, 再按 S1 不會立刻執行 mode。#include <reg52.h>
#define uchar unsigned  char
#define uint  unsigned  int

sbit s1 = P1^0;
sbit s2 = P1^1;
sbit s3 = P1^2;
sbit led1 = P0^0;
sbit led2 = P0^1;
sbit led3 = P0^2;

void delay (uint x)   // 延時 1ms (晶振 12M)
{
    unsigned char a,b,c;
    for(c=x; c>0; c--)
        for(b=142; b>0; b--)
            for(a=2; a>0; a--);
}

void mode1()
{
            while(1)
            {
                        led1 = ~led1;
                        delay(200);

if((s1==0)||(s2==0)||(s3==0))break;
            }
}

void mode2()
{
            while(1)
            {
                        led1 = 0;
                        delay(500);
                        led2 = 0;
                        delay(500);
                        led1 = 1;
                        led2 = 1;
                        delay(500);

if((s1==0)||(s2==0)||(s3==0))break;
            }
}

void mode3()
{
            while(1)
            {
                        led1 = 0;
                        delay(500);
                        led2 = 0;
                        delay(500);
                        led3 = 0;
                        delay(500);
                        led1 = 1;
                        led2 = 1;
                        led3 = 1;
                        delay(500);

if((s1==0)||(s2==0)||(s3==0))break;
            }
}

void mian(void)
{
            P1 = 0xff;
            P0 = 0xff;

while(1)
            {
                        if (s1 == 0)
                        {
                                    delay(5);
                                    if (s1 == 0)
                                                mode1();
                        }

if (s2 == 0)
                        {
                                    delay(5);
                                    if (s2 == 0)
                                                mode2();
                        }

if (s3 == 0)
                        {
                                    delay(5);
                                    if (s3 == 0)
                                                mode3();
                        }
            }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:19715 發表于 2014-11-6 09:51 | 只看該作者
因為while(1)循環的時間太長

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:65643 發表于 2014-11-6 10:57 | 只看該作者
明白 發表于 2014-11-6 09:51
因為while(1)循環的時間太長

怎么解決這問題呢?
回復

使用道具 舉報

地板
ID:19715 發表于 2014-11-6 15:55 | 只看該作者
按鍵響應采用中斷方式
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色网页 | 亚洲小视频在线播放 | 在线日韩在线 | 久久精品一区二区三区四区 | 国产成人精品在线播放 | 成人亚洲一区 | 欧美日韩在线精品 | 午夜欧美一区二区三区在线播放 | 亚洲成人一区二区三区 | 九色网址 | 国产免费又色又爽又黄在线观看 | 亚洲精品白浆高清久久久久久 | 日韩中文一区二区三区 | 亚洲在线电影 | 国产精品永久久久久久久www | 日韩欧美三级 | 精品久久av | 欧美二区三区 | 日日综合 | 中文字幕亚洲一区二区三区 | 国产清纯白嫩初高生视频在线观看 | 久久人人爽人人爽 | av网站免费观看 | 97精品超碰一区二区三区 | 看片wwwwwwwwwww| 亚洲一区 | 国产成人精品一区 | 亚洲色图在线观看 | 亚洲二区视频 | 欧美一级大片 | 精品免费国产视频 | av在线天堂网 | 亚洲欧美日韩电影 | 欧美精品久久久 | 综合久久一区 | 草久久久| 视频1区 | 久久一区二区三区四区 | 日韩一级电影免费观看 | 久久久久久久久久一区 | 免费观看一级特黄欧美大片 |