#define ledPin 12
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
// initialize timer1
noInterrupts();
// disable all interrupts
TCCR1A = 0; //先将整个TCCROA寄存器设置为0
TCCR1B = 0; //先将整个TCCROB 寄存器设置为0
TCNT1 = 0; //将计数器值初始化为0
OCR1A =31250;//125000;//62500;// 31250;
// compare match register 16MHz/(256*31250)= 每0.5s执行一次中断服务函数
TCCR1B |= (1 << WGM12);
// CTC mode
TCCR1B |= (1<< CS12);
// 256 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
interrupts();
// enable all interrupts
}
ISR(TIMER1_COMPA_vect)
{
// timer compare interrupt service routine
digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle LED pin
}
void loop() {
// digitalWrite(ledPin, HIGH);
//delay(1000);
//digitalWrite(ledPin, LOW);
//delay(500);
// put your main code here, to run repeatedly:
}
/*delay(20000)大约延时0.2秒。在Arduino中,delay()函数的参数是以毫秒为单位的,
因此delay(20000)表示的是延时20000毫秒,即20秒。然而,由于Arduino的delay()函数
并不保证精确的延时时间,且在实际应用中可能会因为各种原因(如程序中的其他操作、
外部干扰等)导致实际延时时间有所偏差,因此在实际应用中,更精确的延时通常通过其
他方法实现,如使用定时器或中断服务程序等。此外,虽然题目中提到了“ard”,但根据
上下文可以理解为是对“Arduino”的误写。Arduino是一种广泛使用的开源电子原型平台,
它允许用户通过编写和上传代码来实现各种电子项目的控制和交互。在Arduino编程中,
delay()函数是用来让程序暂停执行一段时间,以便让其他事件(如传感器读取、电机控制
等)有足够的时间响应或完成。
需要注意的是,虽然delay(20000)在代码中表示的是20秒的延时,但在实际应用中,
如果需要更精确的时间控制,应该考虑使用更高级的时间管理技术,如使用Arduino的内置
millis()函数或Timer1等,这些技术可以提供更精确的时间控制和事件响应1。
*/