打印
[技术问答]

新塘n79e814串口波特率的设置

[复制链接]
1119|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我现在用的芯片是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;

使用特权

评论回复
5
598330983| | 2015-3-28 09:18 | 只看该作者

AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 AUXR1 &= 0xbf;
我觉得,看看头文件或许会有答案。

使用特权

评论回复
6
quray1985| | 2015-3-29 09:12 | 只看该作者
我觉得是初始化处的设置有问题

使用特权

评论回复
7
gaoyang9992006| | 2015-3-29 14:28 | 只看该作者
估计是四倍的时钟频率吗?

使用特权

评论回复
8
huangciluo|  楼主 | 2015-3-30 14:40 | 只看该作者
cylnpy150411 发表于 2015-3-27 11:30
AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 ...

当T1用作波特率发生器的时候T1的值可以为255吗?

使用特权

评论回复
9
huangciluo|  楼主 | 2015-3-30 14:40 | 只看该作者
598330983 发表于 2015-3-28 09:18
AUXR1 |= Uart_Port_Sel;
这个是按位或,AUXR1这个寄存器都不知道是什么值,按位或能对吗。
应该是这样吧 ...

当T1用作波特率发生器的时候T1的值可以为255吗?

使用特权

评论回复
10
huangciluo|  楼主 | 2015-3-30 14:45 | 只看该作者
gaoyang9992006 发表于 2015-3-29 14:28
估计是四倍的时钟频率吗?

手册上说的计算公式应该不需要再考虑4T或者1T吧?按理说他应该已经就考虑到里面去了的

QQ图片20150330144823.png (21.83 KB )

QQ图片20150330144823.png

使用特权

评论回复
11
gaoyang9992006| | 2015-3-31 08:53 | 只看该作者
huangciluo 发表于 2015-3-30 14:45
手册上说的计算公式应该不需要再考虑4T或者1T吧?按理说他应该已经就考虑到里面去了的 ...

不需要考虑,直接计算,比如你可以做个定时器,然后定时1秒,看看跟你的手表一样不。

使用特权

评论回复
12
gaoyang9992006| | 2015-3-31 08:53 | 只看该作者
gaoyang9992006 发表于 2015-3-31 08:53
不需要考虑,直接计算,比如你可以做个定时器,然后定时1秒,看看跟你的手表一样不。 ...

如果一样,就不用考虑那个了

使用特权

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

本版积分规则

1

主题

7

帖子

0

粉丝