/***********************
将甲机开关状态发送给乙机
************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
uchar key;
void send(uchar state)//数据发送
{
TXREG=state;//发送到寄存器
while(TRMT==1);//等待是否发送结束
}
void USART_init(void)//串口初始化
{
TXEN=1;//选择发送允许控制位
SYNC=0;//选择异步串口通信模式
BRGH=1;//选择高速波特率发生模式
SPEN=1;//启动USART通信模块
SPBRG=25;//波特率9600
TX9=0;//不使用第九位
}
void port_init(void)//端口初始化
{
RBPU=0;//开启弱上拉
TRISB=0XFF;//rb为输入模式
TRISC6=0;//rc为输出模式
}
void main(void)
{
port_init();
USART_init();
while(1)
{
key=PORTB;
send(key);
}
}
/***********************
乙机显示甲机开关状态****
************************/
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
uchar state;
void receieve(void)//数据接收
{
if(RCIF==1);//如果收到数据,则输出到d口
{
state=RCREG;
}
}
void USART_init(void)//串口初始化
{
TXEN=1;//选择发送允许控制位
SYNC=0;//选择异步串口通信模式
BRGH=1;//选择高速波特率发生模式
SPEN=1;//启动USART通信模块
SPBRG=25;//9600
RX9=0;//不接收第九位
CREN=1;//使用连续接收模式
OERR=0;//溢出标志位清零
}
void port_init(void)//端口初始化
{
TRISC7=1;//rc为输入模式
TRISC3=0;
TRISD=0X00;
PORTD=0XFF;
}
void main(void)
{
port_init();
USART_init();
while(1)
{
receieve();
PORTD=state;
}
}