单机通讯.docx_第1页
单机通讯.docx_第2页
单机通讯.docx_第3页
单机通讯.docx_第4页
单机通讯.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单机通讯-微机课设(代码肯定正确,如果下载不行是线连接出错,14广工自动化电气2某某呈上)本课程设计内容包含两个方面:系统硬件设计和软件编程1系统硬件设计设计8251通讯,8251地址为C0HC1H。单机通讯控制电路如图: 2软件编程内容显示器工作于查询方式,键盘工作于中断方式。16个按键定义的键值为:0 F,按任意键在显示器上显示对应键值。实验装置自己作为接收机和发送机。A、软件实现:通讯数据为8位,9600波特率,将3000H3009H十个单元的代码传送到4000H4009H。并且作累加和。B、软件实现:通讯数据为8位,9600波特率,将3000H3009H十个单元的代码传送到4000H4009H。并且作累加和。键盘设计方案 将8255A单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。键盘采用44键盘,每个数码管显示值可为0F共16个数。将键盘进行编号,记作0F,当按下其中一个按键时,将该按键对应的编号在数码管上显示出来,当再按下一个按键时,便将这个按键的编号在数码管上显示出来。用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键盘。将键盘的列与PA0PA5相连,A口为输出;将行与C口的PC0PC3相连,C口为输入口; PB0PB7与七段数码显示管连接,B口为输出。程序执行过程如下:识别是否有键按下,方法是使PA0一PA5输出为全0,读C口值(行值),其中只要有一位为0,就说明有键按下 ,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行七段数码显示管显示程序,这时七段数码显示管就显示与该键相同的数值。单机通讯设计方案实验中,将8251A的TxD与RxD接口相连,从而达成自收自发结果。其中8254的定时器/计数器2位8251串行通信单元提供收发时钟,CLK2为1.8432MHZ时钟信号,OUT2连接到8251的TxCLK和RxCLK引脚上。代码:MY8255_A EQU 0600HMY8255_B EQU 0602HMY8255_C EQU 0604HMY8255_CONEQU 0606HM8251_DATAEQU 0640HM8251_CONEQU 0642HM8254_2EQU 06C4HM8254_CONEQU 06C6HSSTACKSEGMENT STACKDW 16 DUP(?)SSTACKENDSDATA SEGMENTDTABLEDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HORG 3000HDHUANG_3 DB 10 DUP(?)ORG 4000HDHUANG_4 DB 10 DUP(?)DATA ENDS CODE SEGMENT ASSUME 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 INIT;复位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 DALLY CALL DALLY CALL CLEARCALL CCSCANJNZ INK2;有键按下,转到INK2JMP BEGIN;=;确定按下键的位置;=INK2: MOV CH,0FEHMOV CL,00HCOLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DXL1: TEST AL,01H ;is L1? JNZ L2 MOV AL,00H ;L1JMP KCODEL2: TEST AL,02H ;is L2? JNZ L3 MOV AL,04H ;L2 JMP KCODEL3: TEST AL,04H ;is L3? JNZ L4 MOV AL,08H ;L3JMP KCODEL4: TEST AL,08H ;is L4? JNZ NEXT MOV 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,00H MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DXNOT AL AND AL,0FHRET;=;清屏子程序;=CLEAR: MOV DX,MY8255_B MOV AL,00H OUT DX,ALRET;=;显示子程序;=DIS: MOV AL,SI MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,BX MOV DX,MY8255_B OUT DX,ALCALL DALLYMOV AH,01HMOV AL,SIADD AL,30HINT 10HMOV AX,0120HINT 10H;= 延时子程序 =DALLY: PUSH CX MOV CX,0006HT1: MOV AX,009FHT2: DEC AXJNZ T2LOOP T1POP CXRET;=;存键盘值到相应位的缓冲中;=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, 02HJZ A3MOV DX, M8251_DATAIN AL, DX;读取接收到的数据MOV DI, ALINC DICMP DI,400AHJNZ BEBACKMOV AX,4C00HINT 21H;程序终止BEBACK:RETINIT:MOV AL, 00H;复位8251子程序MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论