导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→好心的大哥大姐,老古斑竹:救命啊!!![eolman]

 *第22706篇: 好心的大哥大姐,老古斑竹:救命啊!!!

  
楼 主:eolman 2004年6月7日10:27
 好心的大哥大姐,老古斑竹:救命啊!!!
大家都来看看,双串口通讯问题(附代码)
为何我用w77e58(xtal 18.432mhz)的通讯口出错?
问题:串口1无字符发出,且不引起ES2中断(估计是硬件初始化错误),附上部分源码.
请高手指点.
/************************************
*  Cpu Init function
************************************/
void CpuInit(void)
{
/* CPU控制用特殊功能寄存器初始化(均设置为复位后的结果)*/
// IE = 0x00;      /* INTERRUPT ENABLE            EA为总中断允许位*/
// IP = 0x00;     /* INTERRUPT PRIORITY                          */
// PCON = 0x00; /* 电源管理                                    */
// SCON = 0x00; /* 串口管理   0                                 */
// TCON = 0x00; /* TIMER CONTROL                               */
// SCON1= 0X00;

/*--------------------------------------------------------------*/
  /*   T1设置为自动重载的8位模式     */
  /*T1设定时间=(256-TH1)*12/fsoc
  /*T1溢出率=fsoc/(256-TH1)*12=153600
  /*波特率 = 2*153600/32 */
   /*--------------------------------------------------------------*/
TMOD=0x20;
TH1 = 0x0f6; //放置初值
TL1 = TH1;

PCON |= 0x80;/* SMOD =0?9600  */
  /*--------------------------------------------------------------*/
  /*      初始化串行口0    */
  /*  波特率9600,数据长度8位,奇校验,1位停止位*/
  /*  波特率 = ( 2 ^ SMOD ) * T1溢出率/32 */
  /*--------------------------------------------------------------*/
SM0 = ON;  /* 9位UART模式,校验位作为第9位 */
SM1 = ON;  /* 波特率可变 */

  /*--------------------------------------------------------------*/
  /*      初始化串行口1    */
  /*  波特率9600,数据长度9位,奇校验,1位停止位*/
  /*  波特率 = ( 2 ^ SMOD ) * T1溢出率/32 */
  /*--------------------------------------------------------------*/
SCON1|=0XC0; //9位模式
SMOD_1=1;  //在watchdog control中


  /*--------------------------------------------------------------*/
  /*   T2设置为自动重载的16位模式     */
  /*T1设定时间=(65535-T1)*12/fsoc=1ms
  /*--------------------------------------------------------------*/
T2CON = 0x00;
TH2 = RCAP2H = HIGH_BYTE( -1536 );
TL2 = RCAP2L = LOW_BYTE(  -1536 );
/*设置watchdog           */
    EWT=OFF;        //不使用内带WATCHDOG

/* 分别启动定时器1,定时器2*/
TR1 = ON;
TR2 = ON;

  /* 中断初始化 */


TI  = OFF;
RI  = OFF;
TI1 = OFF;
RI1 = OFF; 
REN = ON;
REN1 = ON;

EA=TRUE;
ES0=TRUE;
ES1=TRUE;
ET2=TRUE;
}
void TimeIntSrv( void ) interrupt 5 using 1
{
}
void CommIntSrv0(void ) interrupt 4 using 2
{
}
void CommIntSrv1(void ) interrupt 7 using 3
{
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:MC14499数码显示问题

[下一篇主题]:8051的硬件堆栈除了保存返回地址还保存什么数据?