完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
本例子是学习AVR的串口通信时候编写的一个简单的串口通信的程序,运行的时候先向串口发送一个数据0x12,然后等待接收,当PC机发送一个数据到单片机,单片机就对这个数据进行加1处理,然后发回到PC机显示。以下是串口通信时候的界面和串口通信的源程序。
本文引用地址:http://www.eepw.com.cn/article/201611/316047.htm /***********************************************/ /************AVR USART串口调试****************/ /************ClimberWin 2008.6.29**************/ /*CPU:ATMEGA32L 4MHZ 外部晶振(熔断位需要先配置好外部晶振)*/ /*说明:AVR串口是通过UDR发送出去的,类似于51单片机的SBUF*/ /*程序功能:能够通过串行数据发送给PC机0x12数据,接收上位机数据并且+1后发送回上位机*/ #include //AVR I/O口定义头文件 #include // 延时头文件调用 #include interrupt.h> // 中断头文件调用 #define uchar unsigned char //引脚定义 #define AVR_RXD 0 //PD0 RXD #define AVR_TXD 1 //PD1 TXD //常量定义 #define BAUDRATE 9600 //波特率定义 uchar UART_MID; //定义一个缓存区数据临时存储地址 /*******************串口接收中断服务程序*************************/ SIGNAL(SIG_USART_RECV) //串口中断服务程序 { UART_MID=UDR; // 从缓冲器中读取数据到UART_MID,临时存放 UDR=UART_MID+1; //+1后发送回去数据 } /****************************************************************/ void init_USART(void)//USART 初始化 { //USART 9600 8, n,1 PC上位机软件(超级终端等)也要设成同样的设置才能通讯 UCSRC = (1/异步,8位数据,无奇偶校验,一个停止位,无倍速 // UBRR=(F_CPU/BAUDRATE/16-1) UBRRL= (F_CPU/BAUDRATE/16-1)%256; UBRRH= (F_CPU/BAUDRATE/16-1)/256; UCSRA = 0x00; //工作在异步正常模式下 U2X=0 UCSRB = (1/使能接收中断,使能接收,使能发送 } int main(void) { DDRD =(1< PORTD =0xFF; init_USART(); //初始化串口 UDR=0X12; //向串口发送数据 sei(); //中断使能(avr/interrupt.h 中调用) while (1) { //等待接收,接收后跳转到中断程序 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1085浏览 2评论
700浏览 1评论
453浏览 0评论
194浏览 0评论
332浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:34 , Processed in 1.150838 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号