1、 多机通信系统 单片机 a,b,c. a 为主机, bc 为从机。 a 上有一个外部中断 0 输入, 按第一次 a 的两个 LED 亮 500ms, 再按一下, b 机的两个 LED 灯亮 500ms,第三次按下 c 机的两个 LED 灯亮 500ms,然后周而复始。两个数码管分别显示 0/1/2, 和 abc(bc 由从机反馈) /* 主从通信基本步骤: 1 主机从机初始化为方式 2 或者 3,从机都置 SM2=1,允许中断 2 主机置 TB8=1,发送从机地址 3 所有从机均接收主机发送要寻址的从机地址 4 被寻址的从机确认地址后,置本机 SM2=0,向主机返回地址,供主机核对 5 核对无
2、误后,主机向被寻址的从机发送命令,通知从机接受或者发送数据。 6 本次通信结束后,主从机重置 SM2=1,主机可再对其他从机寻址 */ * 主机 a: * #include #define uchar unsigned char #define uint unsigned int uchar leddata=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00; uchar Mode; sbit P10 = P10; sbit P13 = P13; sbit P17 =
3、 P17; sbit P20 = P20; sbit P21 = P21; void UART_init() TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; SCON = 0xd0; ES = 1; EX0 = 1; IT0 = 1; /INT0 下跳触发 EA = 1; TI = 0; void DelayMs(int ms) uchar i; while(ms-) for(i=0; i120; i+); void putc_to_SerialPort(uchar c) SBUF = c; while(TI = 0); TI = 0; void M
4、asterControl(unsigned char Addr, unsigned char Comd) TB8 = 1; putc_to_SerialPort(Addr); DelayMs(50); TB8 = 0; putc_to_SerialPort(Comd); DelayMs(50); Ex0_int(void) interrupt 0 P0 = leddataMode; P20 = 0; if(Mode = 0) P2 = leddata10; P10 = 0; P13 = 0; DelayMs(500); P10 = 1; P13 = 1; / MasterControl(b,C