📄 time.c
字号:
//************************Copyright**********************************
#include "..\..\src\config.h"
#include "MAIN.H"
//*******************************************************************
INT8U BEEP_BIT;
INT8U BeepCount;
INT8U BeepNum;
void __irq IRQ_Time0(void)
{
static unsigned char led_old_state;
if (led_old_state==0)
{
A_LED1_ON;
A_LED2_OFF;
led_old_state=1;
}
else
{
A_LED1_OFF;
A_LED2_ON;
led_old_state=0;
}
T0IR = 0xff; // Clear timer 0 interrupt line.
//-------beeper--------------------
if(BEEP_BIT)
{
if((BeepCount==0)&&BeepNum) IO0SET = BEEPCON;
BeepCount++;
if(BeepCount==3)
{
IO0CLR = BEEPCON;
if(BeepNum) BeepNum--;
else BEEP_BIT=0;
BeepCount=0;
}
}
//-----------------------------------
VICVectAddr = 0x00; // 通知VIC中断处理结束
}
void Time0Init(void)
{ /* 初始化定时器0,实现0.1秒定时。
Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
*/
T0PR = 99; // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03<<3; // 匹配通道1匹配中断并复位T0TC
//T0MCR = 0x19;
T0MR1 = 110592/10; // 设置MR1比较值(0.1S定时值)
//T0MR0 = 110592/2; // 设置MR0比较值(0.5S定时值)
T0EMR = 0x00; // 设置定时器0的T0MR1匹配输出,输出方式为不执行任何操作
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
VICVectCntl8 = 0x24; // 定时器0中断通道分配最高优先级(向量控制器1)
VICVectAddr1 = (INT32U)IRQ_Time0; // 设置中断服务程序地址向量
VICIntEnable =(1<<4); //使能定时器0\1\\uart0
VICDefVectAddr = (INT32U)CANIntPrg;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -