打印口与单片机联机程序
以下这段程序在DOS下是完全可以运行并得到正确的结果,但在WIN98中则不稳定(可以传送,只是传送的一半就会中止传送,得不到完全的正确结果)。
当然WIN98中也是支持直接汇编写硬件端口的(当然不能在NT等系统中)
其实这个原因大家可能都知道:是CPU太快了,单片机来不及接受,但是同样的硬件,为何在DOS下非常稳定的得到结果,而在WIN98中不稳定,传送的中途就停止而不能继续传送。有网友说:增加延时的时间(把delay(X)函数的X值最大,这样我试过200多次了,并改了又改都不能通过)。
也听有人说过用中断服务程序,所以请高手指点,或者如何用中断服务程序,
改下这两种直接用汇编的函数,相应于C语言中的INP与OUTP函数,也相当于INPORT,
OUTPBORT函数,我也试过直接使用C自带的INP等函数,更稳定的传送通过,所以我放弃使用C原来的端口操作函数。
请高手想个不一样的方法(我没有试过的,比如使用中断函数如何写)
//从I/O口中读一个字节:
int in_p(unsigned short port)
{
unsigned short result;
_asm
{
mov dx,port;
in ax,dx;
mov result,ax;
}
return result;
}
//向I/O口中写一个字节:
int out_p(unsigned short port,unsigned short databyte)
{
unsigned short result;
for(;

{
if((in_p(0x379)&0x0040)==0x00)
{
_asm
{
mov dx,port;
mov ax,databyte;
out dx,ax;
mov result,ax;
}
}
else //if((in_p(0x379)&0x40)==0x40)
{
return result;
}
}
}