📄 common.c
字号:
#include "common.h"
void delay(BYTE a)
{
while(a)
a--;
asm("nop");
}
void DelayM(BYTE c)
{
unsigned char a;
unsigned int b;
for (a = c; a; a--)
for (b = 64911; b; b++)
;
}
void DelayMORE(BYTE c)
{
unsigned char a;
unsigned int b;
for (a = c; a; a--)
for (b = 1; b; b++)
;
}
BYTE volatile timerCounter = 0;
BYTE volatile timerCounter1 = 0;
BYTE volatile timerCounter2 = 0;
BYTE timepoint;
BYTE timepoint1;
BYTE timepoint2;
void initTimer()
{
TCCR0 = 5; // timer0 prescale 1/1024 (7)
timepoint=255;
}
#pragma interrupt_handler SIG_OVERFLOW0:18
void SIG_OVERFLOW0(void)//timer0
{
if(timerCounter++ > timepoint){
PORTD ^= BIT(STA);
PORTD ^= BIT(STC);
PORTA ^= BIT(SPEAKER);//alarm
timerCounter = 0;
}
}
void initTimer2()
{
TCCR2= 5; //prescale 1/1024
timerCounter2 = 20;
}
#pragma interrupt_handler timer2_ovf_isr:12
void timer2_ovf_isr(void)//timer2
{
if(timerCounter2++ > timepoint2){
cbi( TIMSK, TOIE2 );
timerCounter2 = 0;
PORTA |= BIT(SPEAKER);
}
}
void timer1_init(void)
{
TCCR1B= 0x00; //stop18s
TCCR1A= 0x00;
TCCR1B= 0x05; //start Timer
timepoint1=3;
}
#pragma interrupt_handler timer1_ovf_isr:16
void timer1_ovf_isr(void)
{
//TCNT1H= 0x02; //reload counter high value
//TCNT1L= 0xE1; //reload counter low value
if(timerCounter1++ > timepoint1){
watchdog_init();//reset
}
//PORTA ^= BIT(SPEAKER);
}
void watchdog_init()
{
WDR();
WDTCR=0x18;
WDTCR=0x08;//最快复位8,最慢f
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -