程序如下:
#include <reg52.h>
#include "lcd.h"
uint dispcount,lck;
uint disp;
uchar flag;
void Time0_init() //方式1,初值1ms
{
TMOD=0x01;
TH0=0xFC;
TL0=0x18;
ET0=1;
TR0=1;
}
void Time1_IntConfiguration()
{
PT0=0;
PX1=1; //优先级设置
IT1=1; //边沿触发
EX1=1;
EA=1;
}
void Time0_int() interrupt 1 //初值1ms,定时1s,每一秒中断一次,所记得数就是频率,即频率检测
{
TH0=0xFC;
TL0=0x18;
lck++;
if(lck==1000)
{
flag=1;
disp=dispcount; //disp==xxxx,则xxxxHZ
lck=0;
}
}
void Time1_zhongduan() interrupt 2 //外部中断1,P3^3
{
dispcount++; //每一次中断,计数加一
if(flag==1)
dispcount=0;
}
void main()
{
Time0_init();
Time1_IntConfiguration();
lcd_init();
while(1)
{
write_num(0,0,dispcount);
}
}
LCD的程序就不放了,显示数字的程序都没有问题的
现在的问题是,这个程序,我用频率计给P3^3口提供频率,结果是,不停的复位单片机,dispcount永远只能计数为1,而且在松开P3^3口的瞬间,dispcount瞬间计数很多值,超过1000也会出现,这个没有规律。如果用独立按键置低电位给P3^3口,可以不停的累计dispcount。
现在程序问题出在哪呢
|