[DemoCode下载] N79E715的串口

[复制链接]
1871|22
 楼主| huangcunxiake 发表于 2017-1-17 22:35 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

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

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

  20. #define Uart_Port_Sel   0x00

  21. #include <stdio.h>
  22. #include "N79E715.h"
  23. #include "Typedef.h"
  24. #include "Define.h"
  25. #include "Common.h"
  26. #include "Delay.h"
  27. #include "Version.h"

  28. UINT8 u8Uart_Data;

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

  41.     while(1);                           // Endless
  42. }
  43. //-----------------------------------------------------------------------------------------------------------
  44. void UART_ISR(void) interrupt 4
  45. {
  46.     if (RI == 1)
  47.     {                                   // If reception occur
  48.         RI = 1;                         // Clear reception flag for next reception
  49.         u8Uart_Data = SBUF;             // Read receive data
  50.         SBUF = u8Uart_Data;             // Send back same data on UART
  51.     }
  52.     else TI = 0;                        // If emission occur
  53.                                         // Clear emission flag for next emission
  54. }
  55. //-----------------------------------------------------------------------------------------------------------


 楼主| 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
  • }
最后就是等待中断,在中断里判断是否接受到了,如果是,写1清零,这个比较奇特。是写1后自动清零。
然后读取缓冲器里的数据,对缓冲器写就等于发送。好神奇。

zhuotuzi 发表于 2017-1-19 11:19 | 显示全部楼层
典型的51串口收发,比现在的ARM什么的串口好用多了。
 楼主| huangcunxiake 发表于 2017-1-19 14:13 | 显示全部楼层
一般情况,51内核的操作都是一样的,而且寄存器好多命名都是一样的
dongnanxibei 发表于 2017-1-23 20:28 | 显示全部楼层
如果arm 的能这么好用就OK啦。
wahahaheihei 发表于 2017-1-23 20:31 | 显示全部楼层
虽然都是51,不过大部分的芯片还会有自己的特点,这些或许寄存器是不同的。
玛尼玛尼哄 发表于 2017-1-23 20:49 | 显示全部楼层
谁能送我一块这个开发板玩玩
稳稳の幸福 发表于 2017-1-24 19:50 | 显示全部楼层
确实操作起来的配置比那个ARM的少多了
wahahaheihei 发表于 2017-1-24 20:49 | 显示全部楼层
谁能给个板子玩玩。
heisexingqisi 发表于 2017-1-25 16:01 | 显示全部楼层
选择的是默认的管脚,难道还可以映射到别的管脚上?
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
598330983 发表于 2017-1-25 19:40 | 显示全部楼层
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) 提
供软件切换串口位置功能。
598330983 发表于 2017-1-25 19:43 | 显示全部楼层
模式 0与外部设备进行同步通信的方式。在该模式下,串行数据由RXD脚进行收发,而TXD 脚用于产生
移位时钟。这种方式下是以半双工的形式进行通信,每帧接收或发送8位数据。数据的最低位被最先发
送或接收,波特率FSYS/12(SM2 (SCON.5) 为 0) 或 FSYS/4 (SM2 为 1). 无论传输或接受 串行时钟将
一直产生.因此串口模式 0 为主机模式
734774645 发表于 2017-1-25 21:50 | 显示全部楼层
内存(memory)16 KB 应用 程序 内嵌 512B SRAM
这个配置应该算是51单片机的精品了。
mintspring 发表于 2017-1-25 22:29 | 显示全部楼层
串口作为调试用的接口非常方便
天灵灵地灵灵 发表于 2017-1-25 22:36 | 显示全部楼层
UART receive a byte and transmit the same byte to PC
天灵灵地灵灵 发表于 2017-1-25 22:37 | 显示全部楼层
没有串口,那必须就用屏了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

3760

帖子

11

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