熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2018-11-22 21:18
正文摘要:如圖所示:i=0X14; 就是00010100, 然后用了ser=i>>7; 右移后i應(yīng)該等于00000000才對(duì),然后i<<1; for循環(huán)移位寄存器應(yīng)該接收的也是00000000才對(duì), 最后595輸出的是00000000才對(duì)。一個(gè)燈都不亮。 ... |
滄浪 發(fā)表于 2018-11-23 12:35 set=i>>7是不是相當(dāng)于00010100 右邊的7位0010100給移走了,只剩最左邊的0位,然后把最左邊的0賦值給了ser? |
a66301208a 發(fā)表于 2018-11-23 11:02 直接用ser=I,這是把I的最低位給了ser,但是,他應(yīng)該是從I的最高位開始發(fā)送的,所以就不能直接賦值了 |
a66301208a 發(fā)表于 2018-11-23 11:04 ser應(yīng)該是一個(gè)io口吧,他只能能接收一個(gè)比特位 |
phang 發(fā)表于 2018-11-23 09:27 ser是接收字節(jié)00010100的最高位,還是只能接收一個(gè)位? |
滄浪 發(fā)表于 2018-11-22 22:58 有一點(diǎn)點(diǎn)明白了,不過(guò)為什么要用set=i>>7,直接用ser=i不可以嗎?直接用set=i不正好74h595的ser不就直接接收00010100的左邊第一個(gè)0嗎?第二次循環(huán)00101000的第二位,這樣依次循環(huán)。 |
你是不是忘了“ i = ser;”??? 因?yàn)闆](méi)有“ i = ser ;” 現(xiàn)在程序是 i=0x14; i<<=1; ( i = 0x28 , 即0010 1000,是不是4、6排亮??) |
i>>7是在編譯器里面是先拷貝了一個(gè)I ,然后把這個(gè)拷貝的I右移的7位,最后把這個(gè)變動(dòng)的值給了ser,而原來(lái)的i并沒(méi)有變化,那么在I<<1位后則變成0010 1000,那么則是第4位和第6位亮嘍 |
Powered by 單片機(jī)教程網(wǎng)