作者BlueFeel (蓝色感觉)
看板ASM
标题Re: [问题] 量测脉波宽度
时间Mon Apr 13 22:55:03 2009
小弟生平的第一个Timer,XD 第一次用计时器
请大大帮忙看一下,没有有写错呢? (希望没错)
============================================
说明 : 初始 A=0,B=0.
当 0.1us进中断判 Test =1的话, count++
在TEST = 1时也判断 是否count > 6 ,
若不是 表示pulse 小於 1ms , 所以给 A = 1 , B = 0
若是 , 可能TEST一直会1或 >1ms了 , 所以给 A= 0 , B =1
当TEST =0 就会 将count = 0, 等下一次TEST =1
所以TEST 不需要接BJT了??因为我是判断High准位....
另外, 我取样要很小, 没有要计数很久, 应该用8bit就可以吧?
不知道有没有暇痴......
============================================
sfr IE = 0xA8;
sfr P3 = 0xB0;
sfr TL0 = 0x8A;
sfr TH0 = 0x8C;
sfr TMOD = 0x89;
sfr TCON = 0x88;
sbit TR0 = TCON^4;
sbit EA = IE^7;
sbit ET0 = IE^1;
sbit B = P3^1;
sbit A = P3^0;
sbit TEST = P3^2;
static unsigned long count = 0;
void Main(void)
{
TMOD = (TMOD & 0xF0) | 0x03; /* Set T/C0 Mode */
ET0 = 1; /* Enable Timer 0 Interrupts */
TR0 = 1; /* Start Timer 0 Running */
EA = 1; /* Global Interrupt Enable */
TL0 = 256 - 240;
A = 0; B = 0;
while(1)
{
}
}
void Timer0ISR_int(void) interrupt 1 using 1
{
if (TEST == 1)
{
count++;
if (count < 6)
{
A = 1; B = 0;
}
else
{
A = 0; B = 1;
}
}
else
{
A = 0; B = 0;
count = 0;
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.195.194.110
※ 编辑: BlueFeel 来自: 123.195.194.110 (04/13 22:55)
1F:推 hayden0828:当test频率接近10kHz时可能会误判 04/14 03:12
2F:→ BlueFeel:只能限定输入不要10KHz了!! 04/14 07:58