第一范文网 - 专业文章范例文档资料分享平台

基于8251双机通信设计 - 图文

来源:用户分享 时间:2025/11/16 4:34:13 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

JMP Exit

InitPCI2: MOV AH,0B1H

MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV SI,0 INT 1AH JNC InitPCI3 ;是否存在Star PCI9052板卡

LEA DX,msg1 JMP

InitPCI1

InitPCI3: MOV DI,PCIBAR3

MOV AH,0B1H MOV AL,09H INT 1AH

;读取该卡PCI9052基地址

JNC InitPCI4 LEA DX,msg2 JMP

InitPCI1

InitPCI4: AND

CX,0FFFCH

MOV IO_Bit8_BaseAddress,CX

RET

InitPCI

ENDP

ModifyAddress PROC NEAR ADD CTL_ADDR,CX ADD DATA_ADDR,CX ADD W_8253_T0,CX ADD W_8253_C,CX

RET ModifyAddress ENDP Exit: MOV AH,4CH

INT 21H

END START

20

2、双机通信接收机源程序 .MODEL

TINY

;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_ID EQU Device_ID EQU

.STACK 100 .DATA

;控制字或状态字 ;读写数据

10EBH ;厂商ID号 8376

;设备ID号

Receive_Buffer EQU 3000H

CTL_ADDR DW 00F1H W_8253_T0 DW 00B0H W_8253_C DW 00B3H

IO_Bit8_BaseAddress DW msg0 msg1 msg2

?

DATA_ADDR DW 00F0H

;计数器0地址 ;控制字

DB 'BIOS不支持访问PCI $' DB '找不到Star PCI9052板卡 $' DB '读8位I/O空间基地址时出错$'

//Receive_Buffer DB 10 DUP(0) ;接受缓冲器

.CODE

MOV DS,AX MOV ES,AX NOP

CALL InitPCI

START: MOV AX,@DATA

CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址

CALL INIT_8253 CALL INIT_8251

MOV CX,10

;OUT1输出频率为1S的方波

CALL Receive_Group CALL IfExit JZ START1

21

START1:

JMP Exit

INIT_8253 PROC NEAR MOV DX,W_8253_C MOV AL,37H

;定时器0,方式3

OUT DX,AL

MOV DX,W_8253_T0 MOV AL,26H

;BCD码26(2000000/26)=16*4800 OUT DX,AL MOV AL,0 OUT DX,AL

RET

INIT_8253 ENDP INIT_8251 PROC NEAR CALL RESET_8251 MOV DX,CTL_ADDR MOV AL,7EH ;波特率系数为16,8个数据位 OUT DX,AL ;一个停止位,偶校验 CALL DLTIME

;延时

MOV AL,14H

;只允许接收数据,清错误标志,

OUT DX,AL CALL DLTIME

RET

INIT_8251 ENDP

;8251的复位,对8251的控制口进行一次写入后须有恢复时间 Reset_8251 PROC NEAR

MOV DX,CTL_ADDR

MOV AL,0 OUT DX,AL

;向控制口写入\ CALL DLTIME ;延时,等待写操作完成 OUT DX,AL ;向控制口写入\ CALL DLTIME ;延时 OUT DX,AL ;向控制口写入\

CALL DLTIME

;延时

MOV AL,40H

;向控制口写入复位字40H

OUT DX,AL

22

CALL DLTIME

RET

Reset_8251 ENDP

;接受一组数据,CX--接受数目 Receive_Group PROC NEAR MOV DI,Receive_Buffer

Receive_Group1:

CALL Receive_Byte

STOSB

MOV AH,06H

MOV BX,3000H

INT 10H ;显示中断调用 LOOP Receive_Group1

RET

Receive_Group ENDP ;接受一个字节 Receive_Byte PROC NEAR

MOV DX,CTL_ADDR Receive_Byte1: IN AL,DX

;读入状态

TEST AL,02H JZ Receive_Byte1 ;有数据吗?

MOV DX,DATA_ADDR

;有

IN AL,DX

RET

Receive_Byte ENDP ;延时 DLTIME

PROC NEAR

PUSH AX PUSH DX MOV DX,1 ;延时1ms MOV AH,0FFH

;星研公司提供的软中断

INT 21H POP DX POP AX

RET

DLTIME

ENDP

23

搜索更多关于: 基于8251双机通信设计 - 图文 的文档
基于8251双机通信设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5jei625trg0mq5e7e8j2_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top