TXD和RXD怎么寫才能發送接收
#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit beep=P1^5;
sbit a=P2^0 ;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[10]={
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f, //9
};
void delay(u16 i)
{
while(i--); //延時函數,i=1時,大約延時10us
}
void main()
{
u16 L0=0,L1=0,L2=0,L3=0,d,n=0,w=0;
TMOD|=0X01; // 01定時 04計數 選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0X3C; //給定時器賦初值,定時1ms
TL0=0XB0;
TR0=1; //打開定時器
if(TXD==0)
{
RXD=L0&L1&L2&L3;
}
if(w==0)
{
delay(100);
if(a==1)
{
L0++;
while(1)
{
if(L0==10)
{
L0=0;
L1++;
}
if(L1==10)
{
L1=0;
L2++;
}
if(L2==10)
{
L2=0;
L3++;
}
if(L3==10)
{
L3=0;
L0=0;L1=0;L2=0;
}
if(L2==9)
{
beep = 1;
}
for(d=0;d<4;d++)
{
switch(d)
{
case(0):
LSA=0;LSB=0;LSC=0;P0=smgduan[L0]; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0;P0=smgduan[L1]; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0;P0=smgduan[L2]; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0;P0=smgduan[L3]; break;//顯示第3位
}
delay(100);
P0=0x00; //消隱
}
if(a==1)
delay(10000);
L0++;
if(TF0==1)
{
TF0=0;
TH0=0X3C; //重置定時常數
TL0=0XB0;
n++;
if(n>200)
{
n=0;
w=1;
}
if(w==1)
a=0;
}
}
}
}
}
|