![]() |
讀取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]; } } |