导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:帮帮我!使用DS80C320双串口[jjniu]

 *第5127篇: C51编程:帮帮我!使用DS80C320双串口

  
楼 主:jjniu 2002年9月24日13:37
 C51编程:帮帮我!使用DS80C320双串口
//使用DS80c320,晶振18.432,想实现串口0移位,串口1中断收发数据。伟福
//E2000/L仿真器,POD520仿真头。

#include <reg320.h>
unsigned int buffer1[10];

void main()
  {
   SCON0=0;
   TMOD=0x21;
   TL0=0x00;
   TH0=0xff;
   ET0=1;

   TL1=TH1=0xfb;
   SCON1=0xd8;
   PCON=0x80;
   ES1=1;
   EA=1;
   TR0=1;   //加上这句则串口1不产生中断,无法接收;去掉则完全正常?
            //怎么回事?
   TR1=1;

   while(1);
  }

  void S1_recv(void) interrupt 7
    {
     while(RI1==0);
     RI1=0;
     buffer1[0]=SBUF1;
    }

  
2楼:zdel 2002年9月24日17:28
 你把定时器0启动想干什么?
  
3楼:jjniu 2002年9月24日21:13
 我想定时由串口0移位输出至6b595,程序中没写明
  
4楼:zdel 2002年9月25日09:55
 看看你那部分程序?
  
5楼:jjniu 2002年9月25日14:18
 谢谢zdel兄,程序如下:

    #include <REG320.H>
    unsigned char te;
    unsigned int te_buffer[10]=
{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

void  main()
  {
       SCON0=0x00;                            //串口0 MODEL 0, REN=1
        TMOD=0x21;                            //timer0, model 1,timer1, model 2
         TL0=0x00;
         TH0=0xff;
         ET0=1;                               //enable timer0 int

     TL1=TH1=0xfb;                            //9600
       SCON1=0xd0;                            //串口1 MODEL 3, REN=1
        PCON=0x80;
         ES1=1;
         IP=0x40;
         TR0=0;                                //timer1 on
         TR1=1;                                 //timer1 on
          EA=1;


     while(1);
   }


void S0_send(void) interrupt 1                //定时器0中断服务程序
  {
   TL0=0x00;
   TH0=0xff;

   T2=0;
   SBUF0=0xff;
       while(!TI);
   T2=1;                                     //锁存
  }


void S1_recv(void) interrupt 7                 // 接收中断
  {

      while(RI1==0);
       RI1=0;                               // 清接收中断标
       te=SBUF1;
//      te_buffer[p]=SBUF1;
        SBUF1=te;

  }

  
6楼:zdel 2002年9月25日18:10
 我用keil软件仿真能进入中断
你的程序前后写的不太一样哦!而且你定时发送时是不是忘了清TI了啊?你的两个串口之间
有逻辑联系么?
  
7楼:jjniu 2002年9月25日22:17
 我在KEIL C中也能产生中断,但变量TE不能取到正确值
两个串口间没有关系,这个程序只是为了试一下DS80C320的双串口功能所编的小程序。是不
是跟伟福的仿真器有关系?
  
8楼:zdel 2002年9月26日09:38
 那你串口1的接收数据从何处而来?
要不然怎么会te变量值不对?

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

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


[上一篇主题]:硬件:如何加强信号

[下一篇主题]:硬件:U盘接口