?? uart2.c
字號:
#include <reg52.H>
#include <stdio.h>
#include <string.h>
sbit dight1=P3^2;
sbit dight2=P3^3;
sbit dight3=P3^6;
sbit key1=P2^0;
sbit key2=P2^1;
unsigned char code dispdata[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned char disbuf[3],rbuf[4],sbuf[25],j;
bit c;
void init(void )
{
SCON = 0x50; //串口方式1,允許接收
TMOD = 0x20; //定時器1 定時方式2
PCON=0x00;
TH1 = 0xfd; //11.0592MHz 波特率 9600
TL1 = 0xfd;
EA=1;
ES=1;
TR1 = 1; //啟動定時器
}
void Delay1()
{
int i;
for(i=0;i<500;i++)
{;}
}
void Display()
{
P1=disbuf[0];
dight1=0;
Delay1();
dight1=1;
P1=disbuf[1];
dight2=0;
Delay1();
dight2=1;
P1=disbuf[2];
dight3=0;
Delay1();
dight3=1;
}
//void Delay(unsigned int a)
//{
// int i;
// for(i=0;i<a;i++)
// {;}
//}
void changedata(unsigned int val)
{
unsigned char a,b;
a=val/100;
if(!a)
{
c=1;
a=10;
}
val=val%100;
b=val/10;
if(c)
{
if(!b)
b=10;
}
val=val%10;
c=0;
disbuf[2]=dispdata[a];
disbuf[1]=dispdata[b];
disbuf[0]=dispdata[val];
}
/*int Hatoi(char ch)
{
if(isdigit(ch)) return ch - '0';
return ch - 'A' + 10;
}
unsigned int Hstod(char *ch, int digit)
{
unsigned int result;
unsigned int i, j, len ;
for(len = 0; len < digit && isxdigit(ch[len]); len++);
result = 0;
for(i = 0; i < len; i++) {
if((j=Hatoi(ch[i])) != 0) result += j*(1<<(4*(len-i-1)));
}
return result;
}
/*int Dtohs(unsigned int val, char *buffer)
{
char tempc[20];
char *bufptr;
unsigned int i;
*(bufptr = &tempc[19]) = 0;
do {
if((i=(val&0x0f)) > 9) *--bufptr = 'A' + i - 10;
else *--bufptr = '0' + i;
} while(val /= 16);
memcpy(buffer, bufptr, val = (tempc + 20) - bufptr);
return val - 1; // DON'T COUNT NULL TERMINATION
}*/
void send()
{
unsigned char i;
EA=0;
for(i=0;i<22;i++)
{
SBUF=sbuf[i];
while(TI==0);
TI=0;
}
EA=1;
}
void send2()
{
unsigned char i;
EA=0;
sprintf(sbuf,"I love you very much!");
for(i=0;i<22;i++)
{
SBUF=sbuf[i];
while(TI==0);
TI=0;
}
EA=1;
}
void reserv() interrupt 4 using 2
{
unsigned char ic,nc=0;
unsigned int lStartTime=0;
EA=0;
for(;;)
{
if(RI)
{
ic = SBUF; //read data from COM3 port
if(ic == '\r' || nc >= 3) break;
rbuf[nc++] = ic;
lStartTime = 0;
RI=0;
}
//Display();
if(lStartTime++ == 10000) break;
}
RI=0;
EA=1;
}
void main()
{
unsigned int i;
P0=0;
P1=0;
P2=0;
init();
while(1)
{
Delay1();
disbuf[0]=dispdata[rbuf[2]-48];
disbuf[1]=dispdata[rbuf[1]-48];
disbuf[2]=dispdata[rbuf[0]-48];
//changedata(1);
Display();
Delay1();
if(key1)
for(i=0;i<20;i++)
Display();
if(key1)
{
/*sbuf[0]='I';
sbuf[1]='l';
sbuf[2]='o';
sbuf[3]='v';
sbuf[4]='e';*/
sprintf(sbuf,"I love you very much!");
send();
}
if(key2)
for(i=0;i<20;i++)
Display();
if(key2)
{
/*sbuf[0]='I';
sbuf[1]='l';
sbuf[2]='o';
sbuf[3]='v';
sbuf[4]='e';*/
sprintf(sbuf,"you are wellcom!");
send();
}
if(rbuf[0]==5)
{
sbuf[0]=6;
sbuf[1]=16;
sbuf[2]=~sbuf[1];
for(j=0;j<3;j++)
{
SBUF=sbuf[j];
while(TI==0);
TI=0;
}
}
//Delay1();
if(rbuf[0]==6)
{
send2();
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -