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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求教單片機P1=P1|0x01的意思

  [復制鏈接]
跳轉到指定樓層
樓主
ID:860248 發表于 2021-2-19 22:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求教一下各位
P1=P1|0x01 是什么意思?
我在百度只查到說是
(將P1與0x01按位或之后,再賦給P1)
可否請教詳細解釋

另外
P1=P1|0x01
這個 | 怎樣輸入
(我現在只用 Ctrl-C Ctrl-V 貼上)
我的程序如下:

#include<reg52.h>

unsigned int t;
unsigned char i;

void delay(int t)
{
    while(t--);
}

void main ()
{
    delay(30000);
    P1 = 0x01;
    while(1)
    {
        for(i=0;i<8;i++)
        {
            delay(30000);
            P1<<=1;
            P1=P1|0x01;
         }
        P1 = 0x01;
    }
}

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

使用道具 舉報

沙發
ID:885009 發表于 2021-2-19 23:18 | 只看該作者
|:或操作,1|1=1、1|0=1、0|0=0
那個符號是shift+\,
‘\’在回車上方
0x01是32位16進制,但是內部仍然是2進制,
整體展開就是
0000 0000 0000 0000 0000 0000 0000 0001
所以P1<<=1就是
0000 0000 0000 0000 0000 0000 0000 0010
P1|0x01就是
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0001
這兩個按位|,結果就是
0000 0000 0000 0000 0000 0000 0000 0011
所以P1=P1|0x01
就是把0000 0000 0000 0000 0000 0000 0000 0011
賦值給P1,
最后for循環結束,
P1 = 0x01
將P1內的值重置

評分

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

查看全部評分

回復

使用道具 舉報

板凳
ID:419968 發表于 2021-2-19 23:22 | 只看該作者
P1=P1|0x01 //P1 第0位置1 其他位不變

void main ()
{
    delay(30000);
    P1 = 0x01;  //P1第0位置1 其他置0
    while(1)
    {
        for(i=0;i<8;i++)
        {
            delay(30000);
            P1<<=1;    //P1等于P1左右一位
            P1=P1|0x01; //P1 第0位置1 其他位不變
         }
        P1 = 0x01;
    }
}

| shift+ \ 輸入

評分

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

查看全部評分

回復

使用道具 舉報

地板
ID:97554 發表于 2021-2-19 23:31 | 只看該作者
aba_aba 發表于 2021-2-19 23:18
|:或操作,1|1=1、1|0=1、0|0=0
那個符號是shift+\,
‘\’在回車上方

0x01是8位 16進制,

   0  0  0  0    0  0  0  1           二進制的1
   8  4  2  1    8  4  2  1

0x           0                1          十六進制的1

評分

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

查看全部評分

回復

使用道具 舉報

5#
ID:342822 發表于 2021-2-19 23:55 | 只看該作者
咳咳咳~~~
有現成的程序員計算器不會用嗎
回復

使用道具 舉報

6#
ID:97554 發表于 2021-2-19 23:57 | 只看該作者
將P1與0x01按位或之后,再賦給

P1.7    P1.6   P1.5   P1.4   P1.3   P1.2  P1.1    P1.0            單片機的的P1口的八個管腳,
   |         |        |        |         |        |        |        |   

   0        0        0       0         0        0       0        1            管腳低電平為0,高電平為1,

  8        4         2       1         8        4       2        1            轉換成十六進制,管腳對應下邊的8421,所有
                                                                                    的高電平相加就是16進制。比如最后一腳為高
                                                                                    電平 16進制就是01,0x是16進制數開頭。

那么與運算就是兩個數運算,有1就等1,三種情況1與1得1,1與0,還是得1,0與0,那就得0,所以叫有1得1,全0得0。

P1=0X01那也就是最上邊的情況,P1.0是高電平,其余的都是低電平。

接下來看你的程序


P1 = 0x01;      這個就好理解了吧,P1.7---P1.1都是低電平0,只有P1.0是高電平。
    while(1)   整個紅字這一段是把高電平這個引腳的電平向左移8次。
    {
        for(i=0;i<8;i++)      就是這句,跟while和下邊P1<<=1;結合,運行8次
        {
            delay(30000);
            P1<<=1;            
            P1=P1|0x01;      然后再與上0X01;那就是每移一次最右邊的腳都是高電平,這樣一來,那就是一個接一個的高電平向左移到最高位P1.7了。
         }

        P1 = 0x01;     這最后一句是當P1口全都是高電平了之后,再讓P1口只有P1.0為高電平。
    }
}

這個這一段的意思就是如果P1口接的發光二極管(LED)的話,那就是依次從P1.0開始向最高位熄滅,然后再回到P1.0口熄滅狀態,或者相反的狀態。

|這個符號在回車的上邊,在51C語言里讀作“或”,是一個運算符,上邊講過他的運算法則了。
即:  1|1=1  1|0=1 0|0=0

評分

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

查看全部評分

回復

使用道具 舉報

7#
ID:860248 發表于 2021-2-20 01:11 | 只看該作者
謝謝各位
明白了, 是 新的賦值 和 舊的值 作 或 的相加 的意思

我的鍵盤 是兩個小的直豎, 不知道原來是 | shift+ \ 輸入
回復

使用道具 舉報

8#
ID:517951 發表于 2021-2-20 08:16 | 只看該作者
P1=P1|0x01就是把P0的第1位(P1^0)置高電平
回復

使用道具 舉報

9#
ID:840797 發表于 2021-2-20 08:30 | 只看該作者
同為小白的初學者,謝謝各位的解答!
回復

使用道具 舉報

10#
ID:883031 發表于 2021-2-21 15:30 | 只看該作者
采用或的方式好處在于不會影響其他位的值,尤其是在多處需要對同一寄存器賦值時特別有用。
回復

使用道具 舉報

11#
ID:388929 發表于 2021-2-21 16:33 | 只看該作者
我不是小白,也謝謝各大神的解答,每種答案都是一種思路,能分享真的是難能可貴,感謝
回復

使用道具 舉報

12#
ID:243702 發表于 2021-2-21 19:46 | 只看該作者
樓主要看看C語言位運算相關,位運算是修改一個數的某些位而保留其他位。
回復

使用道具 舉報

13#
ID:366464 發表于 2021-2-21 20:56 | 只看該作者
| 這個符號特別,在臺式鍵盤右手shift上邊 小臺機把這符號截成兩段
回復

使用道具 舉報

14#
ID:420836 發表于 2021-2-22 06:06 | 只看該作者
這是邏輯位或運算,如果所有在或操作中的位均為0,則結果為0,如果或操作的位中至少一位為1,則結果為1。使用Shift +“ \”獲得| 標志。
回復

使用道具 舉報

15#
ID:231674 發表于 2021-3-2 15:57 | 只看該作者
P1|=(0x01<<N), 將P1第N位置1,其余位不變。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品1区2区 | 91九色视频 | 国产91在线播放精品91 | 午夜影晥 | 福利视频网 | 国产91在线观看 | 国产在线精品一区二区三区 | 国产精品自拍视频 | 黄色电影在线免费观看 | 欧美精品v国产精品v日韩精品 | 黄片毛片免费观看 | 一区二区av| 色播99| 亚洲一区久久 | 久久小视频 | 国产成人免费视频网站高清观看视频 | 亚洲欧美日韩精品久久亚洲区 | 在线播放亚洲 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产分类视频 | 一级欧美一级日韩片免费观看 | 欧美片网站免费 | 99久久精品免费看国产高清 | 国产精品久久久久久久久久久久午夜片 | 岛国av在线免费观看 | 蜜桃特黄a∨片免费观看 | 日操操夜操操 | 亚洲精品视频一区 | 国产精品欧美一区二区 | 成人亚洲片 | 久久99精品久久久久久 | 中文字幕av免费 | 日韩欧美久久 | 免费在线观看成人av | 中文字幕丁香5月 | 草久视频 | 精品久久久久久久人人人人传媒 | 精品视频久久久 | av毛片| 成人在线视频网站 | 免费毛片网站 |