- //双机通信不需要安装虚拟端口软件 ,两机通过TXD <==> RXD 直接通信。
- // 同一个程序,程序包含了收和发。
- //将这个程序直接考到两个单片机上,把端口改一下就可以了嘛
- #include<reg51.h>
- #define uchar unsigned char;
- #define uint unsigneed int;
- uchar a0,a1,a2,a3,temp,i;
- uchar code tab[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
-
- sbit P2_0=P2^0;
- sbit P2_1=P2^1;
- sbit P2_2=P2^2;
- sbit P2_3=P2^3;
- void delay(int ms)
- {
- while(ms--)
- for(i=0;i<123;i++);
- }
- void initUART()
- {
- TMOD=0x20; //M1=1,M0=0 定时器1工作方式2(定时常数重装,8 位)
- SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允许接收
- TH1=0xfd; //晶振11.0592时,波特率9600
- TL1=TH1; //TL1计数,溢出后,TH1值送入TL1
- EA=1; //开总中断
- ES=1; //允许串口中断
- TR1=1; //启动定时器1
- }
- void disp()
- {
- a0=temp%2;
- a1=temp/2%2;
- a2=temp/2/2%2;
- a3=temp/2/2/2%2;
- P2_0=0;
- P0=tab[a0];
- delay(1);
- P2_0=1;
- P2_1=0;
- P0=tab[a1];
- delay(1);
- P2_1=1;
- P2_2=0;
- P0=tab[a2];
- delay(1);
- P2_2=1;
- P2_3=0;
- P0=tab[a3];
- delay(1);
- P2_3=1;
- }
- void main()
- {
- initUART(); //调用串口初始化子程序
- while(1)
- {
- disp();
- SBUF=P1;
- while(TI==0);
- TI=0;
- }
- }
- void UARTinterrupt() interrupt 4
- {
- if(RI)
- {
- RI=0;
- temp=SBUF;
- }
- }
复制代码 |