zoukankan      html  css  js  c++  java
  • ADE5169单片机串口通讯

    ADE5169使用的是51内核,在设置串口波特率的时候与51单片机类似,都是使用定时器来生成波特率,但是ADE5169为了不占用Timer1/2,为每个串口都增加了一个独立的UART定时器,并且配置起来非常简单,不用像59c51一样自己去计算(其实是人家已经帮你算好了),先上代码(我配置的是8bit,115200 Baud)

    //首先将fcore配置为4M,初始化时调用这个函数
    void set_fCORE( void )
    {
    	KYREG = unlock_key_0xa7 ;
    	POWCON = 0x80;
    	KYREG = lock_key_0x00 ;
    }
    
    //然后初始化串口
    void serial1_init( void )
    {
    	SCON = 0X50;
    	SBAUDT = 0X01;		//设置波特率为115200
    	SBAUDF = 0X87;              
    }    
    
    //发送数据
    void Serial1_send_str( char* buf )
    {
    	while( *buf != 0 )
    	{
    		SBUF = *buf;
    		while( TI == 0 );
    		TI = 0;
    		buf++;
    	}
    }
    

     至于SBAUDT和SBAUDF的取值参考数据手册,SBTH和DIV来自SBAUDT

    至于SBAUDT和SBAUDF的取值是怎么回事,手册里也有些,搜索文档“UART Timer Generated Baud Rates”这个章节就是具体介绍这两个寄存器取值的,具体公式这里就不深究了

  • 相关阅读:
    windows x64 软件约定
    windows 64位 系统非HOOK方式监控进程创建
    win 64 ring0 inline hook
    win 64 Shadow ssdt hook
    win 64 SSDT HOOK
    win 64 文件操作
    win64 驱动内存基本操作
    windbg符号表问题
    Windows 64位驱动编程基础与win64 ssdt
    基础知识
  • 原文地址:https://www.cnblogs.com/isyefeng/p/13202848.html
Copyright © 2011-2022 走看看