我写一个简单小程序,希望隔一秒蜂鸣器短暂的“嘀”一声, 结果遇到奇怪问题,这么几行,编译就显示: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
复制代码
如果把定时器中 y %= 40去掉,编译的code=197, 就这么一句,code居然差别一百多? 如果把开始的unsigned int y = 0; 改成 unsigned int y; 代码也可以少一百多。
请问大家,这是什么问题呢。我用的keil2, keil4都试过了,结果一样。
还有问一下,程序运行的结果不会是简短的“嘀”一声,而是很长的“嘀”一声,不知道为什么呢?
[此贴子已经被作者于2012-6-21 14:15:06编辑过]
|