我写了一个SCI连续发送的程序,用超级终端接收. 波特率设置一样,停止位,奇偶校验位设置都一样,流量控制 设为无.可是接收到的数据全是0. 请问高手,如何解决? 谢谢! 源程序如下: //编码器脉冲个数有变化 //UVW三相326451已正确 #include "register.h" #include "math.h" #include "float.h" unsigned int TMP,TMP1,TMP2,TMP3; volatile unsigned int RECE_DATA; //接收数据 unsigned int ERR_DATA; //错误数据 unsigned int T3COUNT; unsigned int COUNT; unsigned int k; const char* var="aA1"; void COMMON() { asm(" CLRC SXM "); asm(" CLRC CNF "); asm(" CLRC OVM "); asm(" SPM 0 "); asm(" SETC INTM "); WSGR=0X00; *SCSR1=0x81fe; *WDCR=0xe8; *IMR=0; *IFR=0X0FFFF; } //*端口初始化******************************************/ void DKCHSHH() { *MCRA=0x001B; //QEP1,QEP2,SCITXD,SCIRXD *MCRB=0X0FF00; *MCRC=0X0200; //CAP6 *PADATDIR=0X0C000; *PBDATDIR=0X7F10; *PCDATDIR=0X0F4D0; *PEDATDIR=0X7100; *PFDATDIR=0X5C04; } //*EVA、EVB和中断初始化子程序****************************/ void EVINT() { *GPTCONB=0X0000; *T3PER=0X08000; *T3CNT=0; *T3CON=0X0840; //连续增减 *GPTCONA=0; *T2PER=0X0FFFF; *T2CNT=0; *T2CON=0X187A; // ;定向增减计数方式, //正交编码脉冲电路,允许T2 *T4PER=0X0FFFF; *T4CNT=0; *T4CON=0X1442; //连续增计数模式 *CAPCONA=0X0600; //使能QEP *CAPCONB=0X1004; //使能捕获单元6,检测下降沿 //选中定时器4 *EVAIFRA=0X0FFFF; *EVAIFRB=0X0F; *EVAIFRC=0X0F; *EVAIMRA=0; *EVAIMRB=0; *EVAIMRC=0; *EVBIFRA=0X0FFF; *EVBIFRB=0X000F; *EVBIFRC=0X000F; *EVBIMRA=0X0; *EVBIMRB=0; *EVBIMRC=4; //捕捉6中断 *IFR=0X0FFF; *IMR=0X1A; // ;开INT2、4、5中断 asm(" CLRC INTM "); // ;开总中断 } //;**********SCI初始化**************************************** void SCIINIT() { *SCICCR=0X07; *SCICTL1=0X13; //;SLEEP=0,使能发送、接收 *SCICTL2=0X03; // ;接收中断使能 *SCIHBAUD=0X00; *SCILBAUD=0X81; // ;波特率38400 *SCICTL1=0X33; // ;SW RESET *SCIPRI=0X60; // ;高优先级中断请求 *SCITXBUF=0; } //;*************变量初始化************************************* void BSSINIT() { TMP=0; TMP1=0; TMP3=0; TMP2=0; T3COUNT=0; COUNT=0; k=0; } //;********假中断********************************************** void interrupt nothing() { asm(" clrc INTM "); return; } main() { unsigned int i; COMMON(); DKCHSHH(); EVINT(); SCIINIT(); BSSINIT(); *T2CNT=0; TMP1=0; *SCITXBUF=0; *SCIRXBUF=0; while(1) { //************UVW*************************** *SCITXBUF=var[0]; while((*SCICTL2&0X80)!=0X80) {;} for(i=50000;i>0;i--) ; *SCITXBUF=var[1]; while((*SCICTL2&0X80)!=0X80) {;} for(i=50000;i>0;i--) ; *SCITXBUF=var[2]; while((*SCICTL2&0X80)!=0X80) {;} for(i=50000;i>0;i--) ; } }
//清除定时器2计数值 int load() {
}
void interrupt cap6int() { }
|