📄 xsa3.c
字号:
/****************************************************************
文件名: xsa3.c
功 能:这是在PC机或工控机上运行的程序,用PC机的COM1(0x3f8)口,
和单片机通讯,波特率9600。通讯步骤:先向单片机发送一字节
地址码(第九位为1),再发送15个字节数据(第九位为0),然
后等待接收单片机发来的43个字节数据,并将接收来的内容在
电脑屏幕上显示出来.
版 本:在Turbo C2.0下编译通过
****************************************************************/
#include "dos.h"
void l_table(void);
void comm1();
void transd();
void view1();
int initserial (long int baud_rate,char parity);
union p{
char v[240];
};
union p c;
int i,n,j,t;
long unsigned int r;
unsigned char tbut[20];
main()
{
comm1();
initserial (9600,'o');
while(1){
delay(15);
outp(0x3f8+3,0x3b); /*按51系列单片机多机通讯要求,发地址时第九位须为1 */
while(!((inp(0x3f8+5))&0x20));
j=1; /* 地址码 */
outp(0x3f8,j);
outp(0x3f8+3,0x2b); /*按51系列单片机多机通讯要求,发数据时第九位须为0 */
for(n=0;n<15;n++) { /*发送15个字节数据 */
while(!((inp(0x3f8+5))&0x20));
outp(0x3f8,tbut[n]);
}
com1();
l_table();
clearv2400();
}
}
com1()
{
n=0;
transd(); /*接收43个字节数据 */
}
void transd()
{
r=0;
i=0;
while((i<43)&&(r++<380000)){
if((inp(0x3f8+5))&0x01) c.v[i++]=inp(0x3f8);
}
}
void l_table(void)
{
clrscr();
l_data_1();
sleep(10);
}
l_data_1()
{
i=0;gotoxy(9,1);view1();
i=6;gotoxy(9,3);view1();
i=12;gotoxy(9,5);view1();
i=18;gotoxy(9,7);view1();
i=24;gotoxy(9,9);view1();
i=30;gotoxy(9,11);view1();
i=36;gotoxy(9,13);view1();
}
void view1()
{
printf("%4x%4x%4x%4x%4x%4x",c.v[i],c.v[i+1],c.v[i+2],c.v[i+3],
c.v[i+4],c.v[i+5]);
}
int initserial (long int baud_rate,char parity)
{
union {
struct {
unsigned char lobyte;
unsigned char hibyte;
}byte;
struct {
unsigned baud_factor;
}whole;
}bytes;
unsigned char x;
outp(0x3f8+3,0x80);
bytes.whole.baud_factor=1843200L/((long)baud_rate<<4);
outp(0x3f8+0,bytes.byte.lobyte);
outp(0x3f8+1,bytes.byte.hibyte);
outp(0x3f8+4,0x03);
outp(0x3f8+1,0x00);
switch(parity) {
case 'e':
case 'E': x=0x2b; break;
case 'o':
case 'O': x=0x3b; break;
case 'n':
case 'N': x=0x07; break;
default: return(-1);
}
outp(0x3f8+3,x);
}
clearv2400()
{
for (t=0;t<91;t++){
c.v[t]=0;
}
}
void comm1()
{
for (t=0;t<15;t++){
tbut[t]=0x00;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -