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

機械社區

標題: 一個“單片機”的簡單問題 [打印本頁]

作者: 盜墓筆記-推理    時間: 2013-8-16 02:13
標題: 一個“單片機”的簡單問題
程序如下:
+ C& Q1 x2 Q) D0 r  S, I0 n6 E #include <reg51.h>
! m6 p! ?$ K9 ]; D( F# u  sbit led=P0^0;' K9 D% B) [2 m0 ~% y" F# @
  sbit led1=P0^1;
0 v6 b- c9 ?4 s. w  sbit led2=P0^2;4 \0 ~2 E$ E$ o* w8 d% I2 O
  sbit led3=P0^3;
. N! ~8 e" ]: V" ^3 p  s0 W9 A  sbit led4=P0^4;4 t* I9 S0 p9 @8 V) P
  sbit led5=P0^5;
- [$ N( G) d3 K7 Z  sbit led6=P0^6;
' g7 c6 Z& ^. {# E" p* L  sbit led7=P0^7;* R, _' U* [+ B$ }! j6 T$ F  c5 Q
  sbit ADDR0=P1^0;
& t; e3 `9 k1 y+ F' q. H  sbit ADDR1=P1^1;
4 `+ Y! [* W& z, l/ U# p7 O; u' Z2 D  sbit ADDR2=P1^2;6 @+ I+ G7 b9 f
  sbit ADDR3=P1^3;- ^6 I" d3 D" X) k1 h
  sbit ENLED=P1^4;& {0 Y0 W2 S1 T
  main()
* U, I0 X. O$ [* m; B  { ADDR0=0;ADDR1=0;ADDR2=0;ADDR3=1;ENLED=0;
8 p6 ^) q/ S/ P7 @    while(1)) ^7 r3 p! [# A0 x% ~) \
    {  led=0;led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;; L5 l0 d0 l/ m7 Z
}; t; r1 i6 l: O  S
  }
$ S% Y" O" Z! V4 p我想問while(1)是一個函數嗎,他后面有{  }符號5 q0 |0 H5 D& R8 Z* w2 c# c

作者: 盜墓筆記-推理    時間: 2013-8-16 02:20
半年前就有打算自學單片機,今晚突然有所參透,興致大起,寫了上面一段程序while(1),調試沒問題,可是就是沒法達到預期的效果,于是把“while(1);”后的“;”去了就可以了。      keil軟件還是不夠智能啊
作者: 天天他爸    時間: 2013-8-16 08:14
唉!20年前學的單板機一直沒怎么用現在都忘了
作者: 奇_點    時間: 2013-8-16 08:17
本帖最后由 奇_點 于 2013-8-16 08:31 編輯 0 Q, ?/ N$ k/ w8 M
) C. R, J# T3 ?3 W5 N- \" s
while循環語句循環體假如是代碼塊則不帶;這是基本語法...先看會書再寫
作者: 中等公差belee    時間: 2013-8-16 08:40
這是死循環嗎
作者: 中等公差belee    時間: 2013-8-16 08:43
如果不去‘;’是空循環,一直在while那里。如果去掉‘;’就一直循環花括號內的代碼,所以keill沒報錯。是嗎?
作者: kerrwang    時間: 2013-8-16 08:52
while(1) 雖說是個死循環,但是單片機的程序循環控制的意義所在,如若不然,程序只去年一次便結束了。3 U+ |/ [6 M, r' N7 Y  i7 Z" F" i
$ j+ A4 \9 \  J2 A* H
頂樓上,若去掉的話,只顯示警告,不會報錯。仍可編譯。
作者: bbtfcjy    時間: 2013-8-16 10:03
循環體
作者: liuzhongkai123    時間: 2013-8-16 11:23
while(1)  xxxxx;    while(1)  {}   都是while的用法,前面是一句程序才可以那么寫,如果 while循環體要實現很多內容就需要后一種用法了,你在while后面直接加;,那表示程序就運行到while+空  就完事了 并沒有向后循環。
作者: liuzhongkai123    時間: 2013-8-16 11:24
keil是會提示你“;”后面的語句不能執行到,但是不是錯誤,仍然可以運行,并不是keil的問題
作者: michelfei    時間: 2013-8-16 15:30
while(1)是一個死循環語句,程序走到這步后就會不停的執行后面{}內的語句,除非你后面在寫個中斷入口,或者等待外部中斷。
作者: 逍遙處士    時間: 2013-8-18 15:22
給樓主一道題:; q5 [+ }* s5 f

8 G" f, n8 j5 D4 n9 j, C% ^1 [int func_a(int a)
9 v$ b1 c& I( n; n) D+ B{8 B# G% h/ S7 i& S
        a++;& x& @  \2 O  Y/ Q
        return a;
% _  |8 Q& w: c  _% d: q4 r5 L3 v}2 A4 Q1 Y& z2 D( ^+ S5 T
+ e( x, I% T3 z* y. c5 i
int func_b(int& a)
. [& y" p2 c4 D{) h/ |$ J+ W) C8 N) S: m3 z. J/ {
        a++;/ N) `# T6 J# p( x; N
        return a;
: X* q+ {1 d' \' ~}
4 w6 ^7 g' h) ]: P8 ?( l+ C8 o
/ q2 D* `. r! j. g" a7 Xint main()3 [4 g- g1 a8 p/ [6 p1 p6 }
{
6 w* ], n: r  l2 s1 _: m        a = 1;
4 Y4 w. a1 ~7 ~# C# A        int b, c, d;* b4 T+ U' i- X* Y; K- X! V. m3 N
        b = func_a(a);5 \& r7 h6 n/ U, t! }% W6 s& J# Q( E
        c = func_b(a);/ B! c, W; o  R' }' q( c" x
        d = a;
4 B6 E% R) O6 k$ `3 y9 K}7 t9 g/ m  l, B: G
' h% {& f) O0 O# _; X! b8 G
請問:
; J& _7 W/ K3 b5 Yb=?4 ^% @3 k  i7 i( M" n9 g9 c
c=?" f. b) L; u7 @4 V: t, U
d=?
作者: 昨日明月    時間: 2013-8-18 15:52
逍遙處士 發表于 2013-8-18 15:22
* I; L6 F0 I( F2 G. m/ U8 R給樓主一道題:9 R* t2 D0 I; a. J. g

" G! X' R. l- n2 `7 Wint func_a(int a)

8 V- ]; n0 }* N1,2,2  ?
作者: kerrwang    時間: 2013-8-19 13:07
逍遙處士 發表于 2013-8-18 15:22 / ^* d1 D' @9 N2 a7 W
給樓主一道題:
- j0 i* F- R; Q" ^; i8 `5 d
' L' X3 V. e# a/ W% cint func_a(int a)
. Y! o, g9 Z( Z) s( V4 a" F
b=2,c=0,d=25 \, ~* w, Y# r9 {

作者: bbtfcjy    時間: 2013-8-19 23:39
六樓說的對
作者: fmdd    時間: 2013-8-20 00:14
while(1);  是空的死循環
1 Q! X! z" q+ A2 G0 ]( q: U1 h7 V& Q4 Uwhile(1) {} 是執行{}內的指令的死循環




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5