运用8255设计的键盘及显示接口-实验报告(含接线图+源程序)
- 格式:doc
- 大小:62.00 KB
- 文档页数:6
物理与电子科学系实验报告 课程名称 微机原理与接口技术 实验班级 B11电子班 实验名称 实验四 可编程接口(一) (8255方式0) 学生姓名 学生学号
一、实验题目:可编程并行接口(8255方式0)
二、实验目的 掌握8255方式0的工作原理及使用方法。
三、实验内容 1、按下图连线。 2、编程从8255C口输入数据,再从A口输出.
四、程序流程图 五、源程序 ioport equ 0d400h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh io8255c equ ioport+28ah code segment assume cs:code start: mov dx,0ef0bh ;设8255为C口输入,A口输出 mov al,8bh out dx,al inout: mov dx,0ef2ah ;从C口输入一数据 in al,dx mov dx,0ef28h ;从A口输出刚才自C口 out dx,al ;所输入的数据 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h jz inout ;若无,则继续自C口输入,A口输出 mov ah,4ch ;否则返回DOS int 21h code ends end start
六、实验结果分析 按上述的代码执行,观察LED灯的状态,可以发现实验结果和预期的相同: 打开K0,关闭K1、K2、K3、K4、K5、K6、K7,L0亮; 打开K1,关闭K0、K2、K3、K4、K5、K6、K7,L1亮; 打开K2,关闭K0、K1、K3、K4、K5、K6、K7,L2亮; 打开K3,关闭K0、K1、K2、K4、K5、K6、K7,L3亮; 打开K4,关闭K0、K1、K2、K3、K5、K6、K7,L4亮; 打开K5,关闭K0、K1、K2、K3、K4、K6、K7,L5亮; 打开K6,关闭K0、K1、K2、K3、K4、K5、K7,L6亮; 打开K7,关闭K0、K1、K2、K3、K4、K5、K6,L7亮; 按任意键,退出该实验。
单片机可编程8255接口实验报告可编程8255接口实验报告㈠实验目的1.掌握可编程并行接口芯片的基本工作原理及其使用方,熟悉8255可编程并行I/O扩展接口。
2.掌握8255可编程并行I/O扩展接口方法,能够利用8255可编程并行接口芯片设计简单应用系统。
㈡实验器材1. G6W仿真器一台2. MCS-51实验板一台3. PC机一台4.电源一台㈢实验内容及要求1.声光报警器实验8255是可编程的通用并行输入输出扩展接口。
8255芯片的片选信号CS4 及口地址选择线AA0、AA1分别由8051的地址线提供。
8255的A口设置为输入数据端口,B口设置为输出数据端口,通过控制位操作控制字将C口某一位置位或复位,B口与发光二极管LED相连,C口与蜂鸣器相连,读取A 口数据,只要有一位为“1”,则点亮发光二极管LED(B口输出为低,LED 亮,反之,LED 灭),同时蜂鸣器响(若 C口某一位置1,蜂鸣器不响)。
2.交通灯控制实验通过并行接口8255实现十字路nb 口交通灯的模拟控制。
L6~L8与PC5~PC7相连,作为南北路口的交通灯,L1~L3与PC0~PC2相连,作为东西路口的交通等。
编程使六个灯按以下规律变化:南北路口的“绿”灯(L8)、东西路口的“红”灯(L1)同时亮30秒(要求有倒计时显示);南北路口的“黄”灯(L7)闪烁若干次,同时东西路口“红”灯(L1)继续亮;南北路口的“红”灯(L6)、东西路口的“绿”灯(L3)同时亮30秒(要求有倒计时显示);东西路口的“黄”灯(L2)闪烁若干次,南北路口的“红”灯(L6)继续亮;重复以上步骤。
㈣实验步骤1.连接8255芯片的片选信号CS4及口地址选择线AA0、AA1,并根据片选信号及口地址选择线确定8255的各I/O口地址和控制字寄存器的地址。
2.声光报警器实验的连线①8255的A口的8位根据需要接入高低电平。
②8255的B口中任一口与TEST相连,运行程序,即可观察L9发光二极管。
2011-2012学年第一学期电信学院计算机系实验报告课程名称微机原理及接口技术实验名称8255控制键盘与显示班级学号姓名一、实验目的1、掌握8255输入、输出编程方法。
2、掌握阵列键盘和数码管动态扫描显示的控制方法。
二、实验内容用8255可编程并行口做一个键盘、显示扫描实验,把按键输入的键值,显示在8255控制的七段数码管上。
8255 PB口做键盘的输入线,PC 口显示扫描线,PA口做显示数据线。
三、实验要求根据实验内容编写一个程序,并在实验仪器上调试和验证。
四、实验电路工作原理本实验需要用到CPU模块(F3区)、8255模块(C6区)、8279键盘与显示模块(E7区)。
8255键盘与显示电路原理图参见图。
CS_8255接8000H,则8255状态/命令口地址8003H,PA口地址为8000H,PB口地址为8001H。
五、实验步骤1)系统各跳线器处在初始设置状态,S11E和S12E红开关全部打到下方(OFF)。
2)用8位数据线对应连接8255模块的JD3C(PA口)、JD4C(PB 口)、JD5C(PC口)到8279模块的JD3E、JD2E、JD4E;用导线连接8255模块的CS_8255到地。
3)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。
变异无误后,下程序运行。
4)、在键盘上按任一单键,观察数码管的显示,数码管地位显示按键值。
六、程序及注释;//*********************************************************;文件名: 8255KD for MCU51;功能: 8255控制键盘显示实验;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口);; JD2E到8255模块的JD4C(PB口);; JD4E到8255模块的JD5C(PC口);; 用导线连接CPU模块的8000H到8255模块的CS_8255。
实验五8255方式1输出实验一、实验目的掌握查询方式实现8255选通型输人(方式1)的编程控制方法。
二、实验内容将8255端口A的PA7-PA0与8个发光二极管L7-L0连接,PB2-PB0与拨动开关的K2-K0连接,8255的CS与地址译码区的0-F端子连接,PC2(/STBB)与单脉冲的/PLUS端连接。
先预置开关K2-K0为一组输入状态,然后按下单脉冲按键产生一个负脉冲,输入到PC2。
用发光二极管LEDi亮,显示K2-K0的状态。
要求:K2-K0=000时,LED0亮K2-K0=001时,LED1亮K2-K0=010时,LED2亮K2-K0=011时,LED3亮K2-K0=100时,LED4亮K2-K0=101时,LED5亮K2-K0=110时,LED6亮K2-K0=111时,LED7亮三、实验环境《TPC-EM实验仪》和386EX实验模式。
四、实验步骤(1)先将实验箱打开,按如下“实验连接图”用数据线将各个部件连接;【实验接线图】8255PA0PA7LED显示灯L0L7PB0PB1PB2K0K1K2拨动开关CS PC2单脉冲/PLUS 地址译码0-F(2)连接完成后,根据实验内容的要求写出相关代码;具体代码如下:DATA SEGMENTMESG DB '8255A READY...',0DH,0AH,'$'TAB DB 00000001BDB 00000010BDB 00000100BDB 00001000BDB 00010000BDB 00100000BDB 01000000BDB 10000000BDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEG: MOV AX,DATAMOV DS,AXCALL I8255AMOV AH,9MOV DX,OFFSET MESGINT 21HSCAN: MOV AH,1INT 16HJNZ RETURNMOV DX,202HIN AL,DXTEST AL,00000010BJZ SCANMOV DX,201HIN AL,DXAND AL,07HMOV BX,OFFSET TABXLAT TABMOV DX,200HOUT DX,ALJMP SCAN RETURN: MOV AH,4CHINT 21HI8255A PROCMOV DX,203HMOV AL,0A7HOUT DX,ALMOV AL,04HOUT DX,ALMOV DX,201HMOV AL,00HOUT DX,ALRETI8255A ENDPCODE ENDSEND BEG(3)将实验箱开关打开,程序写入386,然后进行连接、下载,按F5进行运行。
微机实验报告书学号: XXXXX 姓名: XXXXX 班级: XXXXX同组名单: XXXXXXXXX 实验日期: 5实验题目: 8255可编程并行接口实验目标: 1、掌握8255方式0的工作原理及使用方法。
2、进一步掌握中断处理程序的编写。
3、掌握数码管显示数字的基本原理。
4、了解微机化竞赛抢答器的基本原理。
实验步骤:实验一、 8255A的基本输入输出图1. 8255A的基本输入输出接线图实验步骤如下:(1)实验电路如图1,8255A的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
(2)编程从8255A的C口输入数据,再从A口输出。
实验二、七段数码管图2. 七段数码管接线图实验步骤如下:(1)静态显示:按图2(a)连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dP接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
(2)动态显示:按图2(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1接+5V(选中),S0接8255A的C口的PC1。
编程在两个数码管上显示“56”。
实验三、竞赛抢答器图3. 竞赛抢答器电路图实验步骤如下:图3位竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来。
程序框图:实验一:实验二:实验三:程序清单:;*************************;;* 8255A的基本输入输出 *;;*************************;IOPORT EQU0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHCODE SEGMENTASSUME CS:CODESTART:MOV DX,IO8255K ;对8255进行设定,A输出,C输入MOV AL,10001001BOUT DX,ALINPUT:MOV DX,IO8255C ;从C输入IN AL,DXMOV DX,IO8255A ;从A输出OUT DX,ALMOV DL,0FFH ;判断是否有按键MOV AH,06HINT21HJZ INPUT ;若无,则继续C输入,A输出MOV AH,4CH ;否则,返回DOSINT21HCODE ENDSEND START;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB 0DH,0AH,'Input a num (0--9),other key is exit:',0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DX,IO8255K ;使8255的A口为输出方式MOV AX,10000000BOUT DX,ALSSS: MOV DX,OFFSET MESG1 ;显示提示信息MOV AH,09HINT 21HMOV AH,01 ;从键盘接收字符INT 21HCMP AL,'0' ;是否小于0JL EXIT ;若是则退出CMP AL,'9' ;是否大于9JG EXIT ;若是则退出SUB AL,30H ;将所得字符的ASCII码减30HMOV BX,OFFSET LED ;BX为数码表的起始地址XLAT ;求出相应的段码MOV DX,IO8255A ;从8255的A口输出OUT DX,ALJMP SSS ;转SSSEXIT: MOV AH,4CH ;返回INT 21HCODE ENDSEND START;******************************;;* LED数码管实验动态显示“56”*;;******************************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码BUFFER1 DB 6,5 ;存放要显示的个位和十位BZ DW ? ;位码DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;将8255设为A口输出MOV AL,80HOUT DX,ALMOV DI,OFFSET BUFFER1 ;设di为显示缓冲区LOOP2: MOV BH,02LLL: MOV BYTE PTR BZ,BHPUSH DIDEC DIADD DI, BZMOV BL,[DI] ;bl为要显示的数POP DIMOV AL,0MOV DX,IO8255COUT DX,ALMOV BH,0MOV SI,OFFSET LED ;置led数码表偏移地址为SIADD SI,BX ;求出对应的led数码MOV AL,BYTE PTR [SI]MOV DX,IO8255A ;自8255A的口输出OUT DX,ALMOV AL,BYTE PTR BZ ;使相应的数码管亮MOV DX,IO8255COUT DX,ALMOV CX,3000DELAY: LOOP DELAY ;延时MOV BH,BYTE PTR BZSHR BH,1JNZ LLLMOV DX,0FFHMOV AH,06INT 21HJE LOOP2 ;有键按下则退出MOV DX,IO8255CMOV AL,0 ;关掉数码管显示OUT DX,ALMOV AH,4CH ;返回INT 21HCODE ENDSEND START;***************;;* 模拟抢答器 *;;***************;DA TA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+289HIO8255C EQU IOPORT+28AHIO8255K EQU IOPORT+28BHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码表DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255K ;设8255为A口输出,C口输入MOV AL,10001001BOUT DX,ALMOV BX,OFFSET LED ;使BX指向段码管首址SSS: MOV DX,IO8255CIN AL,DX ;从8255的C口输入数据OR AL,AL ;比较是否为0JE SSS ;若为0,则表明无键按下,转sssMOV CL,0FFH ;cl作计数器,初值为-1 RR: SHR AL,1INC CLJNC RRMOV AL,CLXLATMOV DX,IO8255AOUT DX,ALMOV DL,7 ;响铃ASCII码为07MOV AH,2INT 21HWAI: MOV AH,1INT 21HCMP AL,20H ;是否为空格JNE EEE ;不是,转eeeMOV AL,0 ;是,关灭灯MOV DX,IO8255AOUT DX,ALJMP SSSEEE: MOV AH,4CH ;返回INT 21HCODE ENDSEND START运行结果:实验一:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。
实验九8255扫描键盘、显示实验一.实验要求利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。
8255PA口做键盘输入线,PB口作扫描线。
二.实验目的1.掌握8255编程方法。
2.掌握扫描键盘和显示的编程方法。
三.实验电路及连线CS8255接8500H,则命令字地址为8506H,PA口地址为8500H,PB口地址为8502H,PC口地址为8504H。
CS8279接8700H,则8279的状态口地址为8701H; 8279的数据口地址为8700H;模块中的十个短路套都套在8255侧。
四.实验说明在PA口与PB口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。
显示部分由8279控制,由7407驱动8位数码管显示。
五.实验程序框图主程序框图读键显示部分框图六.实验程序:D8255 EQU 8506H ;8255状态/数据口地址D8255A EQU 8500H ;8255 PA口地址D8255B EQU 8502H ;8255 PB口地址Z8279 EQU 8701H ;8279状态口地址D8279 EQU 8700H ;8279数据口地址DISPTR EQU 08H ;当前显示位置KEYVAL EQU 09H ;读到的键码ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL DELAY ;延时MOV DISPTR,#30H ;显示缓冲区头指针MOV DPTR,#D8255MOV A,#90H ;置8255状态;方式0,PB,PC口输出,PA口输入MOVX DPTR,AMOV DPTR,#Z8279 ;置8279命令字MOV A,#0D3HMOVX DPTR,A ;清LED显示MOV A,#00HMOVX DPTR,AMOV A,#38HMOVX DPTR,AMOV A,#0D1HKB_DIS:LCALL RD_KB ;读键盘MOV A,#0FFHCJNE A,KEYVAL,DISBUF ;判读到键SJMP KB_DIS ;没有则继续读键DISBUF:LCALL DISP ;把键移入显存LCALL DELAY ;延时消抖LCALL DELAYSJMP KB_DISDISP: ;显存依次前移MOV R1,#31H ;在最后加入新键值MOVE:MOV A,R1DEC R1MOV R1,AINC R1INC R1CJNE R1,#38H,MOVEMOV 37H,KEYVALMOV KEYVAL,#0FFHMOV DPTR,#Z8279MOV A,#90HMOVX DPTR,AMOV R0,#08HMOV R1,#30HMOV DPTR,#D8279LP: MOV A,R1MOVX DPTR,AINC R1DJNZ R0,LPRETRD_KB: ;键盘扫描MOV A,#02H ;扫描第一行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#00HCJNE A,#0FFH,KEYCAL ;判键是否按下MOV A,#01H ;扫描第二行MOV DPTR,#D8255BMOVX DPTR,AMOV DPTR,#D8255AMOVX A,DPTRMOV R1,#08HCJNE A,#0FFH,KEYCALSJMP NOKEY ;无键按下KEYCAL: ;计算键码MOV R0,#08HSHIFT:RRC AJNC CALCINC R1DJNZ R0,SHIFTCALC: ;换算显示码MOV DPTR,#DL_DATMOV A,R1MOVC A,A+DPTRMOV KEYVAL,ARETNOKEY: MOV KEYVAL,#0FFH ;返回无键标志RETDELAY: MOV R0,#0H ;延时子程序DELAY1: MOV R1,#0HDJNZ R1,$DJNZ R0,DELAY1RETDL_DAT: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,FEND实验十8279显示实验一.实验要求编制程序,利用8279及键盘显示接口电路,编程实现按键的读取,并将按键值显示在数码管上。
《微机原理与接口技术》上机实验报告学院(部)专业班级学生姓名学号实验六键盘扫描及显示设计实验一、实验目的1.学习按键扫描的原理及电路接法;2.掌握利用8255完成按键扫描及显示。
二、实验内容1.按原理图1连接好电路。
2.编程: 编程使得在键盘阵列上每按一个键后,微机屏幕和最右端的数码管上有相应字符显示出来,按“E”退出程序。
3.实验提示(1)8255CS接地址译码输出的288h~28fh。
(2)8255的A口PA0~PA7接数码管的a~dp。
数码管位码S0接+5V,S3~S1接GND。
(3)延时程序可用BIOS功能程序INT 1AH的0号功能程序:其出口参数:CH:CL=时:分;DH:DL=秒:1/100秒。
图1 键盘显示连接图三、程序流程四、程序代码data segmentstring db 'the initialization is okay$',0ah,0dhkey db 0e7h, 0ebh, 0edh, 0eeh, 0d7h, 0dbh, 0ddh, 0deh, 0b7h, 0bbh, 0bdh, 0beh, 77h, 7bh, 7dh, 7eharray db 33h, 37h, 66, 70, 32h, 36h, 65, 69, 31h, 35h, 39h, 68, 30h, 34h, 38h, 67num db 16over db ?data endsstack1 segment stack 'stack'dw 50 dup(?)stack1 endscode segmentassume cs:code, ds:data, ss:stack1start:mov ax,datamov ds,axmov ax,seg string ;显示提示mov ds,axmov dx,offset stringmov ah,09hint 21h.while 1call exam.if over == 69mov ah,4chint 21h.endif.endwmov ah,4ch ;/////////////////////int 21hexam proc ;检测子程序//////////////////mov al,81h ;设置8255工作方式字mov dx,28bhout dx,allp1:mov al,00h ;向C端口高四位输出低电平mov dx,28ahout dx,alin al,dx ;C端口低四位cmp al,0fhjz lp1call delay ;延时子程序mov bl,al ;保存列值mov al,88h ;重置8255工作方式字mov dx,28bhout dx,almov al,blmov dx,28ahin al,dx ;读入行值mov ah,blmov cl,4rcr ax,cl.if al == 0b7h ;1 mov over,31hmov al,31hmov dl,almov ah,2hint 21hmov al,06hmov dx,288hout dx,al.endif.if al == 0d7h ;2 mov over,32hmov al,32hmov dl,almov ah,2hint 21hmov al,05bhmov dx,288hout dx,al.endif.if al == 0e7h ;3 mov over,33hmov al,33hmov dl,almov ah,2hint 21hmov al,4fhmov dx,288hout dx,al.endif.if al == 07bh ;4 mov over,34hmov al,34hmov dl,alint 21hmov al,66hmov dx,288hout dx,al.endif.if al == 0bbh ;5 mov over,35h mov al,35hmov dl,almov ah,2hint 21hmov al,6dhmov dx,288hout dx,al.endif.if al == 0dbh ;6 mov over,36h mov al,36hmov dl,almov ah,2hint 21hmov al,7dhmov dx,288hout dx,al.endif.if al == 0ebh ;7 mov over,37h mov al,37hmov dl,almov ah,2hint 21hmov al,07hmov dx,288hout dx,al.endif.if al == 07dh ;8 mov over,38h mov al,38hmov dl,alint 21hmov al,7fhmov dx,288hout dx,al.endif.if al == 0bdh ;9 mov over,39h mov al,39hmov dl,almov ah,2hint 21hmov al,67hmov dx,288hout dx,al.endif.if al == 0ddh ;a mov over,65 mov al,65mov dl,almov ah,2hint 21hmov al,77hmov dx,288hout dx,al.endif.if al == 0edh ;b mov over,66 mov al,66mov dl,almov ah,2hint 21hmov al,7chmov dx,288hout dx,al.endif.if al == 7eh ;c mov over,67 mov al,67mov dl,alint 21hmov al,39hmov dx,288hout dx,al.endif.if al == 0beh ;dmov over,68mov al,68mov dl,almov ah,2hint 21hmov al,5ehmov dx,288hout dx,al.endif.if al == 0deh ;emov over,69mov al,69mov dl,almov ah,2hint 21hmov al,79hmov dx,288hout dx,al.endif.if al == 0eeh ;fmov over,70mov al,70mov dl,almov ah,2hint 21hmov al,71hmov dx,288hout dx,al.endif;////////;////////mov al,81h ;重置8255工作方式字mov dx,28bhout dx,allp6:mov dx,28ahmov al,00hout dx,alin al,dxcmp al,0fhjnz lp6retexam endp ;/////////////////////delay proc near ;延时子程序push ax ;delay 50ms--100msmov ah,0int 1ahmov bx,dxdelay1:mov ah,0int 1ahcmp bx,dxjz delay1mov bx,dxdelay2:mov ah,0int 1ahcmp bx,dxjz delay2pop axretdelay endpcode endsend start。
并行接口8255实验一、实验目的1.掌握可编程并行接口电路8255的工作原理及初始化方法2.掌握8255在实际应用中的硬件连接及编程应用二、实验要求根据实验室现有条件,针对实验任务,设计实验方案并进行实现三、实验内容通过使用8255,8253实现一个倒计时设备,具体的方法是,用户逐个打开开关,然后8255定时读取开关状态并输出给二极管,当所有灯都亮起时,输出一个高电平给Gate0,对8253而言,要求每1s查看一次用户是否摁下了所有开关,一旦是这样蜂鸣器就会响起来,然后给8253送一个锁存命令,查看计数器1和计数器0当前的计数值,锁存两个计数值,便于后期的计算和数据处理。
四、实验线路图其中,8255的各个端口分别是:F0H,F2H,F4H,F6H 8253的各个端口分别是:F8H,F9H,FAH,FBH 五、实验程序清单CSEG SEGMENTASSUME CS:CSEGSTART:;初始化8255和8253MOV DX,F6HMOV AL,1001000BOUT DX,ALMOV DX,FBHMOV AL,01110110BOUT DX,ALMOV AL,00110110B;选择8253计数器1MOV DX,F8HMOV AL,0OUT DX,ALMOV AL,10OUT DX,AL;选择8253计数器0MOV DX,FGHMOV AL,0OUT DX,ALMOV AL,10MOV CX,2000H;用CX延时,读取开关状态 NEXT:OUT DX,ALMOV DX,F2HIN DX,AL;输出开关状态,此时亮起灯,如果灯全亮起,蜂鸣器响起MOV DX,F4HOUT DX,ALLOOP NEXT;锁存两个计数器的计数值MOV AL,00110110BMOV DX,F8HOUT DX,ALMOV AL,01110110BMOV DX,F9HOUT DX,ALCSEG ENDSEND START六、实验总结及体会1.实验总结:本次实验中我设计了8086连接8253和8255的相关电路,并且与输出设备相连接,也重新复习了数电的知识,通过学习微机原理和汇编语言这门接近底层的语言我意识到代码与底层的交互是怎样实现的,也有利于我学习其他的高级语言。
《微机原理及应用技术》课程实验报告实验五可编程并行I/O接口8255【预习内容】1.怎样选中可编程I/O接口?怎样实现I/O端口的寻址?8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。
通过地址/数据总线,按照指定地址进行读写操作直接选中8255。
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片。
CPU与外设交换的数据是以字节为单位进行的。
因此一个外设的数据端口含有8位。
而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许共用一个端口,命令口也可共用。
数据信息、状态信息和控制信息的含义各不相同,按理这些信息应分别传送。
但在微型计算机系统中,CPU通过接口和外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息也都当作数据信息来传送,且将状态信息作为输入数据,控制信息作为输出数据,于是三种信息都可以通过数据总线传送了。
但要注意,这三种信息被送入三种不同端口的寄存器,因而能实施不同的功能。
CPU对外设的访问实质上是对I/O接口电路中相应的端口进行访问,也需要由译码电路来形成I/O端口地址。
I/O端口的编址方式有两种·存储器映象寻址方式·I/O指令寻址方式2.8255A接口芯片内含几个I/O端口?它们的名称分别是?这些I/O口地址有何特点?三个数据端口,三种工作方式A口可工作于方式0、方式1和方式2中的任一种B口可工作于方式0和方式1,但不能工作于方式2C口只能工作于方式08位数据端口:A口、B口、C口A口:PA7~PA0B口:PB7~PB0C口:PC7~PC0连接外部设备A口与B口为一个8位的输入口或输出口C口单独作为一个8位的输入口或输出口配合A口和B口使用,作为控制信号和状态信号3.8255A有几个控制字?怎样设置?它有两个控制字,一个是方式选择控制字,一个是对C口进行置位或复位控制字。
运用8255设计的键盘及显示接口
图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。
将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C
口为输入口; PB0—PB7与七段代码显示器连接B口为输出。
程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出全0,读C
口(行值) 中只要有一位为0,就说明有键按下, 在检测到有键按下后,延迟
一段时间 ,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段
代码显示器就显示与该键相同的数值。
实验步骤
8255接口的应用 键盘及显示接线图
注:圆圈处是要求接的连线。
(1)按图4接线。
(2)输入源程序,汇编、连接后装入系统。
(3)执行程序后, 按一下键盘,7段代码就会显示相应的数字。
程序
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,3000H
MOV AL,00H
MOV [SI],AL ;清空存放数据的缓冲区
MOV [SI+1],AL
MOV [SI+2],AL
MOV [SI+3],AL
MOV DI,3003H
MOV AL,81H ;8255方式字定义 选择0方式,A口为输出;
OUT 63H,AL;B口为输出;C口为输入
BEGIN: CALL DIS ;显示七段代码管数据的子程序
CALL CLEAR ;七段代码管清0子程序
CALL CCSCAN ;检测是否有键按下子程序
JNZ INK1 ;
JMP BEGIN
INK1: CALL DIS
CALL DALLY ;子程序为延时,消抖动
CALL DALLY
CALL CLEAR
CALL CCSCAN
JNZ INK2
JMP BEGIN
INK2: MOV CH,0FEH
MOV CL,00H
COLUM: MOV AL,CH
OUT 60H,AL
IN AL,62H
TEST AL,01H
JNZ LONE
MOV AL,00H
JMP KCODE
LONE: TEST AL,02H
JNZ NEXT
MOV AL,04H
KCODE: ADD AL,CL
CALL PUTBUF
PUSH AX
KON: CALL DIS
CALL CLEAR
CALL CCSCAN
JNZ KON
POP AX
NEXT: INC CL
MOV AL,CH
TEST AL,08H
JZ KERR
ROL AL,1
MOV CH,AL
JMP COLUM
KERR: JMP BEGIN
CCSCAN: MOV AL,00H
OUT 60H,AL
IN AL,62H
NOT AL
AND AL,03H
RET
CLEAR: MOV AL,00H
OUT 61H,AL
RET
DIS: PUSH AX
MOV SI,3000H
MOV DL,0F7H
MOV AL,DL
AGAIN: OUT 60H,AL
MOV AL,[SI]
MOV BX,OFFSET TABLE ;取七段代码首址
AND AX,00FFH
ADD BX,AX
MOV AL,[BX]
OUT 61H,AL
CALL DALLY
INC SI
MOV AL,DL
TEST AL,01H
JZ OUT
ROR AL,1
MOV DL,AL
JMP AGAIN
OUT: POP AX
RET
DALLY: PUSH CX
MOV CX,0010H
T1: MOV AX,0010H
T2: DEC AX
JNZ T2
LOOP T1
POP CX
RET
PUTBUF: MOV SI,DI
MOV [SI],AL
DEC DI
CMP DI,2FFFH
JNZ GOBACK
MOV DI,3003H
GOBACK: RET
CODE ENDS
END START