|
本帖最后由 zgbkdlm 于 2012-9-12 12:01 编辑
器件为Atmega128
用定时器3捕获来算时间.
interrupt [26] void cap3 (void) //这是捕获中断
{
icr3h=ICR3H;
icr3l=ICR3L;
TCNT3H=0x00;
TCNT3L=0x00;
TCCR3B^=0b01000000; //触发方式取反
}
PORTA=0xff;
delay_us(30); //发射一个宽度>20US的脉冲
PORTA=0x00;
delay_ms(300);
timerdata=icr3l+icr3h*256; //开始计算转化距离
time=4*timerdata/1000000.000000;
distance=time*340/2.0000;
distance1=time*100;
lcd_clear(); //To display the number
lcd_puts("The distance is");
lcd_gotoxy(1,1);
temp1=distance1/1000;
lcd_putchar(data[temp1]);
temp1=distance1%1000/100;
lcd_putchar(data[temp1]);
lcd_putchar(46);
temp1=distance1/10%100/10;
lcd_putchar(data[temp1]);
temp1=distance1%10;
lcd_putchar(data[temp1]);
lcd_putchar(0x4d);
实际显示始终显示00.01,液晶显示部分没有问题,设置了一个数5236,显示为52.36没有问题.而且输入捕捉也工作,转化部分哪出了问题呢? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|