打印
[51单片机]

帮忙看看一下几个问题

[复制链接]
608|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wr12306|  楼主 | 2016-4-9 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发表帖子发布问题

  选中  篇: 置顶|


[单片机问答] 解惑 [复制链接]
wr12306 当前在线 经验73  窥视卡

wr12306
技术员
13
主题46
帖子73
经验
发表于 昨天 12:16   78 查看 9 回复 只看该作者 倒序浏览
分享/*******************************/
/*同时用两个定时器控制蜂鸣器发声,
T0控制频率,T1控制同个频率持续的
时间,间隔两秒依次输出1,10,50,100,
200,400,800?1000的方波,设晶振频率为12MHZ*/
/****************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
uchar tt;
uint fre,flag;
void main()
{
fre=50000;
beep=0;
TMOD=0x11;
TH0=(65536-fre)/256;
TL0=(65536-fre)/256;
TH1=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
ET1=1;
TR1=1;
while(1);
}

void T0_timer() interrupt 1
{
TR0=0;
TH0=(65536-fre)/256;
TL0=(65536-fre)/256;
tt++;
if(flag<40)  这里的40怎么算出来的
{
if(tt==10)
{
tt=0;
fre=50000;以及这里为什么是50000
beep=~beep;
}
}

if(flag>=40&&flag<80)这里的40 ,80怎么算出来的
{
tt=0;
fre=50000;
beep=~beep;
}

if(flag>=80&&flag<120)
{
tt=0;
fre=10000;这里的10000怎么算出来
beep=~beep;
}

if(flag>=120&&flag<160)这里的120  160怎么算出来
{
tt=0;
fre=5000;这里的5000怎么算出来
beep=~beep;
}

if(flag>=160&&flag<200)
{
tt=0;
fre=2500;这里的2500怎么算出来的
beep=~beep;
}

if(flag>=200&&flag<240)这里的200   240怎么算出来
{
tt=0;
fre=1250;这里的1250怎么算出来的
beep=~beep;
}

if(flag>=240&&flag<280)这里的240  280 怎么算出来的
{
tt=0;
fre=625;这里的625怎么算出来的
beep=~beep;
}

if(flag>=280&&flag<320)这里的280  320怎么算出来
{
tt=0;
fre=312;这里的312怎么算出来的
beep=~beep;
}

if(flag>=320&&flag<360)这里的320  360  怎么算出来的
{
tt=0;
fre=156;这里的156怎么算出来的
beep=~beep;
}
TR0=1;
}

void T1_timer() interrupt 3
{
TH1=(65536-50000)/256;
TL0=(65536-50000)%256;
flag++;
if(flag==360)
{
flag=0;
fre=50000;
}
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

28

帖子

0

粉丝