历史上的今天
返回首页

历史上的今天

今天是:2024年10月16日(星期三)

正在发生

2019年10月16日 | ATmage16A UART实验往PC收发数据

2019-10-16 来源:eefocus

* 【编译环境】: ICCAVR  

* 【函数功能】: 用软件查询方式实现用串口调试软件发数据给avr,而avr则将数据回传给pc.

* 【晶    振】:  8M                

* 【芯    片】:  ATMEGA16A         


*******************************************************/


#include

#include


/***********宏定义*************/

#define  uchar unsigned char 

#define  uint unsigned int

#define fosc 8000000

#define baud 9600

/*******************************************

函数名称: IO口初始化函数

功    能: 实现IO初始化

参    数: 无

返 回 值: 无

/********************************************/

void port_init(void)

{

  DDRD = 0x02;

  PORTD = 0xFF;


}


/***********************************************************************

函数名称: 串口初始化函数

功    能: 实现串口初始化

参    数: 无

返 回 值: 无

/*********************************************************************/

void USART_Init(void)

{

UCSRB=(1<UBRRL=(fosc/16/(baud+1))%256;//设置波特率寄存器

UBRRH=(fosc/16/(baud+1))/256;

UCSRC=(1<}


/*******************************************

函数名称: 串口发送一个字节函数

功    能: 实现串口发送一个字节

参    数: data--串口要发送的一个字节

返 回 值: 无

/********************************************/

void USART_Transmit(uchar data) //发送采用查询方式

{

  while(!(UCSRA&(1<UDR=data;                       //发送数据


}


/*******************************************

函数名称: 串口发送数组函数

功    能: 实现串口发送一个数组

参    数: *ptr--串口要发送的数组的首地址

返 回 值: 无

/********************************************/

void USART_Transmit_string(uchar *ptr)

{

while (*ptr)

  {

    USART_Transmit(*ptr++);

  }

USART_Transmit(0x0D);

USART_Transmit(0x0A);  //结尾发送回车换行

}


/*数据接收,查询方式*/

/*******************************************

函数名称: 串口接收一个字节函数

功    能: 实现串口接收一个字节

参    数: 无

返 回 值: 无

/********************************************/

uchar USART_Receive(void) //接收采用查询方式

{

  while(!(UCSRA&(1<  return UDR;                                      //获取并返回数据

}



/********************************************

函数名称: 主函数

功    能: 实现函数主体功能。

参    数: 无

返 回 值: 无

********************************************/

void main(void)

{

  uchar temp;

  USART_Init();


  while(1)

    {

          temp=USART_Receive();                //等待接收数据

          PORTB = ~temp;                        //显示低电平有效

          USART_Transmit(temp);                //发送收到的数据

        }

}


推荐阅读

史海拾趣

Fairchild (ON Semiconductor)公司的发展小趣事

Fairchild Semiconductor在创立之初就致力于半导体技术的研发与创新。公司推出了多种具有革命性意义的半导体产品,如逻辑门、功率MOSFET、模拟集成电路等,这些产品不仅在当时市场上取得了巨大的成功,更为Fairchild在半导体行业中确立了领导地位。

DINTEK公司的发展小趣事

1957年,被誉为“八叛逆”的八位年轻科学家在罗伯特·诺伊斯的带领下,离开了肖克利半导体实验室,创立了Fairchild Semiconductor公司。这八位科学家,包括诺伊斯、戈登·摩尔等人,后来都成为了硅谷科技产业的领军人物。Fairchild的成立不仅为硅谷的发展奠定了坚实的基础,更为电子行业培养了大量的人才,被誉为“人才摇篮”。

Electro Adapter Inc公司的发展小趣事

随着全球环保意识的日益提高,EA公司积极响应绿色发展的号召,将环保理念融入到产品研发和生产过程中。公司采用环保材料、优化生产工艺、降低能耗等措施,努力减少产品对环境的影响。同时,EA公司还加强了对废弃产品的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

AURORA公司的发展小趣事

AURORA公司深知自动驾驶技术的商业化落地需要与汽车制造商紧密合作。因此,AURORA积极与大众汽车集团、现代汽车等多家知名汽车制造商建立合作关系。通过共同研发和推广自动驾驶技术,AURORA成功帮助这些汽车厂商加速各自自动驾驶汽车的商用计划。这种深度合作不仅提升了AURORA的市场影响力,也为公司的长期发展奠定了坚实基础。

骅讯(Cmedia)公司的发展小趣事

骅讯(Cmedia)公司成立于1991年,起初是一家专注于音频芯片设计的公司。在成立初期,骅讯就凭借其PCI多通道芯片在市场上取得了初步的成功。这种芯片为电脑提供了更为丰富的音频体验,从而帮助骅讯在音频芯片设计领域崭露头角。

Freqtech Ohg公司的发展小趣事

随着全球对环保和可持续发展的重视,Freqtech Ohg公司积极响应,将绿色生产理念融入企业运营的每一个环节。公司引入先进的环保设备和生产工艺,减少生产过程中的能源消耗和废弃物排放。同时,Freqtech还加大了对可再生能源的投资力度,如建设太阳能发电站等,以降低企业运营对环境的影响。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的环保基础。

问答坊 | AI 解惑

选择PAC而不是PLC的20条理由

在建立控制系统时, 系统集成商毫无例外地总是希望能使用比较少的设备来实现更多的功能。他们需要控制系统不仅能处理数字I/O和运动,而且还可以集成用于自动化监控和测试的视觉功能和模块化仪器。此外,控制系统还必须能实时地处理控制算法和分析任 ...…

查看全部问答>

9.60pl5_Patch

9.60pl5_Patch,很好,不过编译代码比正版的冗长些。…

查看全部问答>

“五险一金”的深入解析,上班打工族的一定要看

分享下:https://home.eeworld.com.cn/my/space.php?uid=127036&do=blog&id=28113 相信已工作的大哥大姐们对自己缴纳的社会保险都是非常关注的吧...认真看吧 “耐心看吧” ..  绝对有用     首先,大家应该意识到社会保险 ...…

查看全部问答>

pic单片机的iic通信问题

请教,有会pic16f7x系列单片机的iic通信,其中pic做从机与上位机进行数据的收发.应该怎么编程?…

查看全部问答>

求助测试代码编写

[upload=rar]viewFile.asp?ID=2754[/upload] LIBRARY ieee;                                         ...…

查看全部问答>

如何无线识别无源磁卡

题目说的不明白,正文说:   那天我的卡给ATM吞了,只得去银行取。 进去后,发现要拿票排队的。 但是我发现当前服务的号码是156,而我却是245,我又看了看,可银行里总共就20人左右。   很明显,有上百号人拿了票走了。 这时我发 ...…

查看全部问答>

EE_FPGA基础教程系列 --NO.5-- 串口调试

    Table of Contents   1. 串口通信 ....................................................41.1 串口的常识 ..............................................41.2 串口通信原理 ............. ...…

查看全部问答>

工控

请问一下学工控有前途吗?以及该怎么学工控?我是自动化的。…

查看全部问答>

怎么对不可写的寄存器进行写操作会有不同的效果?

一个51单片机的程序,对外部AD寄存器读写 void AD_Write_Reg( char tx_buff) {           U0DBUF=tx_buff;        // Write   byte to USART0 buffer (transmit data) ...…

查看全部问答>

OS_TCBInit函数的问题

ptcb->OSTCBNext  = OSTCBList; ptcb->OSTCBPrev  = (OS_TCB*)0; if(OSTCBList != (OS_TCB*)0)    ptcb->OSTCBPrev  = ptcb; OSTCBList = ptcb; 谁能解释下最后为什么ptcb赋给OSTCBList?  &nbs ...…

查看全部问答>