📄 timer.c
字号:
/*************************************************************
定时器应用,设定定时器的产生中断间隔与DSP的工作时钟频率不一致,不
是一个变量关系。
*************************************************************/
/************************文件预处理***************************/
#include "exp3_2407.h"
/*************************************************************/
/********************全局变量定义与初始化*********************/
ioport short port8001; //输出端口地址定义
unsigned int num=0,i=0;
unsigned int show=0x0080;
/*************************************************************/
/*******************函数、子程序声明与定义********************/
void sys_ini() //系统初始化子程序
{
/*关总中断*/
asm(" setc INTM");
/*抑制符号位扩展*/
asm(" clrc SXM");
/*累加器中结果正常溢出*/
asm(" clrc OVM");
/*禁止看门狗*/
* WDCR=0x00E8;
/*配置时钟锁相为4倍频CLKOUT=4*10=40M*/
* SCSR1=0x81FE;;
/*清除所有中断标志,"写1清0"*/
* IFR=0xFFFF;
}
void timer1_ini() //定时器1初始化子程序
{
/*使能int2中断*/
* IMR=0x0002;
/*使能T1PINT中断*/
* EVAIMRA=0x0080;
/*清EVA中断标志*/
* EVAIFRA=0xFFFF;
/*约1ms产生一次中断*/
* T1PER=0x01CD;
/*计数器清零*/
* T1CNT=0x0000;
/*连续增计数模式,预分频为64,定时器计时使能,内部时钟,定时器1比较使能*/
* T1CON=0x164C;
/*开总中断*/
asm(" clrc INTM");
}
/*************************************************************/
/*****************中断服务子程序声明与定义********************/
interrupt void nothing() //哑中断子程序
{
return;
}
interrupt void timer1() //定时器1中断子程序
{
for(;;)
{
for(i=0;i<9;i++)
{ /*显示值取反*/
show=~show;
port8001=show;
for(num=0;num<0xffff;num++)
{;}
show=~show;
show=show>>1;
if(show==0x0000)show=0x0080;
}
}
/*计数器清零*/
* T1CNT=0x0000;
/*清EVA中断标志*/
* EVAIFRA=0xFFFF;
return;
}
/*************************************************************/
/**************************主程序*****************************/
void main(void)
{
sys_ini();
timer1_ini();
}
/***************************结束******************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -