吉林省经济管理干部学院
#define uint unsigned int sbit P2_6=P2^6
void init_serialcomm(void) {
SCON=0x50; TMOD=0x20; PCON=0x80; TH1=250; TL1=250; TR1=1; }
Void send_addr( unsigned char *buf) { /* 发送从机地址 */ TI = 0; TB8 = 1; // 发送地址帧 SBUF = addr; while(!TI); TI = 0;
If(tmp=ox00) {
Send data(buf); // 如果是广播地址,直接发送数据 } /* 接收从机应答 */ RI = 0; while(!RI); tmp = SBUF; RI = 0; }
void send_data(unsigned char *buf) { unsigned char len; // 保存数据长度 unsigned char ecc; // 保存校验字节 len = strlen(buf); // 计算要发送数据的长度 ecc = len; // 开始进行校验字节计算 /* 发送数据长度 */ TI = 0; TB8 = 0; // 发送数据帧 SBUF = len; // 发送长度 while(!TI); TI = 0;
49
吉林省经济管理干部学院
/* 发送数据 */ for(i=0; i Main() { Init_serialcomm(); while(1) { if (scan_key()) { Delayms(10); If(scan_key()) { Key_v=key_s; // 保存键值 } } } (2) 从机部分 #include #include #define uchar unsigned char #define uint unsigned int sbit P3_7=P3^7 sbit P1_3 = P1 ^ 3; sbit P3_0 = P3 ^ 0; sbit P3_1 = P3 ^ 1; uint8 scale_0; // 用于保存占空比中输出0的时间份额,总共10份 50