標(biāo)題: [求助]keil編譯遇到奇怪問題,請大家?guī)兔纯础?[打印本頁]

作者: cir_biochem    時(shí)間: 2012-6-21 14:13
標(biāo)題: [求助]keil編譯遇到奇怪問題,請大家?guī)兔纯础?br />我寫一個(gè)簡單小程序,希望隔一秒蜂鳴器短暫的“嘀”一聲,
結(jié)果遇到奇怪問題,這么幾行,編譯就顯示:Program Size: data=11.1 xdata=0 code=329
code居然有329?

代碼如下:
  1. <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() //初始化,開定時(shí)器0<br/>12 {<br/>13 &nbsp;&nbsp;&nbsp;&nbsp;TMOD=0x01;<br/>14 &nbsp;&nbsp;&nbsp;&nbsp;TCON=0x10; <br/>15 &nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536 - TIMER) / 256; <br/>16 &nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536 - TIMER) % 256; <br/>17 &nbsp;&nbsp;&nbsp;&nbsp;IE=0x82;<br/>18 } <br/>19 <br/>20 void main()<br/>21 {<br/>22 &nbsp;&nbsp;&nbsp;&nbsp;init();<br/>23 &nbsp;&nbsp;&nbsp;&nbsp;while(1)<br/>24 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>25 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>26 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>27 }<br/>28 <br/>29 void timer0() interrupt 1 //定時(shí)器中斷<br/>30 {<br/>31 &nbsp;&nbsp;&nbsp;&nbsp;<br/>32 &nbsp;&nbsp;&nbsp;&nbsp;y++;<br/>33 &nbsp;&nbsp;&nbsp;&nbsp;y %= 40;<br/>34 &nbsp;&nbsp;&nbsp;&nbsp;if(y == 0)<br/>35 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>36 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;suin = ~suin;<br/>37 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>38 &nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536 - TIMER) >> 8;<br/>39 &nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536 - TIMER) % 256;<br/>40 }<br/>41
復(fù)制代碼


如果把定時(shí)器中 y %= 40去掉,編譯的code=197, 就這么一句,code居然差別一百多?
如果把開始的unsigned int y = 0;   改成 unsigned int y; 代碼也可以少一百多。

請問大家,這是什么問題呢。我用的keil2, keil4都試過了,結(jié)果一樣。

還有問一下,程序運(yùn)行的結(jié)果不會(huì)是簡短的“嘀”一聲,而是很長的“嘀”一聲,不知道為什么呢?




[此貼子已經(jīng)被作者于2012-6-21 14:15:06編輯過]

作者: amchina    時(shí)間: 2012-11-6 13:43
取余運(yùn)算需要占用的內(nèi)存多,所以多了唄。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1