利用T1的中断控制P1.7引脚输出频率为1kHz方波音频信号,驱动蜂鸣器发声。系统时钟为12MHz。方波音频信号周期1ms,因此T1的定时中断时间为0.5 ms,进入中断服务程序后,对P1.7求反。电路见图。 (联合Keil C和 Protues,或者只用Protues完成仿真测试,并测试功能是否能实现) 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- uchar i=500;
- uchar j=0;
- sbit p17=P1^7;
- timer0(void) interrupt 3
- {
- TR1=0;
- p17=~p17;
- TH1=(65536-500)/256;
- TL1=(65536-500)%256;
- j++;
- TR1=1;
-
- }
- void main()
- {
- TMOD=0x10;
- TH1=(65536-500)/256;
- TL1=(65536-500)%256;
- EA=1;
- ET1=1;
- TR1=1;
- while(1)
- {
- i=460;
- while(j<2000);
- j=0;
- i=360;
- while(j<2000);
- j=0;
-
- }
- }
复制代码
所有资料51hei提供下载:
efdsf.zip
(15.6 KB, 下载次数: 30)
|