AT89C52单片机 蜂鸣器响一秒停0.5秒 速求 c语言
3个回答
展开全部
#include <reg51.h>
typedef unsigned char BYTE; // 数据范围0-255
typedef unsigned int WORD; // 数据范围0-65535
typedef bit BOOL ; // 数据范围0-1
sbit BUZZ = P0^0;
WORD count,flag;
void timer0() interrupt 1
{
TH0=(65535-46080)/256;
TL0=(65536-46080)%256; // 重新载入延时时间,如果晶振为12M, 则为被减数则为50000
count++;
if(count==10) // 11.0592 晶振精确延时0.5秒
{ flag++;
if (flag==1)
{BUZZ=0; }
else if (flag==3)
{BUZZ=1; flag=0; }
count=0;
}
}
/* 主程序 */
/********************************/
main()
{
TMOD=0x01; // 定时器工作在方式1
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; // 载入定时器初值
ET0=1; // 开定时器0 中断
EA=1; // 开总中断
TR0=1; // 定时器0工作
flag=0;
while(1);
}
typedef unsigned char BYTE; // 数据范围0-255
typedef unsigned int WORD; // 数据范围0-65535
typedef bit BOOL ; // 数据范围0-1
sbit BUZZ = P0^0;
WORD count,flag;
void timer0() interrupt 1
{
TH0=(65535-46080)/256;
TL0=(65536-46080)%256; // 重新载入延时时间,如果晶振为12M, 则为被减数则为50000
count++;
if(count==10) // 11.0592 晶振精确延时0.5秒
{ flag++;
if (flag==1)
{BUZZ=0; }
else if (flag==3)
{BUZZ=1; flag=0; }
count=0;
}
}
/* 主程序 */
/********************************/
main()
{
TMOD=0x01; // 定时器工作在方式1
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; // 载入定时器初值
ET0=1; // 开定时器0 中断
EA=1; // 开总中断
TR0=1; // 定时器0工作
flag=0;
while(1);
}
更多追问追答
追问
52单片机 不是51单片机
追答
一样用
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询