- 论坛徽章:
- 0
|
原帖由 heefly 于 2008-3-4 17:19 发表 ![]()
小第对计算机底层和硬件的东西不是很了解,在看到一段串口初始化的代码中,
outportb(0x2fb,0x80);
outportb(0x2f8,0x30);
outportb(0x2fb,0x03);
串口地址为0X2F8 ,OUTPORTB 是将值写到一个地址中 ...
对于串口通信:
波特率设置字的计算方法:
b=1843200/(16*baud_rate);
比如你要设置为9600波特率,那么b=1843200/(16*9600)=12(0xc)
这时设置应该是:
mov dx,IOBASE //这里IOBASE 是你的0x2f8或3f8等...
add dx,03h
mov al,80h
out dx,al
mov ax,b // 注意是给了ax,而不是al
mov dx,IOBASE
out dx,al //al of b
add dx,01h
mov al,ah
out dx,al // ah of b
除此之外还有frameformat字节设置:
mov dx,IOBASE
add dx,03h
mov al,00h
out dx,al
mov al,frameformat
and al,07fh
out dx,al
mov dx,IOBASE
add dx,04h
mov al,03h
out dx,al
中断和收发也有很多文献介绍,这里就不重复了
[ 本帖最后由 system888net 于 2008-7-17 18:55 编辑 ] |
|