我已设置
Timer0
以与引脚 T0
上的外部时钟配合使用:
TCCR0A=0x02 // CTC Mode
TCCR0B=0x07 // Start timer on external T0 clock (rising edge)
OCR0A=90 // Compare after 90 clock ticks
TIMSK0=0x03 // Interrupt enable on OCR0A compare match or timer overflow (irrelevant this latter)
我正在使用 Microchip Studio Simulator 和刺激文件来模拟 T0 引脚上的时钟。 由于 T0 不是芯片的内部寄存器,因此我考虑设置
PORTD
寄存器,因为引脚 T0(物理上)与 PD4 是同一个焊盘。我没有其他引脚连接到 portd,所以为了简单起见:
$repeat 1000
PORTD=0xFF // Set PORTD high
#800000 // wait 50ms
PORTD=0x00 // Set PORTD low
#800000 // wait 50ms
$endrep
刺激文件已正确加载,并且不会引发任何错误。但计时器没有启动(TCNT0 始终保持 0x00),我很确定问题是 T0 没有变化。 有什么线索可以解决这个问题吗?
想法是对的,只是端口错了。将使用
PIND
代替 PORTD
,这是有道理的:它是输入端口寄存器,从中获取 T0 值。
$repeat 1000
PIND=0xFF // Set PORTD high
#800000 // wait 50ms
PIND=0x00 // Set PORTD low
#800000 // wait 50ms
$endrep