/****************************************Copyright (c)************************************************** ** Guangzou ZLG-MCU Development Co.,LTD. ** graduate school ** http://www.zlgmcu.com ** **--------------File Info------------------------------------------------------------------------------- ** File name: main.c ** Last modified Date: 2004-09-16 ** Last Version: 1.0 ** Descriptions: The main() function example template ** **------------------------------------------------------------------------------------------------------ ** Created by: Chenmingji ** Created date: 2004-09-16 ** Version: 1.0 ** Descriptions: The original version ** **------------------------------------------------------------------------------------------------------ ** Modified by: ** Modified date: ** Version: ** Descriptions: ** ********************************************************************************************************/ #include "..\inc\config.h" //#define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */ /* ********************************************************************************************************* ** 函数名称 :IRQ_Timer0() ** 函数功能 :定时器0中断服务程序,取反LED9控制口。 ** 入口参数 :无 ** 出口参数 :无 ********************************************************************************************************* */ void IRQ_Timer0 (void) { if ((IO0SET & BEEP) == 0) IO0SET = BEEP; /* 关闭BEEP */ else IO0CLR = BEEP; T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束 */ } /* ********************************************************************************************************* ** 函数名称 :main() ** 函数功能 :使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。 ** 调试说明 :需要将跳线JP11连接BEEP。 ********************************************************************************************************* */ int main (void) { PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */ IO0DIR = BEEP; /* 设置BEEP控制口输出 */ IRQEnable(); /* IRQ中断使能 */ /* 定时器0初始化 */ T0TC = 0; /* 定时器设置为0 */ T0PR = 0; /* 时钟不分频 */ T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */ T0MR0 = Fpclk / 2; /* 0.5秒钟定时 */ T0TCR = 0x01; /* 启动定时器 */ /* 设置定时器0中断IRQ */ VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */ VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级 */ VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */ VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */ while (1); // return 0; } /********************************************************************************************************* ** End Of File ********************************************************************************************************/