[其它应用]

SH79F085串口不接收中断

[复制链接]
736|2
手机看帖
扫描二维码
随时随地手机跟帖
mmk|  楼主 | 2017-2-6 17:52 | 显示全部楼层 |阅读模式
本帖最后由 mmk 于 2017-2-6 18:03 编辑

下面是程序

--------------------------------------------------------------------------------------------------*/
#include "SH79F085.h"
#include "intrins.h"

#define SYSCLK  4150000

unsigned char  flag,uart_buf;
/*---------------------------------------------------------------------------------------
初始化时钟

---------------------------------------------------------------------------------------*/
void Init_SysClk(void)
{
    unsigned char tucData;
        
    CLKCON = 0x08;      //时钟0分频,打开高频时钟。
    for(tucData=0;tucData<200;tucData++)  //延时。
    {
        _nop_();
    }
    CLKCON |= 0x0C;      //系统时钟切换到高频16.6MHz。
}
  void Send(unsigned char c)
  {
  SBUF=c;
  while(!TI)
  {}
  TI=0;
  
  
  }

void init_uart(void)
{
        ES=1;          //允许串口中断
        ET1=1;                //定时器1允许中断
//   SCON=0x40;              // #0100,0000 b serial port mode 1,  ren=0 disable recieve data
    SCON=0x50;              // #0100,0000 b serial port mode 1,  ren=1 able recieve data
    PCON=0x00;
        TMOD=0x21;
        TCON1=0x0C;
           TL1=0xCA;                                    //Timer1 baud = 9600Hz
    TH1=0xCA;                                                                         //波特率 = Fsysclk/32/(256-TH1),SMOD=0
    TR1=1;                                 //启动定时器



}


void init_io(void)
{
        P0CR        =0xFF;                //P0端口输入/输出寄存器  0输入、1输出
        P0PCR        =0xFF;                //         端口0内部上拉允        0:内部上拉电阻关闭          、         1:内部上拉电阻开启
        P0                =0x00;                //3bit端口0                                                                          

        P1CR        =0x04;                //         P1.1设为输出,串口
        P1PCR        =0xFF;
        P1                =0x9F;


        P2CR        =0xFF;                //P2输出
        P2PCR        =0xFF;
        P2                =0x00;
}


void main(void)
{

    EA=0;
    REGCON = 0x01;      //打开VDDR电源。
    _nop_();
    _nop_();

        init_io();
    _nop_();
    _nop_();  


    Init_SysClk();
    _nop_();
    _nop_();
   
        init_uart();

    _nop_();
    _nop_();
        
    EA=1;
    flag=0;
    while(1)
    {




//                                 Send(0x11);
//                                Send(Ad_Temperature);
//                                Send(3);

                if(flag==1)
                {
                                 ES=0;         //禁止串口中断
                                flag=0;         //清零标志位
                                   Send(0x11);
                                Send(3);
                                ES=1;  //允许串口中断
                        
                 }
    }
   
}




  void ser() interrupt 4 //串口接收中断
  {
          if(RI)
        {
                  RI=0;
                  uart_buf=SBUF;
                flag=1;           //置位发送标志
        }

  
  }


求大神指教
classroom| | 2023-11-13 17:22 | 显示全部楼层
检查中断配置

使用特权

评论回复
powerantone| | 2023-11-13 17:23 | 显示全部楼层
波特率设置不正确可能会导致数据接收异常。请确认您设置的波特率与外设的波特率相匹配。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

mmk

1

主题

1

帖子

0

粉丝