?? 復件 gptime.c
字號:
#include "2407c.h"
#include "ioports.h"
#include "math.h"
#define q14 16384
#define Bp 120
#define Cp 360
unsigned int n,n2,i=0;
unsigned int s[1204];
int sine[361]={0,286,572,857,1143,1428, //SIN值表,Q14格式有符號數
1713,1997,2280,2563,2845,
3126,3406,3686,3964,4240,
4516, 4790,5063,5334,5604,
5872,6138,6402,6664, 6924,
7182,7438,7692,7943,8192,
8438,8682,8923,9162,9397,
9630,9860,10087,10311,10531,
10749,10963,11174,11381,11585,
11786,11982,12176,12365,12551,
12733,12911,13085,13255,13421,
13583,13741,13894,14044,14189,
14330,14466,14598,14726,14849,
14968,15082,15191,15296,15396,
15491,15582,15668,15749,15826,
15897,15964,16026,16083,16135,
16182,16225,16262,16294,16322,
16344,16362,16374, 16382,16384, //;90
16382,16374,16362,16344,16322,
16294,16262,16225,16182,16135,
16083,16026,15964,15897,15826,
15749,15668,15582,15491,15396,
15296,15191,15082,14968,14849,
14726,14598,14466,14330,14189,
14044,13894,13741,13583,13421,
13255,13085,12911,12733,12551,
12365,12176,11982,11786,11585,
11381,11174,10963,10749,10531,
10311,10087,9860,9630,9397,
9162,8923,8682,8438,8192,
7943,7692,7438,7182,6924,
6664,6402,6138,5872,5604,
5334,5063,4790,4516,4240,
3964,3686,3406,3126,2845,
2563,2280,1997,1713,1428,
1143,857,572,286, 0, //;180
-286,-572,-857,-1143,-1428,
-1713,-1997,-2280,-2563,-2845,
-3126,-3406,-3686,-3964,-4240,
-4516, -4790,-5063,-5334,-5604,
-5872,-6138,-6402,-6664, -6924,
-7182,-7438,-7692,-7943,-8192,
-8438,-8682,-8923,-9162,-9397,
-9630,-9860,-10087,-10311,-10531,
-10749,-10963,-11174,-11381,-11585,
-11786,-11982,-12176,-12365,-12551,
-12733,-12911,-13085,-13255,-13421,
-13583,-13741,-13894,-14044,-14189,
-14330,-14466,-14598,-14726,-14849,
-14968,-15082,-15191,-15296,-15396,
-15491,-15582,-15668,-15749,-15826,
-15897,-15964,-16026,-16083,-16135,
-16182,-16225,-16262,-16294,-16322,
-16344,-16362,-16374, -16382,-16384, //;90
-16382,-16374,-16362,-16344,-16322,
-16294,-16262,-16225,-16182,-16135,
-16083,-16026,-15964,-15897,-15826,
-15749,-15668,-15582,-15491,-15396,
-15296,-15191,-15082,-14968,-14849,
-14726,-14598,-14466,-14330,-14189,
-14044,-13894,-13741,-13583,-13421,
-13255,-13085,-12911,-12733,-12551,
-12365,-12176,-11982,-11786,-11585,
-11381,-11174,-10963,-10749,-10531,
-10311,-10087,-9860,-9630,-9397,
-9162,-8923,-8682,-8438,-8192,
-7943,-7692,-7438,-7182,-6924,
-6664,-6402,-6138,-5872,-5604,
-5334,-5063,-4790,-4516,-4240,
-3964,-3686,-3406,-3126,-2845,
-2563,-2280,-1997,-1713,-1428,
-1143,-857,-572,-286, 0};
main()
{
unsigned int k,flag,t,j5;
unsigned int q,j,j1,j2,max,delm,deln;
float m,t1,t2,t3,t4,t5,t6,du;
asm(" setc INTM");
//asm(" CLRC SXM"); // 符號位擴展有效
//asm(" clrc OVM"); // 累加器中結果正常溢出
//asm(" clrc CNF");
*WDCR=0x0e8;
// *WDKEY=0x5555;
// *WDKEY=0x0aaaa;
*SCSR1=0x0008; //40m
*MCRC=0x007e;
*IMR=0x0002;
*IFR=0xffff;
*EVBIMRA=0x0200;
*EVBIMRB=0x0000;
*EVBIMRC=0x0000;
*EVBIFRA=0xffff;
*EVBIFRB=0x00ff;
*EVBIFRC=0x00ff;
*T3PR=1000;
*CMPR4=1000;
*CMPR5=1000;
*CMPR6=1000;
*ACTRB=0x0666;
*DBTCONB=0x0;//2F4;
*COMCONB=0x8200;
*GPTCONB=0x40;
*T3CON=0x0802;
m=0.9;
max=2000;//40000;
*T3PR=max/2;
delm=1880;//39880;
deln=120;
t=max/4;
n=400;
n2=n*2;
du=180.0/n;
for(k=0;k<n2;)
{
j=k*du;
t1=sine[j];
t1=t1/16384;
t1=t1*m;
t1=1+t1;
t1=t1*t;
t1=t*(1+m*sine[j]/q14);
j=j+120;
if(j>Cp)j=j-Cp;
t2=t*(1+m*sine[j]/q14);
j=j+120;
if(j>Cp)j=j-Cp;
t3=t*(1+m*sine[j]/q14);
k=k+1;
j=k*du;
t4=t*(1+m*sine[j]/q14);
j=j+120;
if(j>Cp)j=j-Cp;
t5=t*(1+m*sine[j]/q14);
j=j+120;
if(j>Cp)j=j-Cp;
t6=t*(1+m*sine[j]/q14);
k++;
t1=t1+t4;
t2=t2+t5;
t3=t3+t6;
if(t1<deln)t1=0;
if(t1>delm)t1=max;
t1=(max-t1)/2;
s[i]=t1;
if(t2<deln)t2=0;
if(t2>delm)t2=max;
t2=(max-t2)/2;
s[i+n]=t2;
if(t3<deln)t3=0;
if(t3>delm)t3=max;
t3=(max-t3)/2;
s[i+n2]=t3;
i++;
}
i=0;
asm(" clrc INTM");
*T3CON=*T3CON|0x0040;
while(1)
{while(1);
}
}
void interrupt T1INT( )
{ int flag;
flag=*EVBIFRA&0x0200;
if(flag!=0x0200)
{
asm(" clrc INTM");
}
*EVBIFRA=0xFFFF;
*CMPR4=s[i];
*CMPR5=s[i+n];
*CMPR6=s[i+n2];
i++;
if(i>n)i=0;
} /* */
void interrupt nothing()
{
asm(" clrc INTM");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -