高级会员
主题
回帖0
积分1988
阅读权限30
注册时间2012-2-14
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2012-11-11 12:13
|
显示全部楼层
/*
同时用两个定时器控制蜂鸣器发声,定时器0控制频率,
定时器1控制同个频率持续的时间,
间隔300ms依次输出1,10,50,100,200,400,800,1k(hz)的方波
*/
#include <REG52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define _Bf_() _Beef_ = ~_Beef_;
uchar code TAB[] = {8000,800,640,80,40,2,1,8};
//sbit D0 = P0^0;
//sbit _573_LT = P1^0;
//sbit _LED_EN = P1^1;
sbit _Beef_ = P1^5;
//sbit _LED_D0 = P0^0;
//sbit _138_A = P2^2;
//sbit _138_B = P2^3;
//sbit _138_C = P2^4;
uchar tt,aa,tim;
/*
void delayus(uint tm) //1US
{
uint i,k;
for(i = 0;i < tm;i ++)
for(k = 0; k < 13;k ++)
{
_nop_();
}
}
void delayms(uint k) //1MS
{
uint a;
for(a = 0;a < k;a ++)
{
delayus(12500);
}
}
*/
void uirt()
{
tim = 0;
tt = 0;
aa = 0;
P0 = 0;
//_573_LT = 1;
//_LED_EN = 0;
}
void uirt_TC()
{
TMOD = 0x11;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TH1 = (65536-125)/256;
TL1 = (65536-125)%256;
EA = 1;
ET0 = 1;
ET1 = 1;
TR0 = 1;
TR1 = 0;
}
void main()
{
uirt();
uirt_TC();
while(1)
{
}
}
void time0() interrupt 1 using 0
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
tt++;
if(tt == 3)
{
tt = 0;
tim ++;
if(tim == 8)
tim = 0;
TR1 = 1;
}
}
void time1() interrupt 3 using 1
{
TH1 = (65536-125)/256;
TL1 = (65536-125)%256;
aa ++;
if(aa == TAB[tim])
{
aa = 0;
_Bf_();
}
}
这是我昨晚写的,调试一晚上声音都不对,课题实现的就是一首歌“祝你平安” |
|