1 / 11

9-2 、双机双工通信系统设计

任务 9. 9-2 、双机双工通信系统设计. 任务内容. 一、双机双工通信系统设计分析 二、单机 A 发送接收程序设计 三、单机 B 接收发送程序设计 四、功能验证、仿真. 一、双机双工通信系统设计分析. 功能: 本项目通过两片单片机之间以双工通信的方式设计系统,两片单片机通过采集 PB 端口上的按键数值,以查询方式通过 TXD 发送出去,接收单片机以中断方式进行接收,在中断接收服务程序中,判断接收的数据是否正确,如果正确则接收单片机 A 对指定 LED 的 IO 端口取反操作 5 次,说明控制系统设计正确。. 二、单机 A 发送程序设计. 1 、串口初始化.

oceana
Download Presentation

9-2 、双机双工通信系统设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 任务9 9-2、双机双工通信系统设计

  2. 任务内容 一、双机双工通信系统设计分析 二、单机A发送接收程序设计 三、单机B接收发送程序设计 四、功能验证、仿真

  3. 一、双机双工通信系统设计分析 功能:本项目通过两片单片机之间以双工通信的方式设计系统,两片单片机通过采集PB端口上的按键数值,以查询方式通过TXD发送出去,接收单片机以中断方式进行接收,在中断接收服务程序中,判断接收的数据是否正确,如果正确则接收单片机A对指定LED的IO端口取反操作5次,说明控制系统设计正确。

  4. 二、单机A发送程序设计 1、串口初始化 void usart_send_init(void) { void usart_send_init(void) { UCSRB=0X00; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//设置UCSRC寄存器 8位数据传送 1位停止位 异步操作 UBRRH=0X00;//1MHZCRYSTAL 4800波特率 UBRRL=12; UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);//使能发送、使能中断接收 }}

  5. 2、发送一个字符 void usart_send_one_byte(unsigned char dat) { while(!(UCSRA&(1<<UDRE))); //等待发送缓冲器为空 UDR=dat; }

  6. 3接收一个字符 #pragam interrupt_handler usart_receive:iv_USART0_RXC void usart_receive() { unsigned char i; if(UDR==1) { for(i=0;i<5;i++) { PORTA^=(1<<PA0); delay_nms(20); } }}

  7. 三、单机B接收程序设计 1、串口初始化 void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x0C; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; }}

  8. 2接收一个字符 #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC void uart0_rx_isr(void) { unsigned char j; if(UDR==1) for(j=0;j<4;j++) { PORTA^=(1<<PA0); delay_nms(500); }}

  9. 2、发送一个字符 void usart_send_one_byte(unsigned char dat) { while(!(UCSRA&(1<<UDRE))); //等待发送缓冲器为空 UDR=dat; }

  10. 四、功能验证、仿真

More Related