📄 timer.c
字号:
#include "stdio.h"
#define IMR 0
#define ST0 6
#define ST1 7
#define TIM 0x24
#define PRD 0x25
#define TCR 0x26
#define PMST 29 /* 0x13 */
extern int counter = 25;
int flagxf = 0;
int con_buf=0;
float buf[128]; /* save out wave buffer ! */
float y0;
float y1=0.30901699;
float y2=0.58778525; /* y2= y1*A */
const float aa=1.90211304;
const float bb=-1.;
main()
{
const int flag = 1;
int *dest;
dest = (int *)IMR;
*dest = 0;
dest = (int *)PMST;
*dest = 0x1020; /* interrupt vector at 0x1000 */
dest = (int *)TCR;
*dest = 0x0010;
dest = (int *)PRD;
*dest = 2499;
dest = (int *)IMR;
*dest = 0x0008; /* enable timer0 TINT0 */
dest = (int *)TCR;
*dest = 0x0030;
*dest = 0x0000;
asm (" rsbx intm");
while ( flag )
{
if ( flagxf == 0 )
{
asm( " RSBX XF");
asm( " nop" );
asm( " nop" );
asm( " nop" );
}
else
{
asm(" SSBX XF");
asm( " nop" );
asm( " nop" );
asm( " nop" );
}
}
}
void interrupt tint()
{
y0 = aa*y1 + bb*y2;
y2 = y1;
y1 = y0;
buf[con_buf]=y0;
con_buf++;
if(con_buf == 127)
con_buf=0; /* set breakpoint to show wave ! */
if(flagxf==0)
flagxf=1;
else
flagxf=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -