程序细节注意,来讨论下
时间:10-02
整理:3721RD
点击:
- #include<reg52.h>
- #define uint unsigned int
- uint aa;
- unsigned char pp;
- bit close;
- sbit didi=P2^3;
- void main()
- {
- TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
- TR0=1; //打开定时器
- TH0=0xff;//计时器每隔100微秒(0.1ms)发起一次中断。
- TL0=0x9c;//产生频率为1000HZ的声音信号。
- ET0=1; //开定时器0中断
- EA=1; //开总中断
- while(1)
- {
- if(pp==10)
- {
- pp=0;
- if(!close)
- didi=~didi; //频率为1KH的音频信号
- aa++;
- }
- if(aa==200)
- {
- didi=1;
- close=1; //方波音频信号持续时间为200*10*100us=0.2s
- }
- if(aa==300) //滴滴声的周期为300*10*100us=0.3s
- {
- close=0;
- aa=0;
- }
- }
- }
- void time0() interrupt 1
- { TH0=0xff;
- TL0=0x9c;
- pp++;
- }
这个close的定义为什么用bit?我用uint 定义后运行无错误啊
虽能运行,但有本质的区别
这个运行是没有错误的,用unsigned int 型不会出现错误,bit代表位,unsigned int 存储为2个字节,1Byte=8bit
bit就用一位就行了,uint要16位才行啊,多浪费资源呀
要是变量多了都用uint就有可能不够了
谢谢,懂了