END;
说明:PCA[9..0]是PC104的地址信号,A[15..14]是单片机的地址信号,PC104用到端口地址220H和221H。
3 通信软件设计
PC104是基于ISA总线的,在系统软件设计中要防止地址冲突。PC104中使用A0~A9地址位来表示I/O端口地址,即可有1024个口地址,前512个供系统板使用,后512个供扩充插槽使用,当A9=0时表示为系统板上的口地址;当A9=1时表示扩充插槽接口卡上的口地址[2]。因为本系统中采用保留的口地址220H和221H,保证不会发生地址冲突。
在本程序中,PC104采用查询方式接收数据,单片机采用中断方式接收数据。
#define pcreadwrite 0x220 ;PC104读写数据口地址
#define pcrdstate 0x221 ;PC104查询状态口地址
PC104写数据函数:
Void pcwrite(int port,unsigned char ch)
{ outportb(pcreadwrite,ch);
while ((inportb(pcrdstate)&0x02)!=0x02)
;等待单片机读走数据
{ }
}
单片机读子程序:
MCUR:MOV DPTR,#400H
MOVX A,@DPTR
RETI
PC104读数据函数:
Unsigned char pcread(int port)
{ while ((inportb(pcrdstate)&0x0!=0x01)
;等待单片机写数据
{ }
return inportb(pcreadwirte);
}
单片机写子程序:
MCUWR:MOV DPTR,#8000H
MOVX @DPTR,A
;等待PC104读写数据
RET