[技术问答] 新塘n79e814串口波特率的设置

[复制链接]
1657|11
 楼主| huangciluo 发表于 2015-3-23 11:53 | 显示全部楼层 |阅读模式
我现在用的芯片是n79e814,外接16M的晶振,我现在需要串口发送接收,我的波特率是250K;看了下手册,我发现有两种方法可以实现,第一种是模式2,波特率为系统时钟的六十四分之一,smod为0,16M/64=250K ;第二种是模式3:使用T1来作为波特率发生器,并设置smod为1,同时设置CKCON.4=1;经过公式 可算得TH1=255,也就是0xff;我的代码程序如下: 我现在的主要问题是程序总是进入不了中断,我想问下是不是哪里有问题?硬件是肯定没错的。刚开始接触新塘的芯片,对4T不是很懂,请教各位大师
#include"N79E81x.H"
#include"INTRINS.H"
#include"typed.h"
#include "Common.h"
#include "Define.h"

#define Uart_Port_Sel   0x00
void initUart();
void initUart()
{
        AUXR1 |= Uart_Port_Sel;         // Select P10/P11 as UART pin(default)
        CKCON |=0x10;                 //设置CKCON.4为1
        SCON = 0xd0;                  //设置串口工作方式3,允许接收
    TMOD |= 0x20;                //设置T1工作模式为8位重装
        PCON |= 0x80;                //设置smod为1,波特率加倍
        TH1 = 255;                    //设置T1初值
        TL1=255;
    TR1 = 1;                      //开启T1
        ES = 1;                      //允许串口中断
           PS = 1;                     //设置串口优先级
EA=1;                      //开总中断
}
void main()
{
    initUart();
        while(1)
        {
               
        }
}
void uart(void) interrupt 4       
{
               
}
langziwuliao 发表于 2015-3-23 16:36 | 显示全部楼层
好深奥:shutup:
gaoyang9992006 发表于 2015-3-23 16:49 | 显示全部楼层
没用过这个芯片,是不是初始化的第一句有误,我看那句什么都没执行。
cylnpy150411 发表于 2015-3-27 11:30 | 显示全部楼层
AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 AUXR1 &= 0xbf;
598330983 发表于 2015-3-28 09:18 | 显示全部楼层

AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 AUXR1 &= 0xbf;
我觉得,看看头文件或许会有答案。
quray1985 发表于 2015-3-29 09:12 | 显示全部楼层
我觉得是初始化处的设置有问题
gaoyang9992006 发表于 2015-3-29 14:28 | 显示全部楼层
估计是四倍的时钟频率吗?
 楼主| huangciluo 发表于 2015-3-30 14:40 | 显示全部楼层
cylnpy150411 发表于 2015-3-27 11:30
AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 ...

当T1用作波特率发生器的时候T1的值可以为255吗?
 楼主| huangciluo 发表于 2015-3-30 14:40 | 显示全部楼层
598330983 发表于 2015-3-28 09:18
AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 ...

当T1用作波特率发生器的时候T1的值可以为255吗?
 楼主| huangciluo 发表于 2015-3-30 14:45 | 显示全部楼层
gaoyang9992006 发表于 2015-3-29 14:28
估计是四倍的时钟频率吗?

手册上说的计算公式应该不需要再考虑4T或者1T吧?按理说他应该已经就考虑到里面去了的
QQ图片20150330144823.png
gaoyang9992006 发表于 2015-3-31 08:53 | 显示全部楼层
huangciluo 发表于 2015-3-30 14:45
手册上说的计算公式应该不需要再考虑4T或者1T吧?按理说他应该已经就考虑到里面去了的 ...

不需要考虑,直接计算,比如你可以做个定时器,然后定时1秒,看看跟你的手表一样不。
gaoyang9992006 发表于 2015-3-31 08:53 | 显示全部楼层
gaoyang9992006 发表于 2015-3-31 08:53
不需要考虑,直接计算,比如你可以做个定时器,然后定时1秒,看看跟你的手表一样不。 ...

如果一样,就不用考虑那个了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

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