- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据采集与处理技术-9章
如何用PC机和PS -2304接口板采集X坐标的坐标位移值? 如何将采集到的BCD 数字信号存入内存和还原成十进制实数? 为了简化问题的讨论,这里只涉及无符号坐标值的采集。 由第2章编码一节可以知道: 在用BCD码表示十进制数时,1 位十进制数用4位二进制码表示,所以6位十进制数须用24(6×4)位二进制码表示。 8255A的A、B、C端口均为8 位,即每个端口一次只能采集8 位二进制码(2位十进制数)。 问题: A口 B口 C口 1 2 3 4 5 6 8255A端口采集数据的分配 对于6 位十进制数,须按图9.6 所示,A口采集十进制数的最高两位、B口采集中间两位、C口采集最低两位。 A口 1 23→PA7 22→PA6 21→PA5 20→PA4 2 22→PA2 21→PA1 20→PA0 23→PA3 B口 3 23→PB7 22→PB6 21→PB5 20→PB4 4 22→PB2 21→PB1 20→PB0 23→PB3 C口 5 23→PC7 22→PC6 21→PC5 20→PC4 6 22→PC2 21→PC1 20→PC0 23→PC3 1 2 3 4 5 6 数显仪插座与PS -2304板连接 选择 JC9 芯片的 PC0 位输入电测头发出的采样脉冲信号。 由于B口采集的8位BCD码中,高4位对应十进制整数,低4位对应十进制小数,因此需要把 8位 BCD 码分开。 如何把 8 位BCD 码分开? 注意:在0~9的范围内,二进制码与BCD码是相同的。 用8255芯片采集BCD码数据并在屏幕上显示还原的十进制实数的过程如下: (1) 把采集到的3组BCD码拆分成6个4位二进制码; (2) 分别存入内存中的6个存储单元; (3) 用Quick BASIC语言的PEEK语句从内存中把数据读入到程序中的变量; (4) 作字符串操作,将采集到的BCD并行数字信号还原成十进制实数。 .MODEL MEDIUM .STACK 256 ;堆栈空间为256 ; . DATA BCD1 DB ? BCD2 DB ? BCD3 DB ? BIN11 DB ? BIN12 DB ? BIN21 DB ? BIN22 DB ? BIN31 DB ? BIN32 DB ? ; .CODE PUBLIC PORT ;说明成公共块 ;以便Quick BASIC程序调用 8088汇编程序如下: PORT PROC FAR PUSH BP ;保存原基址寄存器指针 MOV BP , SP ;把堆栈指针放入基址寄存器 PUSH DS ;保存原数据段地址 PUSH SI PUSH DI SUB AX , AX ;把0放入AX PUSH AX MOV AX , _DATA ;数据段的地址放入DS MOV DS , AX MOV AX , 7000H ;设置段地址为7000H MOV ES , AX MOV DI , 1 ;设置内存起始单元 MOV DX,302H ;设置状态口地址 WAIT1:IN AL,DX ;读入状态信息 TEST AL,01H ;检查状态信息是否为1 JNZ WAIT1 ;若为1,循环等待测头离开前一个采样点 WAIT2:IN AL,DX ;从状态口读入状态信息 TEST AL,01H ;检查状态信息是否为0 JZ WAIT2 ;若为0,循环等待测头接触工件的另一个采样点 8088汇编程序(续一) CALL ACQUDATA ;调用数据采集子程序 CALL HCONVT ;调用数据拆分子程序 CALL STORE ;调用数据存储子程序 POP AX POP DI POP SI POP DS ;恢复原数据段地址 POP BP ;恢复原基址寄存器指针 RET ;退出汇编程序 PORT ENDP ;采集数据 ACQUDATA PROC NEAR PUSH DX
文档评论(0)