程序1:
//2009/12/16
#include <iom16v.h> //包含型号头文件
#include <macros.h> //包含"位"操作头文件
int k;
/************************************************
*函数名称: void Timer0_init(void)
*入口参数: 无
*出口参数: 无
*函数功能: Timer0初始化
*创建时间: 2009-09-05 eleShrimp
*修改说明:
/************************************************/
void Timer0_init(void)
{
TCCR0|=0x05; //普通计时模式,普通端口操作,预分频为64
TCNT0=61; //频率为2.5KHz
SREG|=BIT(7); //开放全局中断
TIMSK|=BIT(TOIE0); //开放TIMER0溢出中断
DDRA|=BIT(PA0); //配置PA0引脚为输出
}
/************************************************
*函数名称: void port_init(void)
*入口参数: 无
*出口参数: 无
*函数功能: 端口初始化
*创建时间: 2009-09-01 eleShrimp
*修改说明:
/************************************************/
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0xFF;
PORTB = 0xFF;
DDRB = 0xFF;
PORTC = 0xFF; //m103 output only
DDRC = 0xFF;
PORTD = 0xFF;
DDRD = 0xFF;
}
/************************************************
*函数名称: void init_devices(void)
*入口参数: 无
*出口参数: 无
*函数功能: 设备初始化
*创建时间: 2009-09-01 eleShrimp
*修改说明:
/************************************************/
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
/************************************************
*函数名称: void main(void)
*入口参数: 无
*出口参数: 无
*函数功能: 完成初始化,等待TIMER0中断
*创建时间: 2009-09-05 eleShrimp
*修改说明:
/************************************************/
void main(void)
{
init_devices( ); //初始化开发板
Timer0_init(); //初始化定时器0
while(1) //等待中断
{
PORTA ^= 0x02;
}
}
#pragma interrupt_handler Timer0:10
/************************************************
*函数名称: void Timer0(void)
*入口参数: 无
*出口参数: 无
*函数功能: Timer0的溢出中断服务函数
*创建时间: 2009-09-05 eleShrimp
*修改说明:
/************************************************/
void Timer0(void)
{
TCNT0 = 0x3c;
k=k+1;
if(k>20)
{
k=0;
PORTA ^= 0x01;
}
} |