程序细节注意,来讨论下

2019-07-15 18:28发布

  1. #include<reg52.h>

  2. #define uint unsigned int
  3. uint aa;
  4. unsigned char pp;
  5. bit close;

  6. sbit didi=P2^3;


  7. void main()
  8. {
  9.         TMOD=0x01;                 //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
  10.         TR0=1;                         //打开定时器
  11.         TH0=0xff;//计时器每隔100微秒(0.1ms)发起一次中断。
  12.         TL0=0x9c;//产生频率为1000HZ的声音信号。
  13.         ET0=1;                         //开定时器0中断
  14.         EA=1;                         //开总中断
  15.         while(1)
  16.         {
  17.                 if(pp==10)
  18.                 {
  19.                         pp=0;
  20.                         if(!close)
  21.                                 didi=~didi;         //频率为1KH的音频信号
  22.                         aa++;
  23.                 }        
  24.                 if(aa==200)
  25.                 {
  26.                         didi=1;
  27.                         close=1;                 //方波音频信号持续时间为200*10*100us=0.2s
  28.                 }
  29.                 if(aa==300)                         //滴滴声的周期为300*10*100us=0.3s
  30.                 {
  31.                         close=0;
  32.                         aa=0;
  33.                 }
  34.         }
  35. }

  36. void time0() interrupt 1
  37. {        TH0=0xff;
  38.         TL0=0x9c;
  39.         pp++;
  40. }
复制代码

这个close的定义为什么用bit?我用uint 定义后运行无错误啊

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
发烧友之麒麟
1楼-- · 2019-07-15 22:42
虽能运行,但有本质的区别
jj152125
2楼-- · 2019-07-15 23:34
这个运行是没有错误的,用unsigned int 型不会出现错误,bit代表位,unsigned int 存储为2个字节,1Byte=8bit
阿信509
3楼-- · 2019-07-16 01:20
bit就用一位就行了,uint要16位才行啊,多浪费资源呀
阿信509
4楼-- · 2019-07-16 06:21
 精彩回答 2  元偷偷看……
biangbiang面
5楼-- · 2019-07-16 07:02
谢谢,懂了

一周热门 更多>