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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機P1口輸入輸出

[復制鏈接]
跳轉到指定樓層
樓主
ID:64810 發表于 2014-8-15 21:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <stdio.h>

sbit L4 = P1^4;

void DELAY();


void main()
{
        unsigned char k;
        unsigned char k_temp;
        k = P1;
        if (k == 0xFE)
        {
                DELAY();
                k_temp = P1;
                if(k_temp == k)
                {
                //P2 = 0xFE;
                L4 = 0;
                }
                else
                {
                        L4 = 1;
                }
        }

}

void DELAY()
{
        int i,j;
        for (i = 0;i < 1000;i++)
        {
                for (j = 0;j < 10;j++);
        }
}

為什么加了DELAY();后LED燈會閃爍,想不明白啊

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:19715 發表于 2014-8-15 21:53 | 只看該作者
延時時間多長了
回復

使用道具 舉報

板凳
ID:1 發表于 2014-8-15 23:57 | 只看該作者
DELAY();加哪里的
回復

使用道具 舉報

地板
ID:63752 發表于 2014-8-16 00:07 來自手機 | 只看該作者
這延時,不知你加哪了
回復

使用道具 舉報

5#
ID:58502 發表于 2014-8-16 00:14 | 只看該作者
本帖最后由 liaolinhui 于 2014-8-16 12:20 編輯

覺得你這程序很不合邏輯
#include <reg52.h>
#include <stdio.h>

sbit L4 = P1^4;

void DELAY();


void main()
{
        unsigned char k;
        unsigned char k_temp;
        k = P1; //這里你讓k=P1,
        if (k == 0xFE)
        {
                DELAY();
                k_temp = P1;//這里你又讓k_temp=P1
                if(k_temp == k)//所以這里你是想通過延時一段時間后判斷按鍵是否松開,對吧,但是單片機執行指令是很快的,延時完了你沒及時松開,程序就直接判斷k_temo==k,所以執行L4=0,而如果你延時程序沒延時完及時松開了,那么程序就判斷k_temp不等于k,而執行L4=1,
                {
                //P2 = 0xFE;
                L4 = 0;
                }
                else
                {
                        L4 = 1;
                }
        }

}

void DELAY()
{
        int i,j;
        for (i = 0;i < 1000;i++)
        {
                for (j = 0;j < 10;j++);
        }
}

評分

參與人數 1威望 +15 黑幣 +20 收起 理由
admin + 15 + 20 很給力!

查看全部評分

回復

使用道具 舉報

6#
ID:64810 發表于 2014-8-16 16:52 | 只看該作者
liaolinhui 發表于 2014-8-16 00:14
覺得你這程序很不合邏輯
#include
#include

對,基本想法如你所說,延時主要想取消按鍵抖動影響。可是想不明白加入延時之后LED燈亮度變暗,不停閃爍。當我把DELAY();取消后LED燈就不閃爍了O O
回復

使用道具 舉報

7#
ID:64810 發表于 2014-8-16 16:53 | 只看該作者
XUSHENG 發表于 2014-8-16 00:07
這延時,不知你加哪了

sorry,下次加注釋,這次忘了~~
unsigned char k;
        unsigned char k_temp;
        k = P1;
        if (k == 0xFE)
        {
                DELAY();  //延時
                k_temp = P1;
回復

使用道具 舉報

8#
ID:64810 發表于 2014-8-16 16:58 | 只看該作者
admin 發表于 2014-8-15 23:57
DELAY();加哪里的

sorry,下次加注釋,這次忘了~~
unsigned char k;
        unsigned char k_temp;
        k = P1;
        if (k == 0xFE)
        {
                DELAY();  //延時
                k_temp = P1;
回復

使用道具 舉報

9#
ID:64810 發表于 2014-8-16 16:58 | 只看該作者
明白 發表于 2014-8-15 21:53
延時時間多長了

12M晶振,10MS吧
回復

使用道具 舉報

10#
ID:2318 發表于 2014-8-16 19:02 來自手機 | 只看該作者
用的軟件放縱一下就知道時間了
回復

使用道具 舉報

11#
ID:2318 發表于 2014-8-16 19:02 來自手機 | 只看該作者
軟件仿真
回復

使用道具 舉報

12#
ID:63752 發表于 2014-8-18 13:06 | 只看該作者
highffff 發表于 2014-8-16 16:53
sorry,下次加注釋,這次忘了~~
unsigned char k;
        unsigned char k_temp;

unsigned char k;
        unsigned char k_temp;
        k = P1;
        if (k == 0xFE)//K是否OXFE//
        {
                DELAY();  //延時
              if(k == 0xFE)//再次確認K是否OXFE//
                {k_temp = P1;}
回復

使用道具 舉報

13#
ID:64810 發表于 2014-8-19 13:13 | 只看該作者
XUSHENG 發表于 2014-8-18 13:06
unsigned char k;
        unsigned char k_temp;
        k = P1;

你的意思是去掉中間轉換的變量k_temp,直接去判斷兩次k==0xFE?,這樣做和原來區別在哪里呀?
回復

使用道具 舉報

14#
ID:64810 發表于 2014-8-19 19:04 | 只看該作者
XUSHENG 發表于 2014-8-18 13:06
unsigned char k;
        unsigned char k_temp;
        k = P1;

我知道原因了,想明白了~~
回復

使用道具 舉報

15#
ID:64810 發表于 2014-8-19 19:04 | 只看該作者
liaolinhui 發表于 2014-8-16 00:14
覺得你這程序很不合邏輯
#include
#include

我知道原因了~~
回復

使用道具 舉報

16#
ID:60266 發表于 2014-8-19 20:27 | 只看該作者
找到就好 我也想知道原因  能不能說一下
回復

使用道具 舉報

17#
ID:64810 發表于 2014-8-19 21:42 | 只看該作者
heise 發表于 2014-8-19 20:27
找到就好 我也想知道原因  能不能說一下

在P1口輸出時我用的是P1^4,但是在掃描輸入時我用的是P1全口定義,在P1^4= 0后,k==0xFE已經是判斷不成立了,所以會把P1^4= 1,如此反復循環,LED就亮滅閃爍~~還有我的else函數寫錯地方了~~

評分

參與人數 1威望 +5 黑幣 +5 收起 理由
heise + 5 + 5 贊一個!

查看全部評分

回復

使用道具 舉報

18#
ID:60266 發表于 2014-8-19 22:15 | 只看該作者
共同學習 學習
回復

使用道具 舉報

19#
ID:87800 發表于 2015-8-7 09:09 | 只看該作者
學學!
回復

使用道具 舉報

20#
ID:87823 發表于 2015-8-7 12:35 | 只看該作者
這種程序太爛了,沒有一點移植性
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九久久在线看 | 国产精品看片 | 在线国产一区 | 国产乱码精品一区二三赶尸艳谈 | 91精品国产综合久久久久久 | www.奇米| 中国人pornoxxx麻豆 | 久久高清 | 超碰91在线| 永久免费av | 亚洲精品色 | 蜜桃视频一区二区三区 | 国内精品视频在线观看 | 国产精品久久久久久久久久尿 | 亚洲网站在线观看 | 日本天天操 | 国产日韩精品视频 | 999国产精品视频 | 亚洲成人免费电影 | 精品欧美一区二区三区免费观看 | 中文字幕亚洲精品 | 成人精品国产一区二区4080 | 欧美性受| 国产一区二区欧美 | 99福利视频 | 亚洲视频精品 | 欧产日产国产精品视频 | 亚洲精品麻豆 | 91麻豆精品国产91久久久资源速度 | 免费观看黄a一级视频 | 久久久久久国产精品 | 国产综合精品一区二区三区 | 在线观看中文字幕一区二区 | 亚洲 91 | 国产一区二区三区久久久久久久久 | 久久精品小视频 | 人操人人干人 | 国产一区二区三区在线免费 | 久久久国产精品视频 | 男女爱爱福利视频 | 在线欧美亚洲 |