port8000=1; //使能直流电机
port8007=0; // 关闭东西方向的交通灯
port8007=0x40; // 关闭南北方向的交通灯
uN=10; nCount=nCount1=0; //cKey=cOldKey=0;
*WDCR=0x6f;
*WDKEY=0x5555;
*WDKEY=0xaaaa; //关闭看门狗中断
*SCSR1=0x81fe; //打开所有外设,设置时钟频率为40MHz
uWork=(*MCRC);
uWork&=0x0efdf; /* 将PWM11/IOPE5,TDIR2/IOPF4 设置成通用I/O口 */
(*MCRC)=uWork;
gp_init();
*IMR=0x2; //使能定时器中断
*IFR=0xffff; //清所有中断标志
uWork=(*WSGR); //(以下三句)设置I/O等待状态为0
uWork&=0x0fe3f;
(*WSGR)=uWork;
uWork=(*PFDATDIR);//(以下三句)将direct置为0
uWork|=0x1000;
哈尔滨工业大学——DSP 原理与应用实验指导书
III-61
uWork&=0xffef;
(*PFDATDIR)=uWork;
asm(" clrc INTM"); //开中断
Delay(128);
*T1PR=T46uS; //保存结果周期=0xd40*25ns
for(;;)
{
if ( nCount>50 )
{
nCount=0;
}
}
port8000=0;
port8000=0x80;
port8000=0;
exit(0);
}
void interrupt gptime1(void)
{
uWork=(*PIVR);
switch(uWork)
{
case 0x27,
{
(*EVAIFRA)=0x80;/////////////////////here:)
uWork=(*PEDATDIR);
uWork|=0x2000;
if ( nCount>uN )
哈尔滨工业大学——DSP 原理与应用实验指导书
III-62
uWork|=0x20;
else
uWork&=0x0ffdf;
(*PEDATDIR)=uWork;
nCount++;
nCount1++; nCount1%=100;
cnt++;
if(cnt>10000)
{
cnt = 0;
datacnt ++;
if (datacnt > 1)
datacnt = 0;
uN=data[datacnt];
}
break;
}
}
}
void gp_init(void)
{
*EVAIMRA = 0x80; //使能 T1PINT
*EVAIFRA = 0xffff; //清中断标志
*GPTCONA = 0x0000; //setting of period interrupt flag starts ADC
*T1PR = T46uS*9/5; //保存结果周期=0xd40*200*9/5ns=1.22ms=820Hz
*T1CNT = 0; //计数器从0开始计数
*T1CON = 0x1340;
}
void Delay(unsigned int nDelay)
哈尔滨工业大学——DSP 原理与应用实验指导书
III-63
{
int i,j,k;
for ( i=0;i<nDelay;i++ )
for ( j=0;j<16;j++ )
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-29489-99.html
>永遠支持你
#吴亦凡##吴亦凡1106生日快乐##吴亦凡BadGirl#我凡