熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-10-4 20:34
正文摘要:#include <reg51.h> void delay(unsigned char i) { unsigned char j,k; for(k=0;k<i;k++) &n ... |
一個(gè)問題,你發(fā)了3/4個(gè)帖子,基本的編程邏輯都沒有。 |
unsigned char P1_0=P1^0,P1_1=P1^1,P1_2=P1^2,P1_3=P1^3,P1_4=P1^4,P1_5=P1^5,P1_6=P1^6,P1_7=P1^7; 位聲明用sbit,另外,編程注意格式,否則亂麻一堆 |
你的led_1到led_8定義和賦值都是“unsigned char”類型, 但在使用時(shí),卻賦值給了“bit”類型: unsigned char led1 是8bit,而P1_0=P1^0是的1bit,卻要讓P1_0=led1;你是要鬧哪樣? 如樓上所說,應(yīng)該要整個(gè)P1口輸出:P1=led1; |
我猜你的顯示是LED4亮然后延遲LED8亮,因?yàn)槟阗x值是整體賦值,后面的會(huì)覆蓋前面的,如果非要你這樣的話那么應(yīng)該把幾個(gè)值按位或上 |
最好是給整個(gè)P0賦值來控制簡(jiǎn)單些 |
你是要干嘛?是要點(diǎn)亮led1234四個(gè)燈延遲一段時(shí)間再點(diǎn)亮led5678再延遲循環(huán)嗎?你這是應(yīng)該是賦值不對(duì),最好是給整個(gè)P0嗎? |
嚴(yán)格來講,你這代碼應(yīng)該出了 delay 就沒對(duì)的地方…… 先根據(jù)你的代碼和電路圖,猜測(cè)你要做流水燈,代碼如下: #include <reg51.h> #include <INTRINS.H> void delay(unsigned char i) { unsigned char j,k; for(k=0;k<i;k++) for(j=0;j<255;j++); } void main() { P1 = 0xFE; //陰控亮一燈 // P1 = 0x01; //陽(yáng)控亮一燈 while(1) { _cror_(P1,1); //右移一位 // _crol_(P1,1); //左移一位 delay(200); //這個(gè)照抄的你的delay , 實(shí)際需要多少,自己調(diào)整 } } 如上, 如果你是要做流水燈,這就是全部代碼了。 |
Powered by 單片機(jī)教程網(wǎng)