久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 7002|回復: 15

一個“單片機”的簡單問題

[復制鏈接]
1#
發表于 2013-8-16 02:13:11 | 只看該作者 |倒序瀏覽 |閱讀模式
程序如下:# Z! e: O, Y% p  g; h7 j% g
#include <reg51.h>
* w1 v! N8 p7 L& P) O4 q  sbit led=P0^0;9 h8 l" y! {1 h$ j
  sbit led1=P0^1;
4 u; y$ |3 g! h" }3 y4 q$ F: u, J  sbit led2=P0^2;
* R" y1 f5 U" u9 `2 K  sbit led3=P0^3;
) X4 T+ ]) p0 \4 q6 f- ~1 Y$ H4 H* s  sbit led4=P0^4;8 t  H2 O% c! P$ w
  sbit led5=P0^5;
" ?! U) z$ n: }3 L  sbit led6=P0^6;) w8 l% k% B$ ^$ L2 d
  sbit led7=P0^7;. l# n  u: Y0 L
  sbit ADDR0=P1^0;
& }7 `  k; x8 w  sbit ADDR1=P1^1;
  Y, c7 H. O; ^/ {! O  sbit ADDR2=P1^2;+ M0 M% _. g5 K; {8 s
  sbit ADDR3=P1^3;8 {" P$ k6 F4 Z5 N- ^
  sbit ENLED=P1^4;
( I5 P% s: T2 d  z1 G5 k  main()% M) N5 V2 N3 v' h# S6 X
  { ADDR0=0;ADDR1=0;ADDR2=0;ADDR3=1;ENLED=0;2 J) C1 D- g& `  N3 m% P# ]
    while(1)
  z, H- f- f, y; }    {  led=0;led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;1 K- P& y( Q/ R  D5 M1 h
}  R" o* C5 Z& Y3 ^5 h9 s+ @5 n; d
  }
3 Q. o1 K! O2 H$ a4 V9 y) n7 U! v$ `我想問while(1)是一個函數嗎,他后面有{  }符號
, _( f3 {9 L/ h* C
回復

使用道具 舉報

2#
 樓主| 發表于 2013-8-16 02:20:43 | 只看該作者
半年前就有打算自學單片機,今晚突然有所參透,興致大起,寫了上面一段程序while(1),調試沒問題,可是就是沒法達到預期的效果,于是把“while(1);”后的“;”去了就可以了。      keil軟件還是不夠智能啊
3#
發表于 2013-8-16 08:14:45 | 只看該作者
唉!20年前學的單板機一直沒怎么用現在都忘了
4#
發表于 2013-8-16 08:17:18 | 只看該作者
本帖最后由 奇_點 于 2013-8-16 08:31 編輯
, O0 J9 e3 ^- n9 z
# v3 u3 G* }& z; twhile循環語句循環體假如是代碼塊則不帶;這是基本語法...先看會書再寫
5#
發表于 2013-8-16 08:40:50 | 只看該作者
這是死循環嗎
6#
發表于 2013-8-16 08:43:26 | 只看該作者
如果不去‘;’是空循環,一直在while那里。如果去掉‘;’就一直循環花括號內的代碼,所以keill沒報錯。是嗎?

點評

應該是  發表于 2013-8-16 11:46
7#
發表于 2013-8-16 08:52:03 | 只看該作者
while(1) 雖說是個死循環,但是單片機的程序循環控制的意義所在,如若不然,程序只去年一次便結束了。; y+ S$ A' L3 p' J! N6 g

% h% o  M% o. F5 [頂樓上,若去掉的話,只顯示警告,不會報錯。仍可編譯。

點評

你所說的故障死循環,與人為設置的死循環不一樣。 不知道你從哪兒得到的“程序就會一直在0~255件循環”,從未聽說過,也不理解。  發表于 2013-8-19 12:55
unsigned char型的變量是8字節的。當你的程序里的unsigned char變量的值超過255時,程序就會一直在0~255件循環,文件就會無窮大。while(1)語句同樣是死循環,文件卻不大,有人能解釋一下嗎。  發表于 2013-8-16 11:56
8#
發表于 2013-8-16 10:03:29 | 只看該作者
循環體
9#
發表于 2013-8-16 11:23:24 | 只看該作者
while(1)  xxxxx;    while(1)  {}   都是while的用法,前面是一句程序才可以那么寫,如果 while循環體要實現很多內容就需要后一種用法了,你在while后面直接加;,那表示程序就運行到while+空  就完事了 并沒有向后循環。
10#
發表于 2013-8-16 11:24:54 | 只看該作者
keil是會提示你“;”后面的語句不能執行到,但是不是錯誤,仍然可以運行,并不是keil的問題
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-8-23 21:29 , Processed in 0.065301 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表