📄 新建 文本文档.txt
字号:
#include <AT89X52.H>
unsigned char k,a1=0,t=0;
char code buff[10]={0x77,0x14,0x6d,0x5d,0x1e,0x5b,0x7b,0x15,0x7f,0x5f};
delay()
{
unsigned int i=0x00ff;
while(i--);
}
into()
{
TMOD=(TMOD&0x0f)|0x20;
TH1=0xfd;
SCON=0x50;
TR1=1;
ES=1;
EA=1;
}
chuankou() interrupt 4
{
if(RI==1)
{
RI= 0;
a1++;
if(a1==10)
a1=1;
k=SBUF;
if((k>=48&&k<=57)||(k>=65&&k<=90)||(k>=97&&k<=122))
t=1;
else
t=2;
if(k>=48&&k<=57)
k-=18;
if(k>=65&&k<=90)
k-=24;
if(k>=97&&k<=122)
k-=29;
}
}
xianshi1()
{
P0=buff[a1];
P2_0=0;
delay();
P2_0=1;
P0=0x40;
P2_1=0;
delay();
P2_1=1;
P0=buff[k/10];
P2_2=0;
delay();
P2_2=1;
P0=buff[k%10];
P2_3=0;
delay();
P2_3=1;
}
xianshi2()
{
P0=buff[a1];
P2_0=0;
delay();
P2_0=1;
P0=0x40;
P2_1=0;
delay();
P2_1=1;
P0=0x40;
P2_2=0;
delay();
P2_2=1;
P0=0x40;
P2_3=0;
delay();
P2_3=1;
}
main()
{
into();
while(1)
{
if(t==0||t==1)
xianshi1();
if(t==2)
xianshi2();
}
}
发送窗口源程序:
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#define BUFFLEN 1024
void InitCOM(); //初始化串口
void OpenPort(); //打开串口
void ClosePort(); //关闭串口,释放串口资源
void interrupt(*asyncoldvect)(...);
unsigned char Buffer[BUFFLEN];
int buffin=0;
int buffout=0; //unsigned char ch;
void OpenPort()
{
unsigned char ucTemp;
InitCOM(); //初始化串口
asyncoldvect=getvect(0x0c);
disable(); //关中断
inportb(0x3f8);
inportb(0x3fe);
inportb(0x3fb);
inportb(0x3fa);
outportb(0x3fc,0x08|0x0b);
outportb(0x3f9,0x01);
ucTemp=inportb(0x21)&0xef;
outportb(0x21,ucTemp);
setvect(0x0c,asyncint);
enable(); //开中断
}
void interrupt far asyncint(...)
{
//unsigned char ch;
Buffer[buffin++] = inportb(0x3f8);// 读字符到缓冲区
if (buffin >= BUFFLEN) // 缓冲区满
buffin=0; // 指针复位
outportb(0x20,0x20);
}
void ClosePort(void) //关闭中断
{
disable();
outportb(0x3f9,0x00);
outportb(0x3fc,0x00);
outportb(0x21,inportb(0x21)&0x10);
enable();
setvect(0x0c,asyncoldvect);
}
unsigned char read_char(void)
{
unsigned unch;
if(buffout != buffin)
{
unch = Buffer[buffout];
buffout++;
if(buffout >= BUFFLEN)
buffout=0;
return(unch);
}
else
return(0xff);
}
void main()
{
unsigned char unChar;
short bExit_Flag=0;
OpenPort(); //打开串口
fprintf(stdout, "\n\nReady to Receive DATA\n"
"press [ESC] to quit...\n\n");
do {
if (kbhit())
{
unChar=getch(); /* Look for an ESC key */
switch (unChar)
{
case 0x1B: //ESC的ASCII值为27
bExit_Flag = 1; /* Exit program */
break;
}
}
unChar = read_char(); //从缓冲区中读数
if (unChar != 0xff)
{
fprintf(stdout,"%c",unChar);
}
} while (!bExit_Flag);
ClosePort(); //关闭串口
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -