[其它应用] 求sh79f084 串口demo

[复制链接]
944|6
 楼主| xxrs 发表于 2021-4-8 22:24 | 显示全部楼层 |阅读模式
求sh79f084 串口demo,sh79f084 串口用T2定时器,没成功。哪里不对?

void Init_Timer2(void)
{        
        EA=0;
        //Enter_Bank1;                                                                        
        T2CON        =        Bin(00110000);
                 
        TL2 = (65536-16600000/32/2400) & 0x00ff;
    TH2 = ((65536-16600000/32/2400)>>8)&0x00ff;
        TF2          =         0;                                                //
        TR2        =         1;                                                // 开启定时器2        
                                                                                   
         //IEN0        |=        Bin(00010000);         //EUART
         //IEN1        =        Bin(00000000);         
         //Enter_Bank0;
         ET2 = 0;

         EA        =        1;                                                        //开启全中断
}
void EUART_Init(void)
{
         EA=0;  
         //Enter_Bank0;
                                             
          PCON =Bin(00000000);               
          SCON        =        Bin(01010000);                        //        方式1                  
          RI=0;                                       
        
          TI=0;                                                                                                  
          REN=1;                           //打开串口0接收中断
      ES0 =1;                           //使能UART0中断

        EA        =        1;
}
便携手到老 发表于 2021-4-8 22:25 | 显示全部楼层
感谢楼主的分享, 不错的代码,楼主是高手。
llljh 发表于 2021-4-8 22:28 | 显示全部楼层
void Uart_Config(u16 baud)
{
    u32 tmp;
    u8 T2RH = 0;    //T2重载值的高字节
    u8 T2RL = 0;    //T2重载值的低字节
        
    tmp = SYS_MCLK / 32 / baud;
    tmp = 65536 - tmp;
    T2RH = (u8)(tmp >> 8);
    T2RL = (u8)tmp;

    PCON &= 0xBF;        //X0XX XXXX D6 = 0,SCON[7:5]工作方式SM0 SM1 SM2
    SCON = 0x50;        //0101 0000 方式1,波特率为系统时钟的1/12
    RCAP2L = T2RL;
    RCAP2H = T2RH;
    T2MOD &= 0x00;
    T2MOD |= 0x01;
    T2CON |= 0x34;  //0011 0000 使用T2溢出率作为波特率发生器 开始T2
    ES0 = 1;
}
 楼主| xxrs 发表于 2021-4-8 22:30 | 显示全部楼层
试了一下,没成功,不知道是哪里的问题?
jiajs 发表于 2021-4-8 22:33 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| xxrs 发表于 2021-4-8 22:35 | 显示全部楼层
代码增加了        
    RCAP2L = TL2;
    RCAP2H = TH2;
通讯中断进去了,只中断3次,因该中断15次进去。
 楼主| xxrs 发表于 2021-4-8 22:38 | 显示全部楼层

搞定了,呵呵,犯了低级错误……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部