读取P1口的值a,通过串口传给第二个52,令P2等于a。 |
单片机U1发送数据参考程序如下: ORG 0 LJMP MAIN ORG 23H CLR TI MOV A,P1 MOV SBUF,A RETI ORG 30H MAIN: MOV SCON,#40H;串行口方式1,禁止接收 MOV TMOD,#20H MOV TL1,#0E0H MOV TH1,#0E0H SETB TR1 MOV IE, #90H MOV A,P1 MOV SBUF,A SJMP $ END 单片机U2接收参考程序如下: ORG 0 LJMP MAIN ORG 23H CLR RI MOV A,SBUF MOV P2,A RETI ORG 30H MAIN: MOV SCON,#50H;串行口方式1,允许接收 MOV TMOD,#20H MOV TL1,#0E0H MOV TH1,#0E0H SETB TR1 MOV IE, #90H SJMP $ END |
#include<reg51.h> #define uchar unsigned char #define uint unsigned int uint num,i=0;//定义变量初始值为0 uchar code tab[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};//段码 void main() { TMOD=0x01;//采用T0方式,将M1置0,M0置1,是方式一的定时器 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;// 总中断允许 ET0=1;//开启定时器0中断 TR0=1;//定时器/计数器启动 SCON=0x00;//设置串行口工作方式为方式0 SBUF=0x03;//设置数码管初始值 while(1);//等待中断 } voidt0_() interrupt 1 //中断函数 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==10) { num=0; i++; if(i==10) { i=0; } SBUF=tab[i]; } } |