51单片机程序做一个速度加里程的表,里程用1602速度用7段数码管显示,程序大至有形了,其中还有错误请帮忙发上外部中断和定时器部分程序,显示部分就不发了.
void extern_int0() interrupt 0
{
cnt1++; //外部0中断接收脉冲数
}
void time0(void) interrupt 1
{
TH0=0xf2; //8M晶振 5ms
TL0=0xfa;
cnt++;
if(cnt==20) //100毫秒中断
{
cnt=0;
// TR0=0;
// EX1=0;
zhs=cnt2*600/144; //每分钟转速
ZHS2=zhs*60/1000; //ZHS2显示每小时公里数
// EX1=1;
cnt2=0;
// TR0=1;
}
void extern_int1() interrupt 2
{
cnt2++; //外部中断1接收的脉冲数
}
void main()
{
init();
while(1)
{
if(cnt1==50) //50个脉冲为1米
{
cnt1=0;
jishu2++; //这里液晶显示的数据,这里显示的单位是米
write_sfm2(11,jishu2);
}
display();
}
}
用proteus仿真,外部中断0和1同时输入500HZ脉冲,程序显示是对的.里程从0米开始加起
当脉冲高于500以上,速度显示也是对的,就是里程不对没显示了或显示几十就卡住了.
51C语言自学的,有什么写的不对或逻辑上的错误请指正.
最好是用一个外部中断累加计数,并计算出速度和里程,里程是从0开始加起来
请朋友帮个忙这程序怎么改或者这样的程序要怎么样写,最好帮我写一段计算部分的.谢谢了
|