找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3515|回復(fù): 14
收起左側(cè)

關(guān)于單片機(jī)C語言LED=0x255的理解,LED閃爍程序

  [復(fù)制鏈接]
ID:666571 發(fā)表于 2020-7-17 10:31 | 顯示全部樓層 |閱讀模式
單片機(jī)LED閃爍實(shí)驗(yàn):

#include "reg51.h"

typedef unsigned char  u8;
typedef unsigned int u16;    /*小于65535*/

#define LED P0

void delay3s(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=189;c>0;c--)
        for(b=230;b>0;b--)
            for(a=33;a>0;a--);
}

void main ()
{
   while (1)
  {
   LED=0x00;
   delay3s()  ;
   LED=~LED;
   delay3s() ;
  }
}
main函數(shù)中的LED控制口替換成以下編碼:
while (1)
  {
   LED=0x00;
   delay3s()  ;
   LED=0x255;
   delay3s() ;
  }
結(jié)論,
我的理解(我的單片機(jī)二極管低電平亮)是LED=0x00;對(duì)應(yīng)的二進(jìn)制數(shù)(0000  0000)全亮,LED=0x255;時(shí)對(duì)應(yīng)二進(jìn)制(1111  1111)全滅才對(duì)。但3秒后只有D1,D3,D5,D7四個(gè)燈管滅。原本的代碼里的LED=~LED;的話達(dá)到預(yù)期效果全滅。不知道是不是我的理解錯(cuò)了。

回復(fù)

使用道具 舉報(bào)

ID:247125 發(fā)表于 2020-7-17 14:11 | 顯示全部樓層
理解的沒錯(cuò)。上述現(xiàn)象可能是IO口沒有配置成輸出模式導(dǎo)致?
回復(fù)

使用道具 舉報(bào)

ID:452950 發(fā)表于 2020-7-17 14:13 | 顯示全部樓層
0X00取非是0XFF
0XFF是16進(jìn)制,轉(zhuǎn)換成二進(jìn)制是11111111,轉(zhuǎn)換成十進(jìn)制是255

回復(fù)

使用道具 舉報(bào)

ID:804727 發(fā)表于 2020-7-17 14:14 | 顯示全部樓層
這看得我有點(diǎn)懵
回復(fù)

使用道具 舉報(bào)

ID:267932 發(fā)表于 2020-7-17 14:48 | 顯示全部樓層
你應(yīng)該寫 255 不應(yīng)該是0X255吧,
回復(fù)

使用道具 舉報(bào)

ID:716656 發(fā)表于 2020-7-17 15:18 來自觸屏版 | 顯示全部樓層
你寫的ox255是十六進(jìn)制255,轉(zhuǎn)化成二進(jìn)制是1001010101。你試試LED=255.
回復(fù)

使用道具 舉報(bào)

ID:451718 發(fā)表于 2020-7-17 15:24 | 顯示全部樓層
0x255   是幾個(gè)意思, 為什么不是0xff 。 0x255 是三位16進(jìn)制數(shù)了。   
回復(fù)

使用道具 舉報(bào)

ID:536119 發(fā)表于 2020-7-17 15:55 | 顯示全部樓層
0x00是0000 0000,低電平所以都亮,而0x255是0010 0101 0101,所以會(huì)間隔亮,你應(yīng)該是16進(jìn)制與二進(jìn)制的轉(zhuǎn)換搞錯(cuò)了,可以把0x255換成0xff也就是1111 1111 或者換成255或者換成8進(jìn)制的0377
回復(fù)

使用道具 舉報(bào)

ID:331263 發(fā)表于 2020-7-17 15:56 | 顯示全部樓層
寫錯(cuò)了吧,十進(jìn)制和16進(jìn)制搞混了吧
回復(fù)

使用道具 舉報(bào)

ID:342822 發(fā)表于 2020-7-17 16:09 | 顯示全部樓層
  要學(xué)會(huì)使用現(xiàn)有的計(jì)算工具
回復(fù)

使用道具 舉報(bào)

ID:97554 發(fā)表于 2020-7-17 16:21 | 顯示全部樓層
當(dāng)256是十進(jìn)制數(shù)時(shí)換成十六進(jìn)制為0xFF即為二進(jìn)制數(shù)B1111 1111,但是0x256表示16進(jìn)制數(shù),已經(jīng)超過八位了 轉(zhuǎn)換為二進(jìn)制數(shù)為10 0101 0110。在C51里,二進(jìn)制數(shù)前加B,十六進(jìn)制前加0x。
回復(fù)

使用道具 舉報(bào)

ID:282850 發(fā)表于 2020-7-17 16:44 | 顯示全部樓層
LED=0x255;時(shí)對(duì)應(yīng)二進(jìn)制(1111  1111)?
0xff是255,
0x255是1001010101
回復(fù)

使用道具 舉報(bào)

ID:636538 發(fā)表于 2020-7-17 16:48 | 顯示全部樓層
兄弟0x代表16進(jìn)制,十進(jìn)制255,確實(shí)就對(duì)應(yīng)16進(jìn)制FF,但是0x255對(duì)應(yīng)二進(jìn)制0010 0101 0101,那燈滅的現(xiàn)象正確
回復(fù)

使用道具 舉報(bào)

ID:981034 發(fā)表于 2022-1-21 14:33 | 顯示全部樓層
咋是3位十六進(jìn)制?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表