北京科技大学微机原理实验报告
- 格式:docx
- 大小:340.23 KB
- 文档页数:22
微机原理及应用实验报告学院:班级:学号::微机实验报告书(Ⅰ)学号::班级:同组:实验日期:实验题目: 8253可编程定时器\计数器实验目标:掌握8253的基本工作原理和编程方法实验步骤:连接电路图如图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N<=0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
程序框图:程序清单:;*************************;;* 8253方式0计数器实验 *;;*************************;IOPORT EQU 0C800H-0280HIO8253A EQU IOPORT+283HIO8253B EQU IOPORT+280HCODE SEGMENTASSUME CS:CODESTART: MOV AL,00010000B ;设置8253工作方式MOV DX,IO8253AOUT DX,ALMOV DX,IO8253B ;送计数初值为0FHMOV AL,0FHOUT DX,ALLLL: IN AL,DX ;读计数初值CALL DISP ;调显示子程序PUSH DXMOV AH,06HMOV DL,0FFHINT 21HPOP DXJZ LLL ;跳转到LLLMOV AH,4CH ;退出INT 21HDISP PROC NEAR ;显示子程序PUSH DXAND AL,0FH ;首先取低四位MOV DL,ALCMP DL,9 ;判断是否<=9JLE NUM ;若是则为'0'-'9',ASCII码加30H ADD DL,7 ;否则为'A'-'F',ASCII码加37H NUM: ADD DL,30HMOV AH,02H ;显示INT 21HMOV DL,0DH ;加回车符INT 21HMOV DL,0AH ;加换行符INT 21HPOP DXRET ;子程序返回DISP ENDPCODE ENDSEND START运行结果:每输入一个单脉冲,屏幕上的数值减1,从15减到0后(拨动16次后),检测到OUT0输出由低电平变为高电平。
小结(体会与收获):通过预习和实验,学会了 8253 芯片和微机接口原理和方法,掌握 8253 定时器/计数器的基本工作原理、工作方式和编程原理,熟悉了汇编代码的编写。
实验中,连接电路,利用代码控制实验电路,深对了课本理论的理解。
由于是第一次实验,进程比较缓慢,所以仅进行了8253可编程定时器/计数器的一个实验,下次实验会熟练一些。
微机实验报告书(Ⅱ)学号::班级:同组:实验日期:实验题目: 1.8253可编程定时器\计数器2.8255可编程并行接口(方式0)3.七段数码管实验目标:1.掌握8253的基本工作原理和编程方法2.掌握8255方式0的工作原理及使用方法3.掌握数码管显示数字的原理实验步骤:实验一:连接电路图按上图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
实验二:连接电路图1)实验电路如图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2)编程从8255C口输入数据,再从A口输出。
实验三:连接电路图静态显示:按图连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连, 位码驱动输入端S1接+5V(选中), S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
程序框图:实验一:实验二:实验三:程序清单:实验一:;*******************;* 8253分频 *;*******************IOPORT EQU 0C800H-0280H IO8253A EQU IOPORT+283H IO8253B EQU IOPORT+280H IO8253C EQU IOPORT+281H CODE SEGMENTASSUME CS:CODESTART: MOV DX,IO8253A ;向8253写控制字MOV AL,36H ;工作方式OUT DX,ALMOV AX,1000 ;写入循环计数初值1000 MOV DX,IO8253BOUT DX,AL ;先写入低字节MOV AL,AHOUT DX,AL ;后写入高字节MOV DX,IO8253AMOV AL,76H ;设工作方式OUT DX,ALMOV AX,1000 ;写入循环计数初值1000 MOV DX,IO8253COUT DX,AL ;先写低字节MOV AL,AHOUT DX,AL ;后写高字节MOV AH,4CH ;程序退出INT 21HCODE ENDSEND START实验二:;*************************;;* 8255A的基本输入输出 *;;*************************;IOPORT EQU 0C800H‐280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+ 28BHIO8255C EQU IOPORT+28AHCODE SEGMENTASSUME CS:CODESTART: MOV DX,IO8255B ;对 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,06HINT 21HJZ INPUT ;若无,则继续 C 输入,A 输出MOV AH,4CH;否则,返回 DOSINT 21HCODE ENDSEND START实验三:;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;DATA SEGMENTIOPORT EQU 0C800H-280HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT+28BHIO8255C EQU IOPORT+28AHLED 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,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,IO8255B ;使 8255 的A口为输出方式MOV AX,10000000BOUT DX,ALSSS: MOV DX,OFFSET MESG1 ;显示提示信息MOV AH,09HINT 21HMOV AH,01 ;从键盘接收字符INT 21HCMP AL,30H ;是否小于 0JL EXIT ;若是则退出CMP AL,39H ;是否大于9JG EXIT ;若是则退出SUB AL,30H ;将所得字符的 ASCII 码减 30H MOV BX,OFFSET LED ;BX为数码表的起始地址XLAT ;求出相应的段码MOV DX,IO8255A ;从 8255 的A口输出OUT DX,ALJMP SSS ;转 SSSEXIT: MOV AH,4CH ;返回INT 21HCODE ENDSEND START ;运行结果:实验一:8253通道0和通道1均工作在方式3,计数初值均为1000。
通道0的时钟输入为1MHz标准脉冲,产生1000Hz的方波;通道1以通道0输出的1000Hz方波脉冲为输入,产生1Hz的方波。
用逻辑笔发现,OUT1 输出电平呈规律性高低变化(显示灯闪烁),时间间隔为 1s,说明输出频率为 1Hz,实现计时器功能。
实验二:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。
实验三:静态显示:当从键盘输入0~9任一数字时,七段数码管上便会显示相应的数字,按下其他按键则退出程序。
小结(体会和收获):通过本次实验,进一步了解了8253可编程定时器/计数器;巩固了可编程并行接口8255的基本知识点,了解了该芯片的应用。
通过编程实现,熟悉了8255方式控制字,了解了方式0和基本工作原理。
通过这三次实验的学习,对于可编程接口芯片有了更深的认识,掌握了基本的微机接口方法。
在实验过程中要细心,当编译、或者运行的时候遇到错误的时候,要仔细检查程序的输入是否正确,很容易输错字母数字。
微机实验报告书(Ⅲ)学号::班级:同组:实验日期:实验题目:步进电机控制实验实验目标:1.了解步进电机控制的基本原理2.掌握控制步进电机转动的编程方法实验步骤:连接电路图1) 按图14连接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向。
8255 CS接288H~28FH。
PA0~PA3接BA~BD;PC0~PC7接K0~K7。
2) 编程:当K0~K6中某一开关为“1”(向上拨)时步进电机启动。
K7向上拨电机正转,向下拨电机反转。
程序框图:程序清单:;*******************************;;* 步进电机 *;;*******************************;DATA SEGMENTIOPORT EQU 0E400H-280HIO8255A EQU IOPORT+288H ;8255A 输出端口 IO8255B EQU IOPORT+ 28BH ;8255B 控制端口 IO8255C EQU IOPORT+ 28AH ;8255C 输入端口 BUF DB 0MES DB 'K0-K6 ARE SPEED CONTROL',0AH,0DHDB 'K6 IS THE LOWEST SPEED ',0AH,0DHDB 'K0 IS THE HIGHEST SPEED',0AH,0DHDB 'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,CSMOV DS,AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET MESMOV AH,09INT 21HMOV DX,IO8255BMOV AL, 10001001BOUT DX,AL ;8255 C输入, A 输出MOV BUF,33HOUT1: MOV AL,BUFMOV DX,IO8255AOUT DX,ALPUSH DXMOV AH,06HMOV DL,0FFHINT 21HPOP DXJE IN1MOV AH,4CHINT 21HIN1: MOV DX,IO8255CIN AL,DX ;输入开关状态 TEST AL,01HJNZ K0TEST AL,02HJNZ K1TEST AL,04HJNZ K2TEST AL,08HJNZ K3TEST AL,10HJNZ K4TEST AL,20HJNZ K5TEST AL,40HJNZ K6STOP: MOV DX,IO8255CMOV AL,0FFHJMP OUT1K0: MOV BL,40HSAM: TEST AL,80HJZ ZX0JMP NX0K1: MOV BL,50HJMP SAM K2: MOV BL,70HJMP SAMK3: MOV BL,80HJMP SAMK4: MOV BL,0A0HJMP SAMK5: MOV BL,0C0HJMP SAMK6: MOV BL,0FFHJMP SAMZX0: CALL DELAYMOV AL,BUFROR AL,1MOV BUF,ALJMP OUT1NX0: CALL DELAYMOV AL,BUFROL AL,1MOV BUF,ALJMP OUT1DELAY PROC NEARDELAY1: MOV CX,0FFFFHDELAY2: LOOP DELAY2DEC BLJNZ DELAY1RETDELAY ENDPCODE ENDSEND START运行结果:当K0~K6中任意一开关向上拨时步进电机启动,且K1速度最快,K6速度最慢;当K7向上拨电机正转,向下拨电机反转。