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

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 6996|回復: 15

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

[復制鏈接]
1#
發表于 2013-8-16 02:13:11 | 只看該作者 |倒序瀏覽 |閱讀模式
程序如下:9 p0 A/ w* P  Y$ ?
#include <reg51.h>
! c; _  R5 h9 M" `: {6 `  sbit led=P0^0;. `9 f4 d( Q) x
  sbit led1=P0^1;
0 t! Z2 s# e' S2 X  sbit led2=P0^2;
8 u7 W# F4 x- J  sbit led3=P0^3;
1 I6 Y2 X% ]6 \6 ]" n  sbit led4=P0^4;
6 u+ g; I, Q1 O  \9 W0 A  sbit led5=P0^5; 5 V3 G, s% o, h" S& q' C8 p
  sbit led6=P0^6;
# E6 q9 R  Q6 \% z& c4 u, }+ I  sbit led7=P0^7;0 I8 W8 V' h* B. j4 I  G, T0 E. j
  sbit ADDR0=P1^0;
$ Z% M7 P5 x! A8 D  sbit ADDR1=P1^1;
' c6 R/ f6 j4 D- N  sbit ADDR2=P1^2;
2 }' z6 F, A, F9 d0 m' R  sbit ADDR3=P1^3;% y% P) U" E( y5 m! s
  sbit ENLED=P1^4;, C: o, D0 D, o$ g  d
  main()
% y9 a. W8 q) {' z$ Y& T$ _, _7 D  { ADDR0=0;ADDR1=0;ADDR2=0;ADDR3=1;ENLED=0;
$ E3 ]+ v: H0 F3 j: f$ b    while(1)7 l8 z( z4 J9 G' M. V
    {  led=0;led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;1 {" S( C8 I! _) g
}
" ^' e5 d9 X9 E$ y+ X  }
0 `$ H8 U  n6 I9 ~% c9 I! m我想問while(1)是一個函數嗎,他后面有{  }符號0 T& l! M7 J7 M# n& T! 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 編輯 - [$ j* N& |8 K7 q0 s& P/ y
# P. q3 H* K4 [
while循環語句循環體假如是代碼塊則不帶;這是基本語法...先看會書再寫
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) 雖說是個死循環,但是單片機的程序循環控制的意義所在,如若不然,程序只去年一次便結束了。9 J: ~1 d6 |) i5 g! @- @; Q4 A' Z- f
7 U9 P# j5 M4 J5 [: x, {
頂樓上,若去掉的話,只顯示警告,不會報錯。仍可編譯。

點評

你所說的故障死循環,與人為設置的死循環不一樣。 不知道你從哪兒得到的“程序就會一直在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 15:42 , Processed in 0.076021 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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