📄 test19.c
字号:
#pragma CODE_SECTION(vect,"vect")
#include "math.h"
unsigned int *pmem=0;
#define PMST *(pmem+0x001D)
#define SWCR *(pmem+0x002B)
#define SWWSR *(pmem+0x0028)
#define BSCR *(pmem+0x0029)
#define READS *(pmem+0x4000)
#define IMR *(pmem+0x0000)
#define IFR *(pmem+0x0001)
#define TIM0 *(pmem+0x0024)
#define PRD0 *(pmem+0x0025)
#define TCR0 *(pmem+0x0026)
#define PI 3.1415926
int i,A,k,T,BIAN;
int N,j;
int time1_over;
float fo,fs;
unsigned int x[4000];
void wave0(void) /*正弦波*/
{
A=1000;
fo=1000;
N=1000;
fs=N*fo;
for(i=0;i<N;i++)
x[i]=(int)(A*sin(2*PI*i*fo/fs)+A);
}
void wave1(void) /*余弦波*/
{
A=1000;
fo=10;
N=1000;
fs=N*fo;
for(i=0;i<N;i++)
x[i]=(int)(A*cos(2*PI*fo*i/fs)+A);
}
void wave2(void) /*三角波*/
{
k=1;
T=1000;
N=1000;
fs=(float)N/T;
for(i=0;i<N/4;i++)
x[i]=(int)(k*i*1.0/fs+k*T/4.0);
for(i=N/4;i<N/2;i++)
x[i]=(int)(k*(T/2.0-i*1.0/fs)+k*T/4.0);
for(i=N/2;i<3*N/4;i++)
x[i]=(int)(k*(T/2.0-i*1.0/fs)+k*T/4.0);
for(i=3*N/4;i<N;i++)
x[i]=(int)(k*(i*1.0/fs-T)+k*T/4.0);
}
void wave3(void) /*方波*/
{
A=1000;
T=1000;
N=T;
fs=N/T;
for(i=0;i<N;i++)
{
if((i/fs)<(T/2.0))
x[i]=A;
else
x[i]=0;
}
}
void wave4(void) /*锯齿波*/
{
k=1;
T=1000;
N=T;
fs=N/T;
for(i=0;i<N;i++)
x[i]=(int)k*i/fs;
}
void wave5(void)
{
k=1;
T=1000;
N=T;
fs=N/T;
for(i=0;i<N;i++)
x[i]=(int)(-k*i/fs);
}
void cpu_init()
{
PMST=0x3fa0;
SWWSR=0x0fff;
SWCR=0x0000;
BSCR=0x0002;
IMR=0;
IFR=IFR;
}
void set_t0()
{
asm(" ssbx intm");
TCR0=0x0a18;
PRD0=0x001F;
IMR=IMR|0x0008;
IFR=IFR;
asm(" rsbx intm");
}
main() /*正弦波*/
{
cpu_init();
set_t0();
time1_over=0;
READS=0;
for(i=0;i<4000;i++)
x[i]=0;
aaaa: BIAN=(READS&0xF000)>>13;
switch(0)
{
case 0: wave0(); break;
case 1: wave1(); break;
case 2: wave2(); break;
case 3: wave3(); break;
case 4: wave4(); break;
case 5: wave5(); break;
}
for(;;)
{
for(k=0;k<N;k++)
{
TCR0=0x0a28;
PRD0=0x001F;
while(time1_over==0);
time1_over=0;
READS=x[k];
}
j=(READS&0xF000)>>13;
if(j!=BIAN) goto aaaa;
}
}
interrupt void tint0()
{
time1_over=1;
}
void vect()
{
asm(" .ref _c_int00");
asm(" .ref _tint0");
asm(" b _c_int00"); /* reset */
asm(" nop");
asm(" nop");
asm(" rete"); /* nmi */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int2 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" b _tint0"); /* tint0 */
asm(" nop");
asm(" nop");
asm(" rete"); /* brint0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* bxint0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac0 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* tint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* int3 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* hpint */
asm(" nop");
asm(" nop");
asm(" rete"); /* brint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* bxint1 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac4 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" rete"); /* dmac5 */
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
asm(" nop");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -