打印
[DemoCode下载]

N79E715的串口

[复制链接]
1519|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangcunxiake|  楼主 | 2017-1-17 22:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technology Corp.
//  E-mail: MicroC-8bit@nuvoton.com
//***********************************************************************************************************
//  Application : UART Function
//  RXD => P1.1 ; TXD => P1.0 (default)
//
//  Output : UART receive a byte and transmit the same byte to PC
//***********************************************************************************************************

//------------------------- <<< Use Configuration Wizard in Context Menu >>> --------------------------------
//     <o0.6> UART pin Select
//          <0=> Select P1.0, P1.1 as UART pin(default)
//          <1=> Select P2.6, P2.7 as UART pin(28 pin only)
//-------------------------------- <<< end of configuration section >>> -------------------------------------

#define Uart_Port_Sel   0x00

#include <stdio.h>
#include "N79E715.h"
#include "Typedef.h"
#include "Define.h"
#include "Common.h"
#include "Delay.h"
#include "Version.h"

UINT8 u8Uart_Data;

//-----------------------------------------------------------------------------------------------------------
void main (void)
{
    AUXR1 |= Uart_Port_Sel;             // Select P10/P11 as UART pin(default)
    InitialUART0_Timer1(9600);          // 9600 Baud Rate [url=home.php?mod=space&uid=72445]@[/url] 11.0592MHz
    Show_Version_Number_To_PC();
    printf ("\n*===================================================================");
    printf ("\n*  Name: N79E715 Series UART Sample Code.");
    printf ("\n*===================================================================");
    printf ("\n UART receive a byte and transmit the same byte to PC.\n");
    ES = 1;                             // Enable serial interrupt
    EA = 1;                             // Enable global interrupt

    while(1);                           // Endless
}
//-----------------------------------------------------------------------------------------------------------
void UART_ISR(void) interrupt 4
{
    if (RI == 1)
    {                                   // If reception occur
        RI = 1;                         // Clear reception flag for next reception
        u8Uart_Data = SBUF;             // Read receive data
        SBUF = u8Uart_Data;             // Send back same data on UART
    }
    else TI = 0;                        // If emission occur
                                        // Clear emission flag for next emission
}
//-----------------------------------------------------------------------------------------------------------


沙发
huangcunxiake|  楼主 | 2017-1-17 22:36 | 只看该作者
AUXR1 |= Uart_Port_Sel;             // Select P10/P11 as UART pin(default)
    InitialUART0_Timer1(9600);          // 9600 Baud Rate @ 11.0592MHz
这个初始化也是够简单的,没有设置那个数据位停止位什么的。

使用特权

评论回复
板凳
huangcunxiake|  楼主 | 2017-1-17 22:37 | 只看该作者
通过的是硬件收发器实现,当然要用中断了。
    ES = 1;                             // Enable serial interrupt
    EA = 1;                             // Enable global interrupt
这里两个开启相应的中断。

使用特权

评论回复
地板
huangcunxiake|  楼主 | 2017-1-17 22:38 | 只看该作者
  • void UART_ISR(void) interrupt 4
  • {
  •     if (RI == 1)
  •     {                                   // If reception occur
  •         RI = 1;                         // Clear reception flag for next reception
  •         u8Uart_Data = SBUF;             // Read receive data
  •         SBUF = u8Uart_Data;             // Send back same data on UART
  •     }
  •     else TI = 0;                        // If emission occur
  •                                         // Clear emission flag for next emission
  • }
[size=13.3333px]最后就是等待中断,在中断里判断是否接受到了,如果是,写1清零,这个比较奇特。是写1后自动清零。
[size=13.3333px]然后读取缓冲器里的数据,对缓冲器写就等于发送。好神奇。

使用特权

评论回复
5
zhuotuzi| | 2017-1-19 11:19 | 只看该作者
典型的51串口收发,比现在的ARM什么的串口好用多了。

使用特权

评论回复
6
huangcunxiake|  楼主 | 2017-1-19 14:13 | 只看该作者
一般情况,51内核的操作都是一样的,而且寄存器好多命名都是一样的

使用特权

评论回复
7
dongnanxibei| | 2017-1-23 20:28 | 只看该作者
如果arm 的能这么好用就OK啦。

使用特权

评论回复
8
wahahaheihei| | 2017-1-23 20:31 | 只看该作者
虽然都是51,不过大部分的芯片还会有自己的特点,这些或许寄存器是不同的。

使用特权

评论回复
9
玛尼玛尼哄| | 2017-1-23 20:49 | 只看该作者
谁能送我一块这个开发板玩玩

使用特权

评论回复
10
稳稳の幸福| | 2017-1-24 19:50 | 只看该作者
确实操作起来的配置比那个ARM的少多了

使用特权

评论回复
11
wahahaheihei| | 2017-1-24 20:49 | 只看该作者
谁能给个板子玩玩。

使用特权

评论回复
12
heisexingqisi| | 2017-1-25 16:01 | 只看该作者
选择的是默认的管脚,难道还可以映射到别的管脚上?

使用特权

评论回复
13
598330983| | 2017-1-25 19:38 | 只看该作者
N79E715为高速4T 8051单片机系列,其特点为提供工业温度规格,宽电压工作范围 2.4V 至 5.5V、22.1184 MHz内建RC晶振(1%精确度)、并内建Data Flash、欠压检测、高抗干扰能力(8KV ESD/4KV EFT)、支持在线系统编程(ISP)和在线电路编程(ICP),提供TSSOP28、TSSOP20和SOP16选择。

应用领域 :

门禁系统/警报器、温度传感设备、iPod 充电音箱底座(iPod docking)、投影机、DVD机、电子秤及LED/照明控制等等。

关键特性:

内核(core)
4T 8051 微 处理器
工件频率 可达 24 MHz
工作电压 : 2.4V to 5.5V
工作温度 : -40 ℃ ~85 ℃
内存(memory)
16 KB 应用 程序
内嵌 512B SRAM
可配置 的 Data Flash
支持 在线系统编程 ISP(In-System Programming)
支持 在线电路编 ICP(In-Circuit Programming)
模数转换器(ADC)
提供 8 通道
10 位分辨率
可达 150 k SPS ( 每秒采样率 )
通讯接口(connectivity)
最多 2 通道 SPI ( 可达 1.25 MHz)
一 组 I²C ( 可达 400 kHz)
最多 2 通道 UART
时钟控制(clock control)
外部 晶振 4 to 2 4 MHz
常温 ,5V 下± 1% 22.1184 MHz 内 RC 晶振
内 RC 晶振 可配置 22.1184 或 11.0592 M Hz

使用特权

评论回复
14
598330983| | 2017-1-25 19:40 | 只看该作者


使用特权

评论回复
15
598330983| | 2017-1-25 19:40 | 只看该作者
N79E715系列提供一组,带自动地址识别和桢错误检测功能的,全双工串口 UART (全双工传输和接
收),可运行模式 1、2 和 3。该串行口提供同步及异步通信方式。在同步模式下串行口产生时钟并以半
双工的方式工作。在异步模式下,能以全双工的方式工作,即可以同时收发数据。发送,接收寄存器均
用SBUF来访问。对SBUF的写是发送数据,从SBUF读是读取数据。串行口能以4种不同的方式工作,
使用串口功能前,P3.0 和 P3.1 (RXT 和 TXD) 需置 1。串口位置和软件更改UART_Sel (AUXR1.6) 提
供软件切换串口位置功能。

使用特权

评论回复
16
598330983| | 2017-1-25 19:43 | 只看该作者
模式 0与外部设备进行同步通信的方式。在该模式下,串行数据由RXD脚进行收发,而TXD 脚用于产生
移位时钟。这种方式下是以半双工的形式进行通信,每帧接收或发送8位数据。数据的最低位被最先发
送或接收,波特率FSYS/12(SM2 (SCON.5) 为 0) 或 FSYS/4 (SM2 为 1). 无论传输或接受 串行时钟将
一直产生.因此串口模式 0 为主机模式

使用特权

评论回复
17
734774645| | 2017-1-25 21:50 | 只看该作者
内存(memory)16 KB 应用 程序 内嵌 512B SRAM
这个配置应该算是51单片机的精品了。

使用特权

评论回复
18
mintspring| | 2017-1-25 22:29 | 只看该作者
串口作为调试用的接口非常方便

使用特权

评论回复
19
天灵灵地灵灵| | 2017-1-25 22:36 | 只看该作者
UART receive a byte and transmit the same byte to PC

使用特权

评论回复
20
天灵灵地灵灵| | 2017-1-25 22:37 | 只看该作者
没有串口,那必须就用屏了,

使用特权

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

本版积分规则

205

主题

3487

帖子

10

粉丝