#include "2407c.h"
//系统初始化
int receivea[40]={0x0};
int ad_result;
int j=0,n;
extern int jj=0,kkk=0,ppp=0;
int aa[6];
int SCI_RXDATA;
int delay()
{int jj;
for(jj=0;jj<10;jj++)
jj=jj;}
//**********************************
void Init()
{
*SCSR1=0X83FE;
*WDCR=0X0E8;
asm( " SETC INTM " );
asm(" CLRC OVM " );
asm(" CLRC CNF " );
asm(" CLRC SXM " );
*IMR=0X0010;//SCI低优先级中断
*IFR=0X0FFFF;
*MCRA=(*MCRA)|0X3;
*PEDATDIR=0X0FF00;
*PADATDIR=(*PADATDIR | 0x0FCFF)&0x0FC00;
*PBDATDIR=(*PBDATDIR | 0x0FFFF)&0x0FFFF;
*MCRC=0x00;
*PEDATDIR=(*PEDATDIR | 0x0FFFF)&0x0FFFF;
asm(" CLRC INTM ");//开中断
}
//SCI初始化
void InitSci()
{
asm(" SETC INTM "); //禁止总中断
*MCRA=(*MCRA)|0X3;
*SCICCR=0X67;
*SCICTL1=0X13;
*SCICTL2=0X03;
*SCIHBAUD=0X02;
*SCILBAUD=0X07;
*SCICTL1=0X33;
*SCIPRI=*SCIPRI|0X68;
*MCRA=0x3;
*IMR=0X10;
asm(" CLRC INTM "); //使能总中断
*WDKEY=0XAA;*WDKEY=0X55;
}
//*****************************************
void sci_send()
{
for (n=0;n<5;n++)
{ *SCITXBUF=0x123;
delay();
while((*SCICTL2 & 0x0080)==0);
}
}
//***********************************************
//串口中断服务程序
void int1_sci()
{ int NNN;
while(jj<40) //存储数据在receive[0-40]
{
receivea[jj]=*SCIRXBUF;
if(receivea[jj]==0x55)
{
NNN=jj+1;
jj=0;
goto bb;
}//0x55数据结束标志
jj=jj+1;
goto aa;
}
*WDKEY=0XAA;*WDKEY=0X55;
bb:
//data_handle();
//for(ppp=0;ppp<100;ppp++)
//{
/*if(numled0==0)
{
numled0=2000;
if((PBDATDIR & 0x0001)==0x0001)
PBDATDIR=PBDATDIR & 0xFFFE; //IOPB0=0;LED灭
else
PBDATDIR=PBDATDIR |0x0101; //IOPB0=1;LED亮
}*/
//aa[n]=receivea[jj];
sci_send();
//ad_do();
//ad_hand();//AD采样100次
//}
asm(" CLRC INTM ");
aa:
asm(" CLRC INTM "); //开中断
}
//*****************************************************
main()
{
Init();
InitSci();
//ad_init();
while(1){
*WDKEY=0XAA;
*WDKEY=0X55;
}
}
//********************************************************
void interrupt uarttr()
{
switch(*PVIR)
{ case 6: int1_sci();
break;
default: break;
}
}
void interrupt nothing()
{return;}