我想弄一个定时器让蜂鸣器大约一秒响一次,但是程序出问题了
单片机吧
全部回复
仅看楼主
level 8
热爱beyond 楼主
#include<reg52.h>
#define uint int
sbit feng=P2^3;
uint i;
void main()
{feng=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
if(i==20)
feng=0;
}
void dingshi() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
}程序无语法错误,检查了很多遍,就是不能得到自己想要的结果,哪位大哥能帮一哈忙吗,到底是哪儿不对啊,晶振频率是12MHZ
2014年04月15日 12点04分 1
level 7
把初始化程序放到主程序的外面。
2014年04月15日 13点04分 2
level 7
我是菜鸟,但是还是看出你这程序和你想达到的效果差好多
2014年04月15日 14点04分 3
为什么呢??
2014年04月15日 14点04分
回复 热爱beyond :主程序里面应该在TR0=1后面加个while(1),下面的if放到中断里,而且那句应该写成feng=~feng。。你可以这样试试
2014年04月15日 14点04分
level 7
你这个程序得到的结果应该是一直响!
2014年04月15日 15点04分 4
是不是没清0啊,哈哈,我太傻了
2014年04月16日 03点04分
回复 热爱beyond :嗯,的确挺傻的。
2014年04月16日 03点04分
回复 bin0209的老巢 :。。。。。初次接住的嘛
2014年04月16日 03点04分
level 7
主程序错了,好几个地方呢
2014年04月15日 15点04分 5
level 6
whlie(1){. Feng =1; if(i==20){i=0;feng=0;}.i 必须清零 单片机都是死循环
——来自 爱贴吧 Windows Phone 客户端
2014年04月16日 00点04分 7
对,我突然想起了
2014年04月16日 03点04分
嗯嗯,对了吧,可以运行了么? ----From iTieba for Windows Phone
2014年04月16日 07点04分
回复 Rosefuneral :不对哦,如果把while加到这儿的话程序一直运行到这儿就不能跳出去了啊,就不能实现定时了啊
2014年04月17日 03点04分
不对,我看错了。。。。你对了的
2014年04月17日 03点04分
level 8
其实,你把定时器的初始化弄个函数在函数外面,在主函数里面调用,然后你在那个if语句改成while语句,注意定时器和i的清0应该就可以了
2014年04月16日 02点04分 9
对对对,谢啦
2014年04月16日 03点04分
level 1
。。。。
2014年06月08日 03点06分 11
1