AVR ATMEGA8(2)

文章目录[隐藏]

串口通信,发送字符串

环境:IAR
板子:AVR ATMEGA8
代码:

#include <stdio.h>
#include <ioavr.h>
#include <inavr.h>
#include <stdlib.h>
#include <sysmac.h>
#include <iomacro.h>
#include <intrinsics.h>
#include <stdarg.h>
#include <iom8.h>

#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

void USART_Init(void)
{
    UCSRB = 0x00; //disable while setting baud rate
    //设置波特率
    //UBRRH = 0;//高四位
    UBRRL = 0x47;//低八位 buad = 9600
    //接收机与发送器使能
    UCSRA = 0X20;//0010 0000
    UCSRB = 0X08;//发送使能(3) 0000 1000
    //设置帧格式:8个数据位,1个停止位
    UCSRC = 0X86;//0000 0110 异步,禁止奇偶校验,1位停止位,8位数据位
     //0010 1101   URSEL为0对UBRRH 更新;若URSEL为1对UCSRC设置更新。
    
}
//TXC 标志位可以用来检验一个数据帧的发送是否已经完成
//在每次发送数据之前 ( 在写发送数据寄存器 UDR 前 )TXC 标志位必须清零。
//程序只是在载入新的要发送的数据前,通过检测 UDRE 标志等待发送缓冲器为空
void USART_Transmit( unsigned char data )
{
    /* 等待发送缓冲器为空 */
    while ( !( UCSRA & (1<<UDRE)) );
    /* 将数据放入缓冲器,发送数据 */
    UDR = data;
}

void str_send(char *s)  //发送字符串
{
    while(*s)
    {
      USART_Transmit(*s);
      s++;
    }
    //USART_Transmit(0x0A);//换行
    USART_Transmit(0x0D);//回车
}

int main( void )
{
    DDRB = 0X01;
    PORTB = 0X00;
    USART_Init();
    while(1)
    {
        str_send("start");
        delay_ms(500);
        //str_send("welcome");  
    }

}

版权声明:本文为CSDN博主「qq_44588244」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44588244/article/details/122496494

生成海报
点赞 0

qq_44588244

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔

拉绳位移传感器在接线时需要注意哪几点?

拉绳位移传感器在接线时需要注意哪几点? 1、拉绳位移传感器在接线时务必确认在电源关闭的情况下进行接线,接线应采用锡焊工艺,各引脚应焊接牢固,避免虚焊情况发生。焊接各引脚时应严格按照传感器厂

实验一 stm32F407VETx点亮流水灯

二、设计指标 使电路板上的8个LED轮流点亮,并按键控制点亮速度。 三、操作 1、CubeMX操作 1.1依据开发板LED引脚设置CubeMX中8个LED的引脚为GPIO_Output模式, 2、按键设置

初试——串口传输文件

一、实验概述 串口传输文件的练习。将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件&#xff