![]() |
發布時間: 2021-4-27 11:25
正文摘要:#include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit led =P1; int i,a; char b[]={0xfe,0xfd,0xfb,0xfc,0xf7,0xef,0xdf,0xbf,0x7f}; void bule_Init() { &nbs ... |
|
串口接收程序RI的處理部分最好在串口中斷服務程序里解決,TI在其它地方發送還可以,接收那樣不好,說不定就是處理不到 |
qwettyuio 發表于 2021-4-28 16:45 這樣你理解一下,你串口發送2,是單次的,單片機只接收到一次a=2,所以只會執行一次你的流水燈for循環。你看能不能想到解決辦法,如果不能再回復一下,可以告訴你怎么做。 |
haokey 發表于 2021-4-28 10:35 修改了,流水燈直接停在led8亮,不動了 |
sync763 發表于 2021-4-28 09:16 改了,但是流水燈不循環了,直接停在led8不動了 |
sync763 發表于 2021-4-28 09:16 同意,本來已經有個while(1)了,這個else if(a == 2)里面的while(1)就多余了 |
else if(a==2) { while(1) { for(i=0;i<8;i++) P1=b; } } 將紅色的部分刪除試試。 |
sync763 發表于 2021-4-27 16:26 可以是可以,但是串口輸入0或者1是無效的。輸入0串口發送應該是全亮,現在是死循環,沒法中斷 |
延時函數發來,可以看看 |
while(1) { for(i=0;i<8;i++) { P1=b[i]; delay(); } } 你自己完善一下delay()函數應該可以。 |
sync763 發表于 2021-4-27 16:11 大佬能幫忙修改一下嗎 |
sync763 發表于 2021-4-27 16:11 加入延時報錯 |
while(1) { for(i=0;i<8;i++) P1=b[i]; } 速度太快,看不出來效果,加一定的延時就能看出來了。 |
不要用HEX模式,選用文本模式發送試試 |