这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 大家谁用513D做过串口,帮我看看程序,我写的不行

共3条 1/1 1 跳转至

大家谁用513D做过串口,帮我看看程序,我写的不行

菜鸟
2009-07-30 12:16:23     打赏

#pragma sfr
#pragma di
#pragma ei
/*#pragma interrupt INTSR0 UART0_RX
#pragma interrupt INTST0 UART0_TX*/
typedef unsigned char UCHAR;
typedef unsigned int  UINT;
UCHAR tflag;
UCHAR LED[5]={0x0D,0x0B,0x07,0x0E,0x0F};
UCHAR LEDP[5]={0x05,0x04,0x03,0x02,0x01};

void Clock_Init(void)
{

 IMS = 0xC8;
 IXS = 0x0C;
  /* Set fxh */
 OSCCTL = 0;  /* X1, X2 as I/O port */
 MSTOP = 1;
 /* Set frh */
 RSTOP = 0;
 /* Set fprs */
 MCM = 0; /* fxp = frh,fprs = frh */
 /* Set fsub */
 XTSTART = 0;
 /* Set fcpu */
 PCC = 0x00;   /* fcpu = fxp */
 /* Set frl */
 LSRSTOP = 0;
}
void Uart_Init(void)
{
 ASIM0 = 0xe5;
 BRGC0 = 0xCD;
 STMK0 = 1;
 SRMK0 = 1;
 STIF0 = 1;
  SRIF0 = 1;
}
void Port_Init(void)
{ PM1 = 0X02;
/* P1 = 0x03;*/
 P6 = 0xFF;   /* P6.0~P6.3 output 1 */
 PM6 = 0x00;    /* P6.0~P6.3  as output mode */
}

void TM00_Start(void)
{
   TMMK000 = 0x00;   /* INTTM000 enabled */
 TMC00 = 0x0C;   /*Start Count operation*/
}
void main(void)
{
 UINT i,flag;
 DI( );   /*Disable interrupt*/
 Clock_Init();  
 Port_Init();
 Uart_Init();
 EI( );   /*Enable interrupt*/
  while(1)
 {
   if(SRIF0 == 1)
  {
    LEDP[1] = RXB0;
    P6=0x00;
    while(SRIF0);
     SRIF0 = 0;
    flag = 1;
  }
   if(tflag == 1)
  {  
    tflag = 0;
    TXS0 = LEDP[1];
    P6=0x00;
   while(STIF0);
    STIF0 = 0;
    flag = 0;
  }
 }
}
/*__interrupt void UART0_RX( void )
{
   LEDP[4] = RXB0;
   P6=0x00;
 tflag = 1;
}
__interrupt void UART0_TX( void )
{
UCHAR i;
 P6=0x0f;
 TXS0 = 0x34;
}
*/

 




关键词: 大家     谁用     做过     串口     帮我     看看     程序     写的         

助工
2009-07-30 22:25:20     打赏
2楼

不知楼主的具体调试情况,是不能进入串口的收发中断,还是数据收发不对。
提以下建议:
是否开中断;
中断向量表有没有正确设置;
注意观察发送和接收缓冲寄存器是否发送和接收了正确的数据。

另外这个是和PC通信还是和另一个单片机啊,注意波特率,数据格式,UART模式等要相同。


菜鸟
2009-07-31 17:29:49     打赏
3楼

中断我打开了,从程序中可以看出。以下是我设置的寄存器:
 ASIM0 = 0xe5;
 BRGC0 = 0xCD;
 STMK0 = 1;   //中断允许
 SRMK0 = 1;
 STIF0 = 1; //先设置一个触发
我用51做过类似程序,没出现过问题,我只知道51是半双工,而513D是全双工,不知可以否互用。能不能给我一个例程看看,我已做了两天啦,郁闷啊!


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]