接口课程设计报告(郝俊)
- 格式:doc
- 大小:235.00 KB
- 文档页数:14
课程设计报告姓名:周建美专业:计算机科学与技术课程名称:微机接口技术班级:2010级科技二班系(分院):计算机科学与技术学院年月1、课程设计要求:选取8255A作为扩展接口芯片,输入设备为开关和非编码键盘,输出设备为发光二极管和七段数码管。
要求由键盘输入倒计时时间(至少为三位,分和秒用“-”隔开),要求计时精度高于0.1秒,输入计时时间后,由七段数码管显示并在开关的控制下,实现“开始倒计时”、“暂停倒计时”和“结束倒计时”。
倒计时结束、倒计时暂停、倒计时开始要由不同的发光二极管点亮或闪烁状态予以指示。
2、总体设计2.1总体要求课程设计要求有键盘,数码管,LED指示灯,开关。
从键盘输入两位(至少两位,多者不限)十进制数,动态显示在数码管上,有开关控制倒数、启动、暂停、退出指示灯,运行状态指示灯(绿),暂停状态指示灯(红)。
2.2设计原理的描述电源开关=PC0,暂停开关=PC1;电源指示灯=PC7,暂停指示灯=PC6;PC0=1启动,=0退出,PC1=1暂停,=0不暂停,电源灯常亮,暂停等闪烁,非暂停时刻熄灭。
图 1 单片机原理图3、硬件原理图图 2 硬件连接图4、程序设计4.1程序流程图图 3 流程图4.2源代码A口 equ 218hB口 equ 219hC口 equ 21ah位选 equ 210h段选 equ 211h控制字 equ 21bhdata segment键位码 dw 0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180h dw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h ; dw 0410h,0420h,0440h,0480h键位位移 db 12,13,14,15,11,10,9,8,4,5,6,7,3,2,1,0显示码 Db 3fh,30h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch, 58h,5eh,79h,71h,40h缓冲区 DB 十位位移,个位位移data endscode segmentassume cs:code,ds:datastart: push dsxor ax,axpush axmov ax,datamov ds,ax********主程序**********MOV DX,控制字MOV AL,81HOUT DX,ALMOV DX,C口等待开机:IN AL,DXTEST AL,1JZ 等待开机开启电源指示灯:MOV DX,控制字MOV AL,88HOUT DX,ALMOV DX,C口MOV AL,0FEHOUT DX,ALMOV BX.缓冲区CALL 键盘扫描子程序;获取显示码1位移量MOV DX,控制字MOV AL,82HOUT DX,ALMOV DX,A口MOV AL,0OUT DX,ALMOV DX,B口等待按键2:IN AL,DXCMP AL,0FFHJNZ 等待按键2MOV BX,缓冲区+1CALL 键盘扫描子程序;获取显示码2位移量LEA BX,缓冲区LEA SI,[BX+显示码]LEA DI,[BX+显示码+1]主控循环:CALL 暂停子程序CALL 动态显示子程序CMP [DI],3FHJNZ 倒数CMP [SI],3FHJZ 退出LEA DI,显示码+10倒数:DEC SI;十位指针-1DEC DI;个位指针-1JMP 主控循环;************************** 键盘扫描子程序 procpush axpush dxpush cxPUSH SIPUSH DIkinit: mov al,82hmov dx,ctrlportout dx,alrk1: mov al,0mov dx,paportout dx,almov dx,pbportin al,dxcmp al,0ffhjz rk1mov bl,almov dx,ctrlportmov al,90hout dx,almov dx,pbportmov al,blout dx,almov dx,paportin al,dxmov ah,blnot axmov si,offset 键位码 mov di,offset 键位位移 mov cx,17cmp ax,[si]jz 键盘返回dec cxjz kinitadd si,2inc dijmp judge键盘返回:MOV [BX],DIPOP DIPOP SIpop cxpop dxpop axret键盘子程序 endp;********************* 动态显示子程序 proc PUSH CXPUSH AXMOV CX,20显示1:MOV DX,位选MOV AL,1OUT DX,ALMOV DX,段选MOV AL,[SI]OUT DX,ALCALL 延迟MOV DX,位选MOV AL,2OUT DX,ALMOV DX,段选MOV AL,[DI]OUT DX,ALCALL 延迟LOOP 显示1POP AXPOP CXRET动态显示 ENDP;**********延迟子程序 PROCPUSH CXPUSH AXMOV BX,1000延迟1:MOV CX,1000 LOOP $DEC DXJNZ 延迟1POP AXPOP DXPOP CXRET延迟子程序 ENDP;******************** 暂停子程序 PROCPUSH DXPUSH AX判断开关:MOV DX,控制字MOV AL,81HOUT DX,ALMOV DX,C口IN AL,DXTEST AL,1JZ 退出TEST AL,2JZ 暂停返回闪烁:MOV DX,控制字MOV AL,0CHOUT DX,ALCALL 延迟子程序MOV DX,控制字MOV AL,0DHOUT DX,ALCALL 延迟子程序JMP 判断开关暂停返回:POP AXPOP DXRET暂停子程序 ENDP退出:mov ah,4chint 21key endpcode endsend start5、调试过程键盘、七段数码管和发光二极管的程序模块,首先,分为三个模块进行了实验,先是静态显示数码管,然后是动态显示数码管,最后控制显示数码管,以及倒计时控制。
武汉理工大学华夏学院课程设计报告书课程名称:微机原理与接口技术题目:交通灯实时控制系统设计系名:信息工程系专业班级:软件2111姓名:郭和朋学号: 10225611102指导教师:李朝纯2013 年 01月 04日课程设计任务书学生姓名:郭和朋专业班级:软件2111指导教师:李朝纯工作单位:信息工程系设计题目:交通灯实时控制系统设计初始条件:1、某十字路口的车辆通行按步序参考表A进行2、TDN86/88型多功能微机实验平台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)主要任务:1.画出硬件原理图(接口芯片和外设部分、交通灯与路口对应关系)和实验连线图;2.交通灯控制方式是南、北、东、西四个路口轮流通行(无交叉点通行控制方式,步序见参考表A);绿灯亮表示允许通车(20秒)、红灯亮表示不允许通车(15秒)。
各路口由允许通车到不允许通车黄灯亮(用红灯闪烁5秒钟表示);3.用2位7段LED数码管上显示路口当前通行时间的倒计时。
* 4.各路口允许通车时间内,若有异常事件发生(用开关模拟中断信号的产生),则所有灯闪烁10秒钟,返回原处继续。
时间安排:(部分时间,某些工作可以重叠进行)具体要求:设计报告撰写格式要求(按提供的设计报告统一格式撰写)具体内容如下:①设计任务与要求②总体方案与说明③硬件原理图与说明④实验电路图与说明⑤软件主要模块流程图⑥源程序清单与注释⑦问题分析与解决方案(包括调式记录、调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);⑧小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料指导教师签字:2012年12 月29 日系主任签字:年月日目录第1章需求分析................................... 错误!未定义书签。
1.1设计题目 ....................................... 错误!未定义书签。
计算机接口技术课程设计报告班级:专业:学号:姓名:报告目录结构:一、实验目的二、实验要求三、课程设计使用的设备(环境)四、实验原理:五、实验内容及大概步骤六、实验结果七、总结分析与心得一、实验目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。
二、实验要求针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。
三、课程设计使用的设备(环境)1.硬件COP2000实验仪 PC机2.软件COP2000仿真软件四、实验原理:1.该模型机指令系统的特点:①总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。
微程序控制部分也可以用组合逻辑控制来代替。
模型机为8位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。
模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。
指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
西北农林科技大学信息工程学院接口课程设计实习报告题目:温度数据采集系统设计学号:09107099姓名:季大祥专业班级:计算机074班指导教师:蒲攀实践日期:2010年7月5日-7月16日目录一、综合训练目的与要求 (3)二、综合训练任务 (3)三、总体设计 (3)四、详细设计说明 (4)4.1硬件设计 (4)4.1.1硬件电路连线 (4)4.1.2电路连接图 (5)4.2软件设计 (5)五、调试与测试 (6)5.2.1蜂鸣器控制问题 (6)5.2.2电机控制问题 (6)5.3.3发光管常亮问题 (6)5.3.4温度检测中温度的存储问题 (7)六、实习日志 (7)七、实习总结 (8)附录Ⅰ:核心代码清单 (9)附录Ⅱ:电路连接图 (26)一、综合训练目的与要求1、利用温度传感器对环境温度实时采集。
通过A/D转换实现温度数据数值化2、根据已数值化的温度数据控制相应伺服工作,具体要求如下(1)当温度超过40℃(电压3.7v以上)时,进行声光报警并显示(2)当温度超过35℃(电压大于3.5v)时,进行降温并显示(3)温度在27℃~35℃(2.7v~3.5v)之间时,进行保温并显示(4)温度低于27℃、大于20℃(2.7v>电压≥20v)时,进行升温并显示(5)温度低于20℃(<3.1v)时,开始报警并显示3、伺服工作要求(1)声光报警并显示:红色发光二极管闪烁,蜂鸣器发声,数码管显示当前温度(2)降温并显示:电机转动,数码管显示当前温度(3)保温并显示:绿色发光二极管长亮,数码管显示当前温度(4)升温并显示:红色发光二极管长亮,数码管显示当前温度(5)报警并显示:绿色发光二极管闪烁,蜂鸣器发声,数码管显示当前温度二、综合训练任务利用STAR ES598PCI实验仪,设计一个具有温度采集、报警、降温、保温、升温、温度显示的温度控制系统。
通过定时的温度采集自动依据采集数据控制相应伺服工作,实现报警、降温、保温、升温功能,并且可按要求显示实时温度。
1接口技术课程设计报告——键控节目灯姓名:李丹丹姓名:李丹丹 班级:Z059141班 专业:网络与通信专业:网络与通信 指导教师:王文仲王文仲王振力王振力孟祥莲孟祥莲同组人:李丹丹、黄小娜、高凡齐高凡齐哈尔滨工业大学华德应用技术学院哈尔滨工业大学华德应用技术学院2007年7月13日一、系统硬件要求(芯片简介)8255芯片:1、Intel 公司生产的可编程并行接口芯片8255A 作为并行接口获得广泛的应用。
与Intel 公司的8255A 相类似的可编程并行接口芯片有Motorola 公司生产的MC6820MC6820、、Zilog 公司生产的Z80PIO Z80PIO。
2、8255有三个通道:有三个通道:A A 通道、通道、B B 通道、通道、C C 通道,每个通道有I/O 线:线:PA0PA0————PA7PA7PA7,,PB0PB0——————PB7PB7PB7,,PC0PC0——————PC7PC7PC7。
3、8255有DB 缓冲器与CPU 连接完成通信,有四个端口:连接完成通信,有四个端口:A A 口、口、B B 口、口、C C 口、控制口。
口、控制口。
4、8255设有联络线,若联络则将C 口的8条I/O 线做联络线,所以将C 口分成两部分:口分成两部分:C C 口上半部:口上半部:PC7PC7PC7——————PC4PC4与A 组成A 组、组、PC3PC3PC3——————PC0PC0与B 组成B 组,所以8255的控制方式分A 组控制、组控制、B B 组控制。
组控制。
5、8255是通过CPU 向其内送入控制关键字的方式来实现对各口的管理的,即工作方式控制字。
即工作方式控制字。
8279芯片:Intel8279芯片是一种通用的可编程的键盘、显示器接口器件,能够单独完成键盘输入和LED 显示两种功能。
键盘部分提供一种扫描的工作方式,可以和具有64个触点的键控阵列相连接,也可以与传感器阵列相边。
微机接口课程设计报告学号:20121004357姓名:李世荣班级:191123指导老师:墙威摘要微机接口技术是采用硬件与软件相结合的方法,使微处理器与外部设备进行最佳的匹配,实现CPU与外部设备之间的高效、可靠的信息交换的一门技术。
接口技术把由处理器、存储器等组成的基本系统与外部设备连接起来,从而实现计算机与外部设备通信。
处理器通过总线与接口电路连接,接口电路再与外部设备连接,因此CPU总是通过接口与外部设备发生联系。
微机的应用是随着外部设备的不断更新和接口技术的发展而深入到各个领域的,因此接口技术是组成任何实用微机系统的关键技术,任何微机应用开发工作都离不开接口的设计、选用和连接。
微机与接口技术是一门实践性和实用性都很强的课程,学习的目的在于应用。
这次课程设计是计算机专业学生的一次较全面的的设计训练,是配合微机与接口技术课堂教学的最后一个重要的实践教学环节,它将起到巩固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。
本次设计任务是利用实验室的试验箱和VC6.0的环境设计出我们的小系统。
而我们这次设计的是模拟汽车行驶系统。
通过该系统,我们可以模拟汽车的行驶过程。
关键字:微机接口技术,VC6.0,试验箱,模拟汽车行驶系统。
一、需求分析进行系统设计,首先要对系统的现状进行分析。
根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。
需求分析是在于要弄清用户对开发的系统的确切要求。
本次实验准备在VC6.0和实验室的试验箱的环境下模拟出汽车的行驶过程。
正如我们所知,汽车的行驶过程非常复杂,在小小的试验箱上不能完全实现,所以这次实验中,我们只能准备完成一些基本的功能。
我们的目标功能有汽车的开关,速度的控制,以及倒车等功能。
二、设计分析经过需求分析之后,我们在观察试验箱后,试验箱上有控制功能的有A/D转换器,应用小键盘,以及拨键开关。
显示效果的部件有LED显示器,步进电机。
计算机通信接口课程设计一、课程目标知识目标:1. 让学生理解计算机通信接口的基本概念,掌握常见通信接口的类型及特点。
2. 使学生掌握串行通信接口和并行通信接口的原理,了解它们在实际应用中的优缺点。
3. 让学生掌握计算机通信接口的编程方法,学会使用相关编程语言实现通信接口的数据传输。
技能目标:1. 培养学生运用所学知识分析和解决计算机通信接口实际问题的能力。
2. 培养学生动手实践能力,能够独立完成计算机通信接口的编程与调试。
3. 培养学生团队合作能力,能够在小组项目中发挥积极作用。
情感态度价值观目标:1. 培养学生对计算机通信接口技术的兴趣,激发学生的学习热情和探究精神。
2. 培养学生严谨的科学态度,养成勤奋好学的习惯。
3. 增强学生的网络安全意识,树立正确的价值观,遵守相关法律法规。
课程性质:本课程为计算机专业选修课程,旨在让学生深入了解计算机通信接口的原理及应用,提高学生的实践能力和编程技能。
学生特点:学生具备一定的计算机基础知识,对通信接口有一定了解,但实践经验和编程能力有限。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,充分调动学生的积极性,提高学生的动手实践能力和团队合作精神。
通过本课程的学习,使学生能够独立完成计算机通信接口的设计与实现。
二、教学内容1. 计算机通信接口概述- 通信接口基本概念- 常见通信接口类型及特点2. 串行通信接口- 串行通信原理- 串行通信接口标准(如RS-232、RS-485)- 串行通信编程实践3. 并行通信接口- 并行通信原理- 并行通信接口标准(如IEEE 1284、Centronics接口)- 并行通信编程实践4. 通信接口编程- 串行通信编程(如使用C、Python等语言)- 并行通信编程(如使用C、Python等语言)- 通信接口调试与优化5. 实践项目- 设计并实现一个简单的串行通信程序- 设计并实现一个简单的并行通信程序- 小组项目:基于通信接口的智能家居控制系统6. 教学内容的安排与进度- 计算机通信接口概述(2课时)- 串行通信接口(4课时)- 并行通信接口(4课时)- 通信接口编程(6课时)- 实践项目(10课时)教学内容依据课程目标,注重理论与实践相结合,以教材为依据,系统性地安排教学大纲。
第1篇一、实验目的1. 理解接口处理的基本概念和流程。
2. 掌握使用PHP编写API接口的方法和步骤。
3. 学习如何使用json-server模拟接口数据。
4. 熟悉使用Postman进行接口测试和自动化测试。
二、实验环境1. 操作系统:Windows 102. 编程语言:PHP3. 开发工具:Visual Studio Code4. API模拟工具:json-server5. 接口测试工具:Postman三、实验内容1. PHP API接口编写(1)创建接口文件首先,我们需要创建一个PHP文件作为API接口,例如`api.php`。
```php<?php// api.php// 设置返回内容为JSON格式header('Content-Type: application/json');```(2)处理请求在`api.php`中,我们需要获取客户端发送的请求,并根据请求类型(GET或POST)进行处理。
```php// 获取请求类型$method = $_SERVER['REQUEST_METHOD'];// 处理GET请求if ($method === 'GET') {// 获取请求参数$name = $_GET['name'];// 模拟从数据库查询用户信息$userInfo = ['name' => '张三','age' => 25,'email'=>'********************'];// 返回JSON数据echo json_encode($userInfo);}// 处理POST请求if ($method === 'POST') {// 获取请求数据$jsonData = file_get_contents('php://input');$userData = json_decode($jsonData, true);// 模拟保存用户信息到数据库// ...// 返回JSON数据echo json_encode(['status' => 'success']); }```2. 使用json-server模拟接口数据(1)安装json-server```bashnpm install -g json-server```(2)创建数据文件创建一个名为`db.json`的文件,并添加以下内容:```json{"users": [{"id": 1,"name": "张三","age": 25,"email":"********************"},{"id": 2,"name": "李四","age": 30,"email":"****************"}]}```(3)启动json-server```bashjson-server --watch db.json```3. 使用Postman进行接口测试(1)测试GET请求在Postman中创建一个新的请求,选择HTTP方法为GET,并设置请求URL为`http://localhost:3000/users`。
接口平台设计实验报告1. 引言随着互联网的发展,越来越多的应用程序需要通过接口与其他系统进行交互。
为了方便不同系统之间的数据传输和功能调用,接口平台逐渐成为了一个不可或缺的组件。
本实验旨在设计一个接口平台,实现不同系统之间的数据交互和功能调用。
2. 设计目标本接口平台的设计目标如下:1. 支持多种常用的接口通信协议,如HTTP、SOAP等;2. 提供统一的接口调用方式,简化接口调用过程;3. 支持接口的注册、管理和监控;4. 提供安全机制,保证接口的安全性和稳定性;5. 能够灵活扩展,支持各种类型的接口。
3. 系统设计3.1 架构设计接口平台的架构设计如下图所示:++接口管理系统++++接口执行引擎++++数据存储系统++接口管理系统负责接口的注册、管理和监控,提供用户界面供用户操作。
接口执行引擎负责接收来自其他系统的接口请求,根据接口的定义进行处理,并返回结果。
数据存储系统负责存储接口的相关数据,包括接口定义、接口调用日志等。
3.2 功能设计接口平台具备以下功能:1. 用户管理:支持用户注册、登录和权限管理;2. 接口注册:支持接口的注册和定义,包括接口名称、输入参数、输出参数等;3. 接口管理:支持对已注册接口的管理,包括修改、删除和查询接口等;4. 接口监控:提供接口的运行状态监控和统计信息;5. 安全机制:提供接口的访问控制和数据加密等安全机制;6. 扩展功能:支持自定义扩展插件,满足不同类型的接口需求。
4. 实验结果经过设计和实现,我们成功开发了一个接口平台。
该平台具备良好的用户界面和丰富的功能,能够满足多种接口需求。
用户可以通过接口管理系统对接口进行注册、管理和监控,而接口执行引擎能够根据接口的定义对请求进行处理并返回结果。
5. 总结与展望通过本次实验,我们深入了解了接口平台的设计和实现过程。
该接口平台为不同系统之间的数据交互和功能调用提供了便利,具备良好的扩展性和安全性。
然而,目前的接口平台仍然有一些局限性,如性能方面的提升和更完善的安全机制等。
接口课程设计报告计算机0202班郝俊学号;012002013429 一.课程设计的要求与目的结合一个实际的接口技术问题,设计一个微机应用系统,包括主控机,数个下位机及执行部件,要求该系统综合应用并行接口、串行接口和其他接口,编写对应的上位机和下位机程序,实现主控机与下位机的远距离传送和远程监控功能。
系统结构,如图;其中;1.系统硬件由一台主控机,数台下位机和执行部件组成,主控机与下位机通过串行通信线连接。
2.主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。
3.下位机:与主控机通信,控制执行部件。
4.执行部件;将接收的数据送入到下位机或将下位机输出的数据送到执行部件。
5.主控机程序:串行(RS232/RS485)通信程序,数据处理程序等。
6.下位机程序:串行(RS232/RS485)通信程序,执行部件控制程序二.课程设计的题目地铁计费系统1.系统功能;乘客进站要在执行部件上刷卡,出站也要刷卡,执行部件将接收到的数据通过下位机传送给上位机,上位机根据卡号得出卡上金额。
出站时计算费用,并判断乘客是否买足了票,如果费用大于卡上金额,表示票款不足,则发出警报;如果费用小于卡上金额,表示票款足够,则算出余额,最后将数据送到下位机显示出来。
2.开发环境我们本次课程设计所用的开发环境是实验室提供的MF多功能微机接口实验与开发平台,所用的语言是IBM-PC汇编语言。
3.实验分工我们组的成员有我,冯茂盛,徐捷和黄林,其中冯茂盛同学担任组长。
我们的分工如下;冯茂盛同学负责下位机的程序编写以及整体调试,徐捷同学负责上位机的程序编写,黄林同学和我分别负责上位机和下位机的辅助设计以及硬件设计连接。
三.流程图上位机的流程图如下下位机的流程图如下页四.源程序代码上位机源代码:data segmentbalance db '4'quit db0ah,0dh,'The balance in your account is:$'err db0ah,0dh,'The balance is not adequate!!$'fee db0ah,0dh,'The fee of this travel is:$'card db0ah,0dh,'The card number is:$'carderror db0ah,0dh,'Invalid card number!',0ah,0dh,'$'data endsstack segment stackdb200dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackcls macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,1EHmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int10Hendmint51 proc near ;8251A初始化子程序mov dx,309h;8251A命令口mov al,0;空操作out dx,almov al,40h;内部复位out dx,almov al,4eh;8251A方式命令out dx,almov al,27h;8251A工作命令out dx,alretint51 endpset_bps proc near ;8253-5计数初值计算与装入子程mov dx,307h;8253-5命令口mov al,0b6h;8253-5初始化命令out dx,almov dx,306h;8253-5计数器2的端口mov ax,34h;取计数初值out dx,al;装计数初值低字节mov al,ah;装计数初值高字节out dx,alret;返回set_bps endpbegin: mov ax,datamov ds,axcls 0,0,25,80mov ah,2mov bh,0mov dx,0101hint10hcall int51 ;调用8251A子程序,初始化8251Alea dx,card ;显示'The card number is :'mov ah,9int21hreceiv1: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?jz receiv1 ;未准备好,即无数据接收mov dx,308h;已准备好,即有数据传送过来,则接收卡号in al,dxmov dl,al;显示接收的字符mov ah,02hint21hcmp al,30hjne carderrmov dx,309h;发送数据transm1: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm1 ;未准备好,则等待mov dx,308h;将卡上的余额发送出去mov al,balanceout dx,al;发送结束,准备接收下位机传来的车费lea dx,fee ;显示'The fee of this travel is:'mov ah,9int21hreceiv2: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?jz receiv2 ;未准备好,即无数据接收mov dx,308h;已准备好,即有数据传送过来,则接收1个字符卡号in al,dxmov dl,al;显示接收的字符mov ah,02hint21hmov bl, balancecmp bl, aljb error ;如果车费大于余额,则不修改余额,直接跳出sub bl,al;否则,发送数据add bl,'0'mov balance,blmov dx,309htransm2: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm2 ;未准备好,则等待mov dx,308h;将卡上的余额发送出去mov al,balanceout dx,al;发送结束jmp overcarderr: lea dx,carderrormov ah,9int21hjmp overerror: lea dx,errmov ah,9int21hjmp overover: mov ax, 4c00hint21hcode endsend begin下位机源代码:data segmentinfo1 db0ah,0dh,'Please input the card number:$'carderror db0ah,0dh,'Invalid card number!!',0ah,0dh,'$'info2 db0ah,0dh,'Please input the fee:$'info3 db0ah,0dh,'The balance is:','$'info4 db0ah,0dh,'Press any key to check in!Press ESC to exit this program',0ah,0dh,'$' info5 db0ah,0dh,'Please press any key to check out!',0ah,0dh,'$'info6 db0ah,0dh,'Your balance is $'info7 db 'not adequate!',0ah,0dh,'$'card db10db ?db10dup(0)fee db10db ?db10dup(0)balance db10db ?db10dup(0)t dw0;初始化延时变量为0ta db14hdata endsstack segment stackdb200dup(0)stack endscode segmentassume cs:code,ds:data,ss:stackcls macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6mov bh,1EHmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int10Hendmint51 proc near ;8251A初始化子程序mov dx,309h;8251A命令口mov al,0;空操作out dx,almov al,40h;内部复位out dx,almov al,4eh;8251A方式命令out dx,almov al,27h;8251A工作命令out dx,alretint51 endpset_bps proc near ;8253-5计数初值计算与装入子程mov dx,307h;8253-5命令口mov al,0b6h;8253-5初始化命令out dx,almov dx,306h;8253-5计数器2的端口mov ax,34h;取计数初值out dx,al;装计数初值低字节mov al,ah;装计数初值高字节out dx,alret;返回set_bps endpdelay1 proc;延时子程1push bxmov bx,tdl1: dec bxjnz dl1pop bxretdelay1 endpdelay2 proc;延时子程2push cxpush bxmov cx,04ffhdl4: mov bx,0ffffhdl3: dec bxjnz dl3dec cxjnz dl4pop bxpop cxretdelay2 endpspk proc nearmov bx,200mov t,0ffffhmov dx,303h;从PC6输出方波loson: mov dx,303h;从PC6输出方波mov al,0dh;置PC6=1;打开8253out dx,alcall delay1mov dx,303hmov al,0ch;置PC6=0;关闭8253out dx,alcall delay1dec bxjnz losoncall delay2retspk endpbegin: mov ax,datamov ds,axcls0,0,25,80mov ah,2;设置光标mov bh,0mov dx,0001hint10hcall int51 ;调用8251A子程序,初始化8251Amov dx,303h;初始化8255A,使指示灯全熄mov al,82hout dx,almov dx,300hmov al, 11111111bout dx,allea dx,info1 ;从开关输入卡号mov ah,9int21hmov dx,303hmov al,82hout dx,almov dx,301hin al,dxl1: mov dx,303hmov al,82hout dx,almov dx,301hin al,dxmov bl,al;将口B输入的卡号数据做备份and al,10000000b;如果首位不是0,就等待,直到把首位开关置0cmp al,00000000bjz l1and bl,01111111bmov dl,blmov ah,2int21hmov dx,309h;否则,发送数据transm1: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm1 ;未准备好,则等待mov dx,308h;将已准备好的数据发送出去mov al,blout dx,al;发送结束cmp bl,30hjne carderrreceiv1: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?mov dx,308h;已准备好,即有数据传送过来,则接收1个字符in al,dxmov bh,al;将显示的余额存到bh中lea dx,info3mov ah,9int21hmov dl,bh;显示接收的字符mov ah,02hint21hlea dx,info2mov ah,9int21hmov dx,303h;test用来读入8255口B的信息mov al,82hout dx,almov dx, 301hin al, dxl2: mov dx, 301hin al, dxmov bl,al;此时bl用来存储输入的车费and al,10000000bcmp al,10000000bjz l2and bl,01111111bmov dl,blmov ah,2int21h;end of testmov dx,309h;发送数据transm2: in al,dxtest al,01;发送准备好?TXRDY=1?jz transm2 ;未准备好,则等待mov dx,308h;将已准备好的数据发送出去mov al,blout dx,al;发送结束lea dx,info6mov ah,9int21hmov al, blcmp bh,aljb error ;如果车费大于余额,显示错误receiv2: mov dx,309h;准备接收数据in al,dxtest al,02;接收数据准备好?RXRDY=1?mov dx,308h;已准备好,即有数据传送过来,则接收1个字符in al,dxmov dl,al;显示接收的字符mov ah,02hint21hjmp overerror: lea dx,info7mov ah,9int21hmov dx,303h;初始化8255Amov al,82hout dx,almov dx,300hmov al, 00000000bout dx,alcall delay2mov dx,300hmov al,11111111bout dx,alcall spkjmp overcarderr: lea dx,carderrormov ah,9int21hcall spkover:mov dx,303h;初始化8255A,使指示灯全熄mov al,82hout dx,almov dx,300hmov al, 11111111bout dx,almov ax,4c00h;程序退出int21hcode endsend begin五.程序的调试过程老师将接口课程设计的要求和内容布置下来以后,我,冯茂盛,徐捷和黄林决定组成一个小组,共同完成这个课题。