两个调用函数如下 没有主程序 大家帮忙看下程序有问题吗 另外帮忙写个主程序 不胜感激
(1)定时器T0中断函数: void timer0(void) interrupt 1 using 1 {uint x, y; uint count_ pluse; ET0=0; //关闭T/C0中断 Tcount++; //中断次数 ,可减少输入电压中的干扰脉冲,提高转换精度。 if?Tcount == 10){ TR1=0; //停止计数器计数 Tcount=0; x=TH1; y=TL1; count_pulse=(x*256+y)*2; ph=(uint)(10 * ((float)(count pulse+1520)/105.9? ?? //计算气压值 TH1 = 0x00; //重设计数初值 TL1=0x00; } TH0 = -50000/256; //重设50ms初值 TL0 = -50000%256; if(TL0!= 0) TH0--; ET0=1; TR1=1; return; } 该中断函数主要用于完成脉冲的读取和气压值的计算。ph是个全局变量,可用来保存气压值。 (2)在显示函数里,将气压值先按位进行分离并保存到数组,然后送段码和相应位选就可以显示出相应的气压值了。具体程序如下: void display(uint ph_in) { uchar i=0; uchar j=0; uchar select_bit=0; //位选 do { cur_buf[i]=ph_in%10; i++; j=i; }while(ph_in=ph_in/10);? //当高位为零时?结束循环 i=0; select_bit=0xfe; do { P1=tab[*p]; P3=select_bit; dl_ms();? select_bit=(select bit<<1)+1; //从最右边一位开始显示,循环左移 p++; i++; }while(i<j); p=cur_buf; //指针归位 return;} 这样,在主程序中,只要在程序第一次运行时进行初始化,然后再循环调用显示函数即可实现实时显示功能。 |