我想测量低电平的宽带,所用的思路是:低电平时,开中断器0,计时。。。高电平时,关定时器0,开定时器1,停止计时,发送数据,显示
还带循环的 我用示波器看过了,电路没问题。
大侠们帮我看看,下面的程序哪里还有问题,对了,数据是不是要转换的,要把十六进制换成十进制才能显示吗?
#include"REG_MPC89L516.H"
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示0~9
sbit P3_2=P3^2;
uint N;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--); //延时
}
void display(N)
{
P2=0X00;
while(1)
{
P2=0X01;
P0=table1[N%10];
delay(50);
P2=0X02;
P0=table1[N%100/10];
delay(50);
P2=0X04;
P0=table1[N%1000/100];
delay(50);
P2=0X08;
P0=table1[N/1000];
delay(50);
}
} //数码管显示
void main(void)
{
TMOD=0x11; // 设置定时器0和1的模式
EA=1; //开总中断
ET0=1; //开定时器0
ET1=1; //开定时器1
TH0=0; //计数器T0高8位赋初值
TL0=0; //计数器T0低8位赋初值
while(1) //无限循环,不停地将结果送N
{
if(P3_2==0) //INT0为低电平时,启动T0
TR0=1;
if(P3_2==1) //INT0为高电平,T0关,启动T1
TR0=0;
TR1=1;
}
}
void timer0() interrupt 1
{
TH0=0;
TL0=0;
}
void timer1() interrupt 3
{
N=TH0*256+TL0;
display(N);
}