吉林省经济管理干部学院
#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