110 likes | 253 Views
任务 9. 9-2 、双机双工通信系统设计. 任务内容. 一、双机双工通信系统设计分析 二、单机 A 发送接收程序设计 三、单机 B 接收发送程序设计 四、功能验证、仿真. 一、双机双工通信系统设计分析. 功能: 本项目通过两片单片机之间以双工通信的方式设计系统,两片单片机通过采集 PB 端口上的按键数值,以查询方式通过 TXD 发送出去,接收单片机以中断方式进行接收,在中断接收服务程序中,判断接收的数据是否正确,如果正确则接收单片机 A 对指定 LED 的 IO 端口取反操作 5 次,说明控制系统设计正确。. 二、单机 A 发送程序设计. 1 、串口初始化.
E N D
任务9 9-2、双机双工通信系统设计
任务内容 一、双机双工通信系统设计分析 二、单机A发送接收程序设计 三、单机B接收发送程序设计 四、功能验证、仿真
一、双机双工通信系统设计分析 功能:本项目通过两片单片机之间以双工通信的方式设计系统,两片单片机通过采集PB端口上的按键数值,以查询方式通过TXD发送出去,接收单片机以中断方式进行接收,在中断接收服务程序中,判断接收的数据是否正确,如果正确则接收单片机A对指定LED的IO端口取反操作5次,说明控制系统设计正确。
二、单机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);//使能发送、使能中断接收 }}
2、发送一个字符 void usart_send_one_byte(unsigned char dat) { while(!(UCSRA&(1<<UDRE))); //等待发送缓冲器为空 UDR=dat; }
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); } }}
三、单机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; }}
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); }}
2、发送一个字符 void usart_send_one_byte(unsigned char dat) { while(!(UCSRA&(1<<UDRE))); //等待发送缓冲器为空 UDR=dat; }