我寫一個簡單小程序,希望隔一秒蜂鳴器短暫的“嘀”一聲, 結(jié)果遇到奇怪問題,這么幾行,編譯就顯示:Program Size: data=11.1 xdata=0 code=329 code居然有329? 代碼如下:
- <br/>1 #include"reg52.h"<br/>2 #define uint unsigned int<br/>3 #define uchar unsigned char<br/>4 #define TIMER 25000<br/>5 <br/>6 <br/>7 sbit suin=P2^2;<br/>8 bit flag;<br/>9 unsigned int y=0;<br/>10 <br/>11 void init() //初始化,開定時器0<br/>12 {<br/>13 TMOD=0x01;<br/>14 TCON=0x10; <br/>15 TH0=(65536 - TIMER) / 256; <br/>16 TL0=(65536 - TIMER) % 256; <br/>17 IE=0x82;<br/>18 } <br/>19 <br/>20 void main()<br/>21 {<br/>22 init();<br/>23 while(1)<br/>24 {<br/>25 <br/>26 }<br/>27 }<br/>28 <br/>29 void timer0() interrupt 1 //定時器中斷<br/>30 {<br/>31 <br/>32 y++;<br/>33 y %= 40;<br/>34 if(y == 0)<br/>35 {<br/>36 suin = ~suin;<br/>37 }<br/>38 TH0=(65536 - TIMER) >> 8;<br/>39 TL0=(65536 - TIMER) % 256;<br/>40 }<br/>41
復(fù)制代碼
如果把定時器中 y %= 40去掉,編譯的code=197, 就這么一句,code居然差別一百多? 如果把開始的unsigned int y = 0; 改成 unsigned int y; 代碼也可以少一百多。
請問大家,這是什么問題呢。我用的keil2, keil4都試過了,結(jié)果一樣。
還有問一下,程序運行的結(jié)果不會是簡短的“嘀”一聲,而是很長的“嘀”一聲,不知道為什么呢?
[此貼子已經(jīng)被作者于2012-6-21 14:15:06編輯過]
|