




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章 并行通信接口,3.1.4 8255A的应用举例,1、用方式0与打印机接口,设8255的端口地址是300303H.对应源程序为: MOV DX, 303H ;控制口地址 MOV AL, 81H ;(10000001)A口方式0输出,上C口输出,下C口输入 OUT DX, AL ;输出方式控制字 MOV AL,0FH ;使PC7=1(置STROBE=1) OUT DX, AL ;输出命令字 MOV DX, 302H ;C口地址 PRN:IN AL, DX ;读C口,查询PC2 AND AL, 04H ;BUSY=0? JNZ PRN ; 忙,则等待 MOV DX, 300H ;不忙,则输出数据 MOV AL, AH OUT DX, AL MOV DX, 303H MOV AL, 0EH ;使PC70,输出选通负脉冲STROBE OUT DX, AL NOP ;适当延时,维持一定的脉宽 NOP MOV AL, 0FH ;使PC7=1,结束STROBE脉冲 OUT DX, AL ,2、用方式1与打印机接口,设8255的端口地址为300H303H,则源程序为: PRINT:PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV DX, 303H MOV AL, 0A0H ;设A口为方式1输出(10100000) OUT DX, AL MOV AL, 0CH ;INTEA (PC6) =0,禁止中断 OUT DX, AL MOV CX, CONT ;打印字节数送CX MOV BX, OFFSET BUFFER ;取缓冲区首址,PRN1:MOV AL, BX ;取一个数 MOV DX, 300H OUT DX, AL ;从A口输出 MOV DX, 302H PRN2:IN AL, DX ;读C口 TEST AL, 80H ;检测OBF (PC7) 为1否? JZ PRN2 ;为0,继续检测 INC BX ;为1,数据已输出,准备取下一个数 LOOP PRN1 POP DX POP CX POP BX POP AX RET PRINT ENDP 问题:为什么检测打印机是否收到数据不测PC6 ,而测PC7?,3、用方式2实现双机通信 (用中断实现,先自学) 3.2 并行打印机接口,3.2 Centronics并行打印机接口 表33 Centronics标准的引脚定义,3.2.3 PC机并行打印口寄存器,表34 并行口的端口地址,CPU向打印机传送打印数据时,通过数据端口,对数据寄存器进行写操作。 向打印机传送控制命令时,通过控制端口,对控制寄存器进行写操作。 CPU要获得打印机状态时,则通过状态端口,对状态寄存器进行读操作。 控制寄存器各位的含义如图319。,状态寄存器各位的含义如图320,3.2.4 打印机接口编程, 查询方式 通过不断测试BUSY信号进行的,如果BUSY信号为低电平,打印机空闲,则发送欲打印的数据,同时发送选通信号STB,将数据送入打印机缓冲区。 例:使用查询方式通过并行口1,打印一行字符“HELLO!”,程序如下: DATA SEGMENT BUFFER DB HELLO!,0DH,0AH COUNT EQU $BUFFER DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV BX, OFFSET BUFFER MOV CX, COUNT,CHECK:MOV DX, 379H IN AL, DX ;读状态字 AND AL, 80H JZ CHECK ;BUSY0,继续检测 MOV AL, BX MOV DX, 378H ;BUSY1, OUT DX, AL ;则输出一个字符 MOV AL, 00001101B MOV DX, 37AH OUT DX, AL MOV AL, 00001100B OUT DX, AL ;发选通脉冲 INC BX LOOP CHECK ;循环输出下一个字符 MOV AH, 4CH INT 21H CODE ENDS END START,(2)中断方式(先自学,学完第5章再回来讨论它 ),3.3 软件加密狗,软件狗:一种插在微机并行口上的一个软件保护装置。为了大型专用软件的加密而开发的。 它包括主机检查程序和密钥(也称加密盒)两部分,体积很小且不带电源,主机检查程序是加密代码的一部分,加密盒是用来存放密码的。常见的软件狗加密盒外形,如两个D行25针连接器(DB-25M和DB-25F)倒接在一起,DB-25M插在并行口上,DB-25F可接打印机。,3.3.1 硬件设计原理,当被加密的软件向它发出某种信号时,它能给出正确的回应。 并口输入线本身有5根,其中可选用的只有2根,即联机信号SLCT和应答信号ACK,而且这两条线的使用都是有条件的。如果计算机不是利用硬中断来实现假脱机打印(多数情况是如此),则ACK线可以用作状态输入线。,软件狗的电路:采用一个计数器,通过并行口数据线控制其计数操作,而计数器某根输出线与并口ACK相连,当计数到某一数据值时,该输出发生状态跳变作为软件狗正确的应答信号。 电源问题:并口的25根信号线不提供电源。而用外接电源则失去了软件狗简单、兼价的特性。解决这个问题,第一是选择低功耗CMOS集成电路,第二是利用打印机信号线供电,并在供电信号线上加一个适当的电容帮助对电路工作的供电。,在应用软件的不同地方加入一段检测密钥的程序如下: MOV CX,0 ;输出脉冲个数记录 MOV DX,378H MOV AL,0FEH ;D7=1,D0=0,Dl=1。 OUT DX,AL ;D7=1,CD4040B供电、清零 MOV AL,0FCH ;D1=0,CD4040B解除清零 OUT DX,AL ;将CD4040B清零后开始计数 MOV DX,379H IN AL,DX ;读取ACK状态 TEST AL,40H JZ ERROR ;被清零后,密钥仍为高电平,不正确,终止程序,AGAIN: MOV DX,378H MOV AL,FDH ;D0=1 OUT DX,AL MOV AL,FCH ;D0=0 OUT DX,AL ;通过D0输出一高电平时钟脉冲 INC CX ;计数脉冲增加一个 MOV DX,379H IN AL,DX ;读取ACK状态 TEST AL,40H JZ TEST0 CMP CX,8 JZ ERROR ;脉冲数已为8个,但ACK仍为低, ;说明密钥不正确 JMP AGAIN ;输出脉冲数不满8个,继续输出 TEST0:CMP CX,8 JZ RIGHT ;输出脉冲数为8,密钥正确, ;程序正常执行 JMP ERROR ;输出脉冲数不满8个, ;密钥无变化,说明不正确,上面的程序中,每输出一个脉冲就要检测一下密钥,目的是防止在输出一个脉冲后密钥变化(ACK提前=1也是错的),以后输出脉冲不起作用,造成密钥正确的假象。,8255作为十字路口红绿灯控制.C,/* 红灯1=PC0,2=PC1,3=PC2,4=PC3 亮=0 */ /* 绿灯1=PC4,2=PC5,3=PC6,4=PC7 */ /* 黄灯1=PB4,2=PB5,3=PB6,4=PB7 */ /* 1=东,2=南,3=西,4=北 */ #include #define ct8255 0x0073 #define ap8255 0x0070 #define bp8255 0x0071 #define cp8255 0x0072,void delayl(int i); /* 延时子程序 */ main() int i; outportb(ct8255,0x80); /*设置8255方式0 */ outportb(bp8255,0xff); outportb(cp8255,0xf0); /* 1,2,3,4方向均红灯 */ delayl(200);,while(1) /* 主循环 */ outportb(ct8255,0xa5); /*PC4、6=0绿灯亮(1、3方向);2、4方向绿灯灭, PC1、3=1红灯亮(2、4方向); 1、3方向红灯灭;*/ delayl(400); /* 延时40秒 */ for(i=0;i8;i+) /* 1、3方向绿灯闪8次 */ outportb(ct8255,0xa5); /*PC4、6=0绿灯亮(1、3方向);2、4方向绿灯灭*/ delayl(10); /* 延时半秒 */ outportb(ct8255,0xf5); /*PC4、6=1绿灯灭(1、3方向);2、4方向红灯不变*/ delayl(10); /* 延时半秒 */ ,outportb(bp8255,0xaf); /*PB4、6=0黄灯亮(1、3方向);PC1、3=0红灯不变 */ delayl(100); /* 延时10秒 */ outportb(bp8255,0xff); /*PB4、6=0黄灯灭(1、3方向);PC1、3=0红灯不变 */ outportb(cp8255,0x5a); /* PC5、7=0绿灯(2、4方向);1、3方向绿灯灭 */ /* PC0、2=0红灯(1、3方向); 2、4方向红灯灭;*/,for(i=0;i8;i+) /* 2、4 方向绿灯闪8次?*/ outportb(cp8255,0x5a); /* PC5、7=0绿灯亮(2、4方向);1、3方向绿灯灭 */ delayl(10); /* 延时半秒 */ outportb(cp8255,0xf5); /* PC5、7=1绿灯灭(2、4方向);1、3方向绿灯灭 */ del
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理肿瘤病人礼仪培训
- 江西省婺源县2024-2025学年初三学生调研考试数学试题含解析
- 江苏省永丰初级中学2024-2025学年七校联考高考物理试题一模试卷含解析
- 中国计量大学现代科技学院《中医药学概论》2023-2024学年第二学期期末试卷
- 丽水职业技术学院《音乐文献检索与论文写作》2023-2024学年第二学期期末试卷
- 渭南市澄城县2024-2025学年五年级数学第二学期期末教学质量检测模拟试题含答案
- 山西药科职业学院《医学细胞生物学讨论》2023-2024学年第一学期期末试卷
- 江苏省泰州市泰兴市黄桥教育联盟重点名校2025届初三下学期联考(二)语文试题试卷含解析
- 江苏大学京江学院《校园音乐活动策划》2023-2024学年第二学期期末试卷
- 内蒙古艺术学院《教你玩转信息化学习》2023-2024学年第二学期期末试卷
- 【MOOC】老子的人生智慧-东北大学 中国大学慕课MOOC答案
- 售后服务组织架构及人员岗位职责
- 智能交通监控系统运维服务方案(纯方案-)
- 废旧锂电池回收利用技术课件
- 区域医学检测中心的建设与管理V3
- 2024-2025学年北京西城区北京四中高二(上)期中物理试卷(含答案)
- 北京市矢量地图-可改颜色
- 技术转移案例
- 旅游公司抖音代运营合同范本
- 草莓水果课件教学课件
- 高铁课件教学课件
评论
0/150
提交评论