1、单机通讯-微机课设(代码肯定正确,如果下载不行是线连接出错,14 广工自动化电气 2 某某呈上)本课程设计内容包含两个方面:系统硬件设计和软件编程1 系统硬件设计 设计 8251 通讯,8251 地址为 C0HC1H。 单机通讯控制电路如图:2 软件编程内容 显示器工作于查询方式,键盘工作于中断方式。 16 个按键定义的键值为:0 F,按任意键在显示器上显示对应键值。 实验装置自己作为接收机和发送机。 A、软件实现:通讯数据为 8 位,9600 波特率,将 3000H3009H 十个单元的代码传送到 4000H4009H。并且作累加和。 B、软件实现:通讯数据为 8 位,9600 波特率,将
2、3000H3009H 十个单元的代码传送到 4000H4009H。并且作累加和。键盘设计方案将 8255A 单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用 44 键盘,每个数码管显示值可为 0F 共 16 个数。将键盘进行编号,记作 0F,当按下其中一个按键时,将该按键对应的编号在数码管上显示出来,当再按下一个按键时,便将这个按键的编号在数码管上显示出来。用并行接口 8255A 作为微机与键盘间的接口,采用逐行扫描法识别键盘。将键盘的列与PA0PA5 相连,A 口为输出;将行与 C 口的 PC0PC3 相连,C 口为输入口; PB0PB7 与七段
3、数码显示管连接,B 口为输出。程序执行过程如下:识别是否有键按下,方法是使PA0 一 PA5 输出为全 0,读 C 口值(行值) ,其中只要有一位为 0,就说明有键按下 ,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行七段数码显示管显示程序,这时七段数码显示管就显示与该键相同的数值。单机通讯设计方案实验中,将 8251A 的 TxD 与 RxD 接口相连,从而达成自收自发结果。其中 8254 的定时器/计数器 2 位 8251 串行通信单元提供收发时钟, CLK2 为 1.8432MHZ 时钟信号,OUT2 连接到8251 的 TxCLK 和 RxCLK 引脚上。代码:MY8255
4、_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CON EQU 0606HM8251_DATA EQU 0640HM8251_CON EQU 0642HM8254_2 EQU 06C4HM8254_CON EQU 06C6HSSTACK SEGMENT STACKDW 16 DUP(?)SSTACK ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HORG 3000HDHUANG_3 DB 10 DUP
5、(?)ORG 4000HDHUANG_4 DB 10 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AL,00HMOV SI,AL ;清显示缓冲MOV DX,MY8255_CON ;写 8255 控制字MOV AL,81HOUT DX,ALMOV AL, 0B6H ;初始化 8254,得到收发时钟MOV DX, M8254_CONOUT DX, ALMOV AL, 0CHMOV DX, M8254_2OUT DX, ALMOV AL, 00HOUT DX, ALCALL INI
6、T ;复位 8251CALL DALLY2MOV AL,7EHMOV DX, M8251_CONOUT DX, AL ;8251 方式字CALL DALLYMOV AL, 34HOUT DX, AL ;8251 控制字CALL DALLY2MOV DI, OFFSET DHUANG_4MOV SI, OFFSET DHUANG_3BEGIN: ;调用显示子程序CALL CLEAR ;清屏CALL CCSCAN ;扫描JNZ INK1JMP BEGININK1: CALL DALLYCALL DALLYCALL CLEARCALL CCSCANJNZ INK2 ;有键按下,转到 INK2JMP
7、BEGIN;=;确定按下键的位置;=INK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CHMOV DX,MY8255_A OUT DX,ALMOV DX,MY8255_C IN AL,DXL1: TEST AL,01H ;is L1?JNZ L2MOV AL,00H ;L1JMP KCODEL2: TEST AL,02H ;is L2?JNZ L3MOV AL,04H ;L2JMP KCODEL3: TEST AL,04H ;is L3?JNZ L4MOV AL,08H ;L3JMP KCODEL4: TEST AL,08H ;is L4?JNZ NEXTMOV
8、 AL,0CH ;L4KCODE: ADD AL,CLCALL PUTBUFKON: CALL DISCALL CLEARCALL CCSCANJNZ KONCALL T_AND_RINC SIJMP BEGINNEXT: INC CLMOV AL,CHTEST AL,08HJZ KERRROL AL,1MOV CH,ALJMP COLUMKERR: JMP BEGIN;=;键盘扫描子程序;=CCSCAN: MOV AL,00HMOV DX,MY8255_A OUT DX,ALMOV DX,MY8255_C IN AL,DXNOT ALAND AL,0FHRET;=;清屏子程序;=CLEAR:
9、 MOV DX,MY8255_B MOV AL,00HOUT DX,ALRET;=;显示子程序;=DIS: MOV AL,SIMOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,BXMOV DX,MY8255_B OUT DX,ALCALL DALLYMOV AH,01HMOV AL,SIADD AL,30HINT 10HMOV AX,0120HINT 10H;= 延时子程序 =DALLY: PUSH CXMOV CX,0006HT1: MOV AX,009FHT2: DEC AXJNZ T2LOOP T1POP CXRET;=;存键盘值到相应位的缓
10、冲中;=PUTBUF: MOV SI,ALGOBACK: RETDALLY2: PUSH CXMOV CX,3000HA5: PUSH AXPOP AXLOOP A5POP CXRETT_AND_R:A1: MOV AL, SIPUSH AXMOV AL, 37HMOV DX, M8251_CONOUT DX, ALPOP AXMOV DX, M8251_DATAOUT DX, AL ;发送数据MOV DX, M8251_CON A2: IN AL, DX ;判断发送缓冲是否为空AND AL, 01HJZ A2CALL DALLYA3: IN AL, DX ;判断是否接收到数据AND AL,
11、02HJZ A3MOV DX, M8251_DATAIN AL, DX ;读取接收到的数据MOV DI, ALINC DICMP DI,400AHJNZ BEBACKMOV AX,4C00HINT 21H ;程序终止BEBACK:RETINIT:MOV AL, 00H ;复位 8251 子程序MOV DX, M8251_CONOUT DX, ALCALL DALLY2OUT DX, ALCALL DALLY2OUT DX, ALCALL DALLY2;OUT 81H,AL;CALL DALLY;OUT 80H,AL;CALL DALLYMOV AL, 40HOUT DX, ALRETCODE ENDSEND START
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。