《微机系统及接口实验——利用两台TPC-ZK微机原理实验平台实现两机之间通信13144.pdf》由会员分享,可在线阅读,更多相关《微机系统及接口实验——利用两台TPC-ZK微机原理实验平台实现两机之间通信13144.pdf(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-.-.可修编.微机系统与接口实验报告 班级:组员:-.-.可修编.一、实验目的 通过本实验了解串行通信原理;理解计算机软件、硬件如何配合工作,如何对计算机进行功能扩展;学会一般接口电路设计过程和驱动代码编写方法;学会如何进行软件、硬件调试。二、实验容(1)实验任务 利用两台 TPC-ZK 微机原理实验平台实现两机之间通信。(2)实验要求 在实验台实现:设计硬件电路并在实验台上完成连接;双机通信时,一方用键盘或 AD 采集模拟信号,在另一方机器展示;完成程序的编写、调试工作。三、实验原理 分析设计思想,绘制实验原理图、流程图。(1).实验原理图 键盘扫描原理图-.-.可修编.按上图接线,825
2、5C 口接键盘(8255 的 C0C3 接键盘的列 0列 3,C4C7 接键盘的行 0行 3),片选 CS 接大板上地址译码输出的 288h28fh。识别键盘上的闭合键,通过采用行扫描法(行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止)。数码管显示原理图 电路原理如上图。8255CS 接地址译码输出的 288h28fh。用 20 芯扁平电缆连接实验板与主实验台上的 20 芯扩展插座。8255 的 A 口(PA0PA6)与七段数码管的段码输入端 a,8255的 B 口(PB0PB5)
3、与位码驱动输入端已连好,不用再接线。-.-.可修编.(2).流程图 开始 初始化 8251、8254 和 8255 芯片 置 8255A 控制字为 81H:PC0PC3输入,PC4PC7输出 读入 C 口数据,判断小键盘上是否有键按下 调用键盘扫描子程序,读入小键盘的按键值 向 8251 数据口写入数据并发送 读串行接口芯片 8251状态口数据,判断其是否可以传送数据 读 8251 状态口数据,判断其是否收到数据 调数码管显示子程序,输出数据 是 是 是 否 否 否-.-.可修编.四、实验程序 程序清单及相关注释:DATA SEGMENT DATA ENDS STACK SEGMENT STA
4、CK DW 100H DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ;实验机器指定的端口地址 PORTA EQU 288H ;8255 端口地址 PORTB EQU 289H PORTC EQU 28AH TIMER EQU 280H ;8254 的端口地址 START:;初始化 8251 MOV DX,2B9H ;控制口地址为 2B9H MOV AL,0 OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,40H ;IR(D6)置 1(40H:01000000)使 8251A 复位(部复位)OUT DX,AL
5、;方式控制字必须在复位后首先写入 MOV AL,0CFH ;异步传送;帧的格式,8 位字符,2 个停止位,无校验;1200Baud/s,波特率因子 64 OUT DX,AL MOV AL,27H ;写入命令控制字,允许发送和接受,并使 RTS 输出为低 OUT DX,AL ;初始化 8254 计数器 MOV AL,00110110B;方式 3,作为方波发生器 MOV DX,TIMER+3 OUT DX,AL MOV AX,52 ;频率 19.2Khz MOV DX,TIMER OUT DX,AL ;写入计数器初值的低字节 MOV AL,AH OUT DX,AL ;写入计数器初值的高字节 -.-
6、.可修编.;初始化 8255,工作方式 0,A 口输出,C 口高位输出,低位输入,B 口输出;A 口输出段码;C 口用于检测键盘输入 MOV DX,PORTA+3 MOV AL,81H ;10000001 OUT DX,AL ;从键盘获取输入 X1:MOV AL,00h MOV DX,PORTC OUT DX,AL ;00-C 口,PC0 置 0 WAIT:IN AL,DX ;读入列线值 AND AL,0FH ;只要低四位 CMP AL,0FH ;无按键按下,则跳转至 X2,判断是否收到数据 JZ X2 CALL DELAY MOV BL,4 ;行数 MOV BH,4 ;列数 MOV AL,0
7、EFH ;扫描码 MOV CL,0FH MOV CH,0FFH;键值-1 ROW:OUT DX,AL ROL AL,1 ;左移生成下一个扫描码 MOV AH,AL IN AL,DX ;读入列线值 AND AL,0FH CMP AL,0FH JNZ COL ;有键按下转 COL ADD CH,BH ;指向某列按键号,开始编号 MOV AL,AH DEC BL JNZ ROW JMP X1 COL:INC CH RCR AL,1 ;根据接口可能需要改为 SHL JC COL MOV AL,CH ;AL 为键号 CALL INPUT MOV BL,AL ;在屏幕上显示 ;发送输入的字符 SEND:M
8、OV DX,2B9H IN AL,DX ;读状态口 AND AL,01H ;TxRDY=1?是否可以传送-.-.可修编.JZ SEND DEC DX MOV AL,BL OUT DX,AL ;X2:MOV DX,2B9H IN AL,DX ;读状态口 AND AL,02H ;RxRDY=1?是否收到新消息 JZ X1 ;未接收到跳转到 X1 DEC DX IN AL,DX CALL QDM X3:MOV DX,PORTA OUT DX,AL JMP X1 E:MOV AX,4C00H INT 21H DELAY PROC NEAR PUSH CX MOV CX,7FFFH;有按键按下 LP0:
9、LOOP LP0 ;延时 POP CX RET DELAY ENDP ;子程序 INPUT,将小键盘输入的键号,转换成相对应的 ASCII 码;输入的存储在 AL 中,转换结果成储存在 AL 中 INPUT PROC NEAR PUSH BX CMP AL,6 IN1 MOV BL,0FH SUB BL,AL MOV AL,BL ADD AL,0 JMP INEND IN1:MOV BL,f SUB BL,AL MOV AL,BL INEND:POP BX RET INPUT ENDP ;子程序 QDM,将数字转换成七段码在数码管上显示;AL 储存要转换的字符的 ASCII 码,转换结果在 A
10、L 中 QDM PROC NEAR-.-.可修编.CASE0:CMP AL,0 JNE CASE1 MOV AL,3FH JMP CASEEND CASE1:CMP AL,1 JNE CASE2 MOV AL,06H JMP CASEEND CASE2:CMP AL,2 JNE CASE3 MOV AL,5BH JMP CASEEND CASE3:CMP AL,3 JNE CASE4 MOV AL,4FH JMP CASEEND CASE4:CMP AL,4 JNE CASE5 MOV AL,66H JMP CASEEND CASE5:CMP AL,5 JNE CASE6 MOV AL,6DH
11、 JMP CASEEND CASE6:CMP AL,6 JNE CASE7 MOV AL,7DH JMP CASEEND CASE7:CMP AL,7 JNE CASE8 MOV AL,07H JMP CASEEND CASE8:CMP AL,8 JNE CASE9 MOV AL,7FH JMP CASEEND CASE9:CMP AL,9 JNE CASEA MOV AL,6FH JMP CASEEND CASEA:CMP AL,a JNE CASEB MOV AL,77H JMP CASEEND-.-.可修编.CASEB:CMP AL,b JNE CASEC MOV AL,7CH JMP
12、CASEEND CASEC:CMP AL,c JNE CASED MOV AL,39H JMP CASEEND CASED:CMP AL,d JNE CASEE MOV AL,5EH JMP CASEEND CASEE:CMP AL,e JNE CASEF MOV AL,79H JMP CASEEND CASEF:CMP AL,f JNE DEFAULT MOV AL,71H JMP CASEEND DEFAULT:MOV AL,0H CASEEND:RET QDM ENDP CODE ENDS END START CODE ENDS END START 五、实验结果 描述实验现象及结果并给予
13、分析。实验现象:按照上述实验原理图连接好每台机器的电路,然后把把两台机器的 TxD 和 RxD 分别互联起来。双机通信时,在每台机器上的小键盘上按键时,都可立刻在另一台机器的数码管上显示输入的数据,两台机器是异步双工通信的,发送和接受可同时进行且互不干扰。结果分析:由上述的实验流程图可知,当机器甲没有按键时,程序中会转到检查是否收到数据的部分,若机器乙有数据传来,则接收数据并调用数码管显示模块输出;若有按键,则调用键盘扫描程序读入按键值,并把数据传到串行接口芯片 8251,由其与机器乙按照事先规定好的帧的格式传送数据,对机器乙也是执行与机器甲相同的流程。-.-.可修编.六、问题解决及收获体会 本次试验首先的问题便是 4 乘 4 键盘输入的识别,通过首先确定列号再通过行扫描的方式解决了问题,而后关于芯片的具体作用通过翻阅课本得到了复习和巩固,同时在连线的时候对于软件给出的连线方式一开始有疑惑,感觉似乎少了几根线,后来才知道,实验板部本省已有部分连线,如此给我们节省了时间也给查错带来了方便。在验收前的实验中,同旁边组的一起由于带电操作的问题把板子左上边的那一块给烧了,刚开始不知道原因,通过更换那一小块板子后整体工作正常找到了故障的所在。总体来说这次试验还算顺利,相关知识遗忘较为严重,某些考研的同学竟然也都不知道,今后在知识的学习上以及在实际的操作上都要更加的细心,更加的有条理。
限制150内