综合实验(8253+8259+8255控制步进电动机)

合集下载

微机原理综合实验报告

微机原理综合实验报告

微机原理综合实验报告目录一.8255并行口实验二.8259中断实验(一)三.8253定时/计数器实验四.A/D转换实验五.步进电机实验六.综合实验:十字路口交通灯实验七.实验体会四.8255并行口实验1.实验目的:(1)学习利用并行接口芯片8255构成并行接口电路的基本方法(2)熟悉掌握并行接口芯片8255的基本性能及在时间应用中的硬件连接、初始化编程方法2.实验内容:编写程序,使8255的PB口为输出口,PA口为输入口,从PA口将K0~K7作为一个字节读入,在从PB口输出这一反码字节。

3.实验程序:CODE SEGMENTASSUME CS:CODESTART:MOV DX,21BH ;8255初始化命令字MOV AL,90HOUT DX,ALBG: MOV DX,218H ;从PA口读入数据IN AL,DXXOR AL,FFH ;求反MOV DX,219HOUT DX,AL ;从PB口输出JMP BGCODE ENDSEND START4.实验框图5. 实验电路图6.实验方法说明通过8255控制字设定PA口为输入口,PB口为数据输出口,读取PA口的数值并通过求反指令将数据取反后,经由PB口输出。

8259中断实验(一)1.实验目的:(1)了解PC机的中断结构及8259中断控制器的初始化(2)熟悉8259中断控制器的工作原理和硬件连线方法(3)了解8259的应用和硬件编程方法了解8259中断屏蔽2.实验内容:编写中断实验程序,主程序使8255的PB口为输出口,输出0FFH,L0~L7指示灯全亮,中断服务程序从PB口输出0FFH,L0~L3亮,L4~L7灭,并延时一段时间后返回主程序。

3.实验程序INT0 EQU 220hINT1 EQU 221hP8255B EQU 219HP8255K EQU 21BHSTACK SEGMENTSTA DB 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:CLIMOV AX,TOPMOV SP,AXPUSH DSMOV AX,0000H ;定义IRQ0中断MOV DS,AXMOV AX,OFFSET IRQ0ADD AX,0000HMOV SI,20HMOV [SI],AXMOV AX,CSMOV SI,22HMOV [SI],AXPOP DSMOV AL,13H ;对8259进行初始化ICW1MOV DX,INT0OUT DX,ALMOV AL,8 ;对8259进行初始化ICW2 MOV DX,INT1OUT DX,ALMOV CX,0FFFFHLOOP $MOV AL,9 ;对8259进行初始化ICW4 MOV DX,INT1OUT DX,ALMOV CX,0FFFFHLOOP $MOV DX,INT1MOV AL,0FEH ;对8259进行初始化OCW1OUT DX,ALMOV CX,0FFFFHLOOP $MOV DX,INT0 ;对8259进行初始化OCW2,普通EOI返回MOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOP $STIMOV DX,P8255K ;对8255进行初始化MOV AL,90HOUT DX,ALDSP: MOV AL,0FFHMOV DX,P8255BOUT DX,ALJMP DSPIRQ0: STIMOV CX,0FFFFHLOOP $MOV AL,0FHMOV DX,P8255BOUT DX,ALMOV DX,INT0MOV AL,20HOUT DX,ALMOV CX,0FFFFHLOOP $MOV CX,0FFFFHLOOP $IRETCODE ENDSEND START4.实验框图5. 实验电路图6. 实验方法说明主程序使8255输出高电平,实现L0~L7指示灯全亮。

8259、8253实验报告

8259、8253实验报告

数字逻辑与CPU实验报告实验内容:8259中断控制器、8253可编程定时/计数器接口实验姓名:班级:学号:实验一8259中断控制器实验一、实验目的1、掌握8259的工作原理。

2、掌握编写中断服务程序的方法。

3、掌握初始化中断向量的方法。

二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验方法(1)连线1、单脉冲发生器输出P+与8259的IR0相连;2、8259的片选CS8259与CS0相连;3、8259的INT与8086的INT相连;4、CS273与CS1相连;5、00与LED1相连;其他线均已连好。

(2)在8086实验系统软件中编辑程序,编译链接后,调试程序,程序流程图如图2。

(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

四、程序源代码CODE SEGMENT PUBLICASSUME CS:CODEORG 100H;设置堆栈起点0100HSTART: 图2 程序流程图 MOV DX,4A0HMOV AX,13H ;写ICW1,单片8259,要写ICW4OUT DX,AXMOV DX,4A2HMOV AX,80H ;写入ICW2,设定IR0中断类型吗为80HOUT DX,AXMOV AX,01 ;写入ICW4,设定一般嵌套,非自动EOI方式 OUT DX,AXMOV AX,0 ;写入OCW1,设定允许中断。

OUT DX,AXMOV AX,0MOV DS,AXMOV SI,200H ;中断向量预存放在0100:0200H(向量码80H) MOV AX,OFFSET HINT;取中断服务程序的入口地址MOV DS:[SI],AXADD SI 2MOV AX,CSMOV DS:[SI],AXSTI;开中断JMP $;原地跳转HINT:;中断服务程序XOR CX,0FFH;CX全部取反(8位)MOV DX,4B0H;CS273接口的地址,与8个LED灯相连MOV AX,CX;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的的地址MOV AX,20H;写入OCW2,一般EOI命令,全嵌套方式OUT DX,AXIRET;中断返回CODE ENDSEND START五、实验结果程序调试通过后,当我们按一次单脉冲发生器的输出开关,对应连好的灯就会亮。

实验八 步进电动机驱动实验

实验八 步进电动机驱动实验

南昌大学实验报告步进电动机驱动实验一、实验目的1、了解控制步进电动机的基本原理2、掌握控制不进机转动的编程方法二、实验要求利用8255的PC端口PC0~PC3轮流输出脉冲序列,利用实验机上键盘控制步进电动机的转速和转动方向。

三、实验程序C8279 EQU 239HD8279 EQU 238HC8255 EQU 206HP8255C EQU 204HCODE SEGMENTASSUME CS:CODE,DS:CODESTART:PUSH CSPOP DSINI:MOV DX,C8255MOV AL,80HOUT DX,ALMOV DX,C8279MOV AL,00HOUT DX,ALMOV AL,2AHOUT DX,ALMOV AL,90HOUT DX,ALMOV AL,0D1HOUT DX,ALW AIT1:IN AL,DX ;读8279状态字,判是否有键按下MOV AH,ALAND AL,80HJNZ W AIT1MOV AL,AHAND AL,0FHCMP AL,00HJE WAIT1LEA BX,STEPRUN:CALL CHKKEYCALL DISPLAYMOV CX,08HLOOP3:MOV DX,P8255CMOV AL,[SI]OUT DX,ALINC SICALL DELAYLOOP LOOP3JMP RUNCHKKEY PROC NEARRDKEY:MOV DX,C8279IN AL,DXMOV AH,ALAND AL,80HCMP AL,80HJE RDKEYMOV AL,AHAND AL,0FHCMP AL,00HJE RTNMOV AL,40HOUT DX,ALMOV DX,D8279IN AL,DXCHK:CMP AL,0FHJE QUITCMP AL,0AH ;判是否大于A键JNC DIREMOV DELAYTIME,ALJMP RTNDIRE:CMP AL,0BHJNE NEXTMOV DIRDSP,40HLEA BX,STEPJMP RTNNEXT:CMP AL,0CHJNE RTNMOV DIRDSP,46HLEA BX,STEPADD BX,07HRTN:MOV SI,BXRETCHKKEY ENDPDELAY PROC NEARPUSH CXMOV CX,0AHSUB CL,DELAYTIMELOOP1:PUSH CXMOV CX,03FFHLOOP2:NOPLOOP LOOP2POP CXLOOP LOOP1POP CXRETDELAY ENDPDISPLAY PROC NEARPUSH BXMOV DX,D8279MOV AL,DELAYTIMELEA BX,LEDXLATOUT DX,ALMOV AL,DIRDSPOUT DX,ALMOV CX,0006HLEA BX,DSPLOOP4:MOV AL,[BX]OUT DX,ALINC BXLOOP LOOP4MOV DX,C8279MOV AL,0C2HOUT DX,ALPOP BXRETDISPLAY ENDPQUIT:MOV DX,C8279MOV AL,0D2HOUT DX,ALJMP $LED DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH DSP DB 5EH,79H,79H,73H,6DH,0EDH DELAYTIME DB 01HSTEP DB 04H,05H,01H,09H,08HDB 0AH,02H,06H,02H,0AHDB 08H,09H,01H,05H,04HSTEP DB 08H,0CH,04H,06H,02HDB 03H,01H,09H,01H,03HDB 02H,06H,04H,0CH,08HDIRDSP DB 40HCODE ENDSEND START四、实验连线及结果CS8255--200H,CS8279已固定接至238H。

综合实验(8253+8259+8255控制步进电动机)

综合实验(8253+8259+8255控制步进电动机)
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h
out dx,al
OUT DX, AL ;
MOV AL, 80H ;设置中断向量号
MOV DX, 04C2H ;从04C2H端口地址送初始化命令字ICW2
OUT DX, AL ;
MOV AL, 01H ;设置ICW4,1680X86处理器
OUT DX, AL ;
MOV AL, 0FEH ;1111 1110设置OCW1值,允许IR0中断,禁止其他中断
四、实验原理
本实验由8253、8255、8259三个芯片及步进电机组成,各芯片的工作原理参看前各部分实验。
五、实验步骤
1、实验连线
8255CS~CS0,8255A口接步进电机A、B、C、D,为了观察步进电机的通电情况,将A、B、C、D插孔与发光二极管相连
8253CS~CS1,CLK2~8253CLK0,out0~8259IR0;
STI
JMP $
int8259:
CLI
MOV AL, BL ;中断程序
MOV DX, 04A0H ;向8255的A口写入高低电平
OUT DX, AL ;
MOV DX, 04A2H ;8255 B口端口地址04A2H
IN AL, DX ;从B口读入数据
TEST AL, 01H ;读入数据与0000 0001相与

8253、8259、8255综合设计题

8253、8259、8255综合设计题

1.键盘中断(8255,8259),设计一程序当按下任意键或任意组合键时从8255的A口读出按键扫描码并显示,按“ESC”键退出。

2.交通灯控制系统:按照时间控制原则,利用并行接口和定时器,采用时间中断方式设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。

可利用8255、8253、8259等接口电路。

(可到实验室完成)
3.键盘电子乐器:利用并行接口8255作为键盘接口,设计一个具有2个八度音阶的键盘乐器,音阶键不少于16个,采用扫描方式管理键盘,音域范围自行定义。

8255控制步进电机

8255控制步进电机

微型计算机原理综合实验装题目:步进电机控制订线学院电子信息工程学院学科门类工科专业电子科学与技术学号**********姓名张少雄指导教师高芳2008 年12 月21 日步进电机控制摘要:在本实验中,通过汇编语言对可编程I/O口扩展芯片8255编程,控制其输出信号。

8255的输出端连接驱动电路,使驱动电路按照程序设定好的方式导通,来控制步进电机的转动。

并且在程序中设定,由键盘控制步进电机的转向。

关键词:步进电机、微处理器、8255、控制、转向。

目录一.实验目的--------------------------------------2二.设计要求------------------------------2三、设计原理------------------------------3 四.硬件工作原理--------------------------4 五.程序框图------------------------------5 六.总结与体会-----------------------------5 参考文献----------------------------------6附录--------------------------------------7一.实验目的1.1掌握8255的使用方法掌握8255可编程I\O扩展芯片的编程方法,通过对工作方式的设定,使其能够对步进电机的驱动电路起到控制作用。

1.2掌握步进电机的工作原理了解步进电机的工作原理,熟悉型号为30BYJ011的步进电机的性能参数和四相八拍工作方式的特点,1.3 掌握模拟电路的基本知识通过对步进电机的驱动电路的设计,进一步掌握模拟电路在实际中的应用。

二.设计要求2.1外设电路要求设计外设电路,使电路能够驱动步进电机的转动,符合步进电机的使用要求。

本实验采用的步进电机型号为30BYJ011,工作方式为四相八拍,工作电压为DC12V 。

微机原理实验报告

微机原理实验报告

微机原理实验报告一、实验目的本次微机原理实验的主要目的是通过实际操作和观察,深入理解微机系统的工作原理和组成结构,掌握微机系统的编程和调试方法,提高我们对微机原理的实际应用能力。

二、实验设备1、计算机一台2、微机原理实验箱一套三、实验内容1、 8255 并行接口实验了解 8255 芯片的工作原理和编程方法。

通过编程实现 8255 芯片的 A 口、B 口、C 口的输入输出控制。

2、 8253 定时/计数器实验掌握 8253 芯片的工作方式和编程要点。

利用 8253 芯片实现定时和计数功能。

3、 8259 中断控制器实验学习 8259 芯片的中断管理机制。

编写中断服务程序,实现中断响应和处理。

四、实验原理1、 8255 并行接口8255 是一种可编程的并行接口芯片,具有 A、B、C 三个 8 位端口。

通过对控制字的编程,可以设置各个端口的工作方式为输入或输出。

2、 8253 定时/计数器8253 包含三个独立的 16 位计数器,每个计数器可以工作在不同的方式下,如方式 0 到方式 5。

通过对计数器的初值设置和控制字编程,可以实现定时和计数功能。

3、 8259 中断控制器8259 用于管理外部中断请求,可实现中断优先级的判断和中断嵌套。

通过对 8259 的初始化编程,可以设置中断触发方式、中断向量等。

五、实验步骤1、 8255 并行接口实验连接实验电路,将 8255 芯片与实验箱上的相关引脚连接好。

编写程序,设置 8255 的控制字,使 A 口为输出,B 口为输入。

向 A 口输出数据,从 B 口读取数据,并观察实验结果。

2、 8253 定时/计数器实验连接实验电路,将 8253 芯片与实验箱上的相关引脚连接好。

编写程序,设置 8253 计数器 0 的工作方式为方式 2,初值为 1000。

启动计数器,观察输出引脚的波形变化。

3、 8259 中断控制器实验连接实验电路,将 8259 芯片与实验箱上的相关引脚连接好。

微型计算机实验报告用8253和8259实现电子表洗衣机控制系统

微型计算机实验报告用8253和8259实现电子表洗衣机控制系统

2015-2016 学年第一学期《微型计算机技术》课程设计报告项目组:第八组学院:计算机科学与工程指导教师:唐培丽设计时间:2016年1月目录一、团队构成及分工 (3)二、项目进度计划 (4)三、实验报告 (5)四、设计报告 (7)五、程序清单 (20)六、课程设计总结 (40)一、团队构成及分工指导教师签字:年月日二、项目进度计划三、实验报告1.实验目的1.学习8253编程定时/计数器的工作方式。

2.掌握中断控制器8259A与微处理机接口的原理和方法。

3.掌握中断控制器8259A的应用编程。

2.实验内容利用8253的定时器功能。

8253的四个端口地址为48H,49H,4AH,4BH,本实验采用8253的通道2,工作在方式3(方波发生器方式)输入CLK2为1KHZ。

输出OUT2作为8259的断请求信号。

8259有两个口地址,本实验为20H和21H,其中20H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,中断类型号的起始值是8,采用3号中断源,即IRQ3和8253输出口OUT2相连,每过1秒接收到一个中断,向8259发出中断请求信号, CPU响应后,在中断处理程序中,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。

计数初值的计算:1/1000000*X=1/20 X=50000D=0C350H(用1MHZ信号产生1/20秒方波)3.实验步骤1.连接好实验线路。

图1-1 实验连线图2.编写程序并调试。

3.运行程序,实验仪显示器上显示一电子秒表。

4.实验记录显示屏亮,刚开始可以看到八段管的第六个管开始显示数字,计时开始,每秒加1,实现了时钟效果。

现象的原因分析:程序写入控制字与计数初值后,定时器启动工作,当计数器减到1时,输出端输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端输出1s,向CPU申请中断,其中一个数码管显示,当计数到60s时,输出端向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h,CPU处理,使数码管的显示发生变化。

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。

8255的B口作为输出口,与发光二极管相连。

编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。

二,实验目的(1)掌握8255的工作原理。

(2)掌握编写8255并行接口初始化及编程实现的方法。

三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,全速运行,观察实验结果。

(4)撰写实验报告。

五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。

当某一开关拨到低电平时,对应的LED灯点亮。

当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。

CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。

计数器定时器8253和并行接口8255综合实验

计数器定时器8253和并行接口8255综合实验

计数器定时器8253和并行接口8255综合实验一、实验目的1.掌握8253定时原理和初始化方法。

2.掌握8255并行输入输出原理和初始化方法。

3.掌握定时器8253和并行接口8255的综合应用设计技术。

二、实验内容用8253定时1秒钟,“时间到”信号可由8255端口的一个位检测得到。

在8255的另一个端口连接8个发光二极管,则可实现每隔1秒钟循环点亮1个灯。

还可以在8255端口的另一个位连接一只开关,当开关拨到1时进入运行状态,当拨到0时返回DOS。

三、实验程序流程图四、实验硬件接线图程序清单:CODE SEGMENTASSUME CS:CODESTART:MOV AL,10010000B ;8255初始化MOV DX,28BH ;间接I/O寻址方式,8255的控制口地址OUT DX,AL ;将8255控制字送控制端口地址PR0: MOV AL,00110110B ;8253计数器0工作方式字MOV DX,283H ; 间接I/O寻址方式,8253的控制口地址OUT DX,AL ;将8253计数器0控制字送到控制端口地址MOV AX,1000 ;计数初值MOV DX,280H ;选中计数器0OUT DX,AL ; 将计数初值低字节送8253计数器0端口地址MOV AL,AH ; 先读写低字节,再读写高字节OUT DX,AL ; 将计数初值高字节送8253控制端口地址PR1: MOV AL,01111100B ;8253计数器1工作方式字MOV DX,283H ; 间接I/O寻址方式OUT DX,AL ;将8253计数器1控制字送到控制端口地址MOV AX,1000 ;计数初值MOV DX,281H ;选中计数器1OUT DX,AL ; 将计数初值低字节送8253计数器1端口地址MOV AL,AH ;先读写低字节,再读写高字节OUT DX,AL ;将计数初值高字节送8253控制口地址MOV BL,01HMOV DX,28AH ; 间接I/O寻址方式,8255的C口地址MOV AL,BLOUT DX,AL ;点亮一盏灯L1:MOV DX,288H ; 间接I/O寻址方式,8255的A口地址IN AL,DXTEST AL,10000000B ;测试PA7开关JE NEXT ;若为0则返回DOSL2: MOV DX,288H ;8255A口地址IN AL,DXTEST AL,00000001B ;测PA0,若是1则继续测PA0JNE L2ROL BL,1 ;若是0则准备点亮下一盏灯MOV DX,28AH ;8255C口地址MOV AL,BL ;点亮下一盏灯OUT DX,ALL3: MOV DX,288H ;8255A口地址IN AL,DXTEST AL,01H ;测PA0,若是0则继续测PA0JE L3 ;定时到OUT输出低电平并维持一个CLK周期JMP L1 ;若PA0为1,则跳转至L1NEXT: MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START。

控制步进电机实验报告(3篇)

控制步进电机实验报告(3篇)

第1篇一、实验目的1. 理解步进电机的工作原理及控制方法。

2. 掌握单片机与步进电机驱动模块的接口连接方法。

3. 学习使用C语言编写程序,实现对步进电机的正反转、转速和定位控制。

4. 通过实验,加深对单片机控制系统的理解。

二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是控制精度高、响应速度快、定位准确。

步进电机控制实验主要涉及以下几个方面:1. 步进电机驱动模块:常用的驱动模块有ULN2003、A4988等,它们可以将单片机的数字信号转换为步进电机的控制信号。

2. 单片机:单片机是整个控制系统的核心,负责接收按键输入、处理数据、控制步进电机驱动模块等。

3. 步进电机:步进电机分为单相、双相和三相等类型,本实验使用的是双相四线步进电机。

三、实验设备1. 单片机开发板:例如STC89C52、STM32等。

2. 步进电机驱动模块:例如ULN2003、A4988等。

3. 双相四线步进电机。

4. 按键。

5. 数码管。

6. 电阻、电容等元件。

7. 电源。

四、实验步骤1. 硬件连接(1)将步进电机驱动模块的输入端(IN1、IN2、IN3、IN4)分别连接到单片机的P1.0、P1.1、P1.2、P1.3口。

(2)将按键的输入端连接到单片机的P3.0口。

(3)将数码管的段选端连接到单片机的P2口。

(4)将步进电机驱动模块的电源端连接到电源。

(5)将步进电机连接到驱动模块的输出端。

2. 编写程序(1)初始化单片机I/O端口,设置P1口为输出端口,P3.0口为输入端口,P2口为输出端口。

(2)编写按键扫描函数,用于读取按键状态。

(3)编写步进电机控制函数,实现正反转、转速和定位控制。

(4)编写主函数,实现以下功能:a. 初始化数码管显示;b. 读取按键状态;c. 根据按键状态调用步进电机控制函数;d. 更新数码管显示。

3. 调试程序(1)将程序烧写到单片机中;(2)打开电源,观察数码管显示和步进电机运行状态;(3)根据需要调整程序,实现不同的控制效果。

微机原理综合设计实验

微机原理综合设计实验

组别班级姓名学号班级姓名学号题目:电子钟内容:利用8253和8259芯片实现实时电子时钟的功能;利用8255控制七段数码管完成定时扫描显示。

显示格式为xx时xx分xx秒,每隔1s,时间值改一次。

按键SHIFT可选择时、分、秒,按键CTRL可对所选的时、分、秒进行加1,小时加至23后清0,分、秒加至59后清0。

要求:1、查阅资料,掌握共阴极七段数码管的工作原理。

2、分析实验原理,设计实验方案,绘出实验连线图。

3、绘制实验程序流程图。

4、编写实验程序,检查无误后,编译、链接并下载入实验系统。

5、运行实验程序,验证程序功能。

扩展要求:能够使电子钟定时闹钟,例如在06:30:00时,点亮LED灯进行闹钟报警。

组别班级姓名学号班级姓名学号题目:倒计时秒表内容:利用8253和8259芯片实现秒表倒计时的功能;利用8255控制七段数码管完成定时扫描显示。

显示格式为xxx秒xx十毫秒,每隔10ms,时间值改一次。

按键SHIFT可选择启动或关闭秒表,按键CTRL可设置倒计时初值,对秒单元进行加1,最大值999秒。

要求:1、查阅资料,掌握共阴极七段数码管的工作原理。

2、分析实验原理,设计实验方案,绘出实验连线图。

3、绘制实验程序流程图。

4、编写实验程序,检查无误后,编译、链接并下载入实验系统。

5、运行实验程序,验证程序功能。

扩展要求:能够使电子秒表在最后十秒保存LED闪烁进行报警提示。

组别班级姓名学号班级姓名学号题目:电子琴A内容:利用8253实现电子琴的发声;利用8255控制实验上的键盘。

能够使用按键演奏出不同音阶,至少有14个音阶。

能够通过按键选择播放已编好的乐曲。

要求:1、查阅资料,掌握8253发出不同音阶的方法,设计蜂鸣器发声电路。

2、分析实验原理,设计实验方案,绘出实验连线图。

3、绘制实验程序流程图。

4、编写实验程序,检查无误后,编译、链接并下载入实验系统。

5、运行实验程序,验证程序功能。

扩展要求:当按下按键发声时,七段数码管同步显示当前音阶。

微机原理实验8237,8251,8253,8255,8259程序精华版

微机原理实验8237,8251,8253,8255,8259程序精华版

8237实验程序.MODEL TINYDMAaddr EQU 0E000H ;8237基地址.STACK 100.CODESTAR: MOV AX,0MOV DS,AXmov si,3000hmov al,0ffhmov cx,0800hSTAR3: mov [si],alinc sidec alloop STAR3mov al,04hmov dx,DMAaddr+8out dx,al ;禁止DMA操作mov al,00mov dx,DMAaddr+0dhout dx,al ;复位mov dx,DMAaddr+0chout dx,al ;清除先/后寄存器; mov dx,3000h ;源启始地址3000H mov dx,DMAaddr+00hout dx,almov al,30hout dx,almov al,00mov dx,DMAaddr+0chout dx,al ;清除先/后寄存器; mov dx,6000h ;目的启始地址6000Hmov dx,DMAaddr+02hout dx,almov al,60hout dx,almov al,00mov dx,DMAaddr+0chout dx,al ;清除先/后寄存器mov dx,DMAaddr+03hmov ax,7ffh ;长度0800Hout dx,almov al,ahout dx,almov dx,DMAaddr+0bhmov al,88hout dx,al ;通道0方式字mov al,85hout dx,al ;通道1方式字mov dx,DMAaddr+8mov al,41hout dx,al ;允许8237工作、存贮器方式传送star1: mov dx,DMAaddr+0fhmov al,0chout dx,al ;允许通道0、通道1mov dx,DMAaddr+09hmov al,04hout dx,al ;允许DMA操作mov dx,DMAaddr+08hNOPNOPstar2: in al,dxTEST AL,03Hjz star2 ;等待DMA结束mov dx,DMAaddr+0dhin al,dx ;读暂存寄存器mov dx,DMAaddr+0chout dx,almov dx,DMAaddr+3 ;清除先/后寄存器IN AL,DXMOV AH,ALIN AL,DXCMP AX,0FFFFHJNZ star1mov dx,DMAaddr+09hmov al,00hout dx,al ;清除DMA请求mov dx,DMAaddr+08hmov al,04hout dx,al ;禁止DMA操作mov dx,DMAaddr+0dhin al,dx ;读暂存寄存器mov si,3000hmov bx,6000hmov cx,0800hSTAR5: mov al,[si]cmp al,ds:[bx]jne falseinc siinc bxloop STAR5true: jmp $false: jmp $END STAR////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 8251实验程序.MODEL TINY;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bpsCTL_ADDR EQU 0FF01H ;控制字或状态字DA TA_ADDR EQU 0FF00H ;读写数据W_8253_T0 EQU 0BF00H ;计数器0地址W_8253_C EQU 0BF03H ;控制字.STACK 100.DATAReceive_Buffer DB 10 DUP(0) ;接受缓冲器Send_Buffer EQU Receive_Buffer ;发送缓冲器.CODESTART: MOV AX,@DA TAMOV DS,AXMOV ES,AXNOPCALL INIT_8253CALL INIT_8251START1: MOV CX,10CALL Receive_GroupMOV CX,10CALL Send_GroupJMP START1INIT_8253 PROC NEARMOV DX,W_8253_CMOV AL,37H ;定时器0,方式3OUT DX,ALMOV DX,W_8253_T0MOV AL,26H ;BCD码26(2000000/26)=16*4800OUT DX,ALMOV AL,0OUT DX,ALRETINIT_8253 ENDPINIT_8251 PROC NEARCALL RESET_8251MOV DX,CTL_ADDR;?MOV AL,7EH;? ;波特率系数为16,8个数据位OUT DX,AL;? ;一个停止位,偶校验CALL DLTIME ;延时MOV AL,15H;? ;允许接收和发送发送数据,清错误标志OUT DX,AL;?CALL DLTIMERETINIT_8251 ENDPReset_8251 PROC NEARMOV DX,CTL_ADDRMOV AL,0OUT DX,AL ;向控制口写入"0"CALL DLTIME ;延时,等待写操作完成OUT DX,AL ;向控制口写入"0"CALL DLTIME ;延时OUT DX,AL ;向控制口写入"0"CALL DLTIME ;延时MOV AL,40H ;向控制口写入复位字40HOUT DX,ALCALL DLTIMERETReset_8251 ENDP;接受一组数据,CX--接受数目Receive_Group PROC NEARLEA D I,Receive_BufferReceive_Group1: CALL Receive_ByteSTOSBLOOP Receive_Group1RETReceive_Group ENDP;接受一个字节Receive_Byte PROC NEARMOV DX,CTL_ADDRReceive_Byte1:IN AL,DX;? ;读入状态TEST AL,2;?JZ Receive_Byte1;? ;有数据吗?MOV DX,DATA_ADDR;?IN AL,DX;?RETReceive_Byte ENDP;发送一组数据,CX--发送数目Send_Group PROC NEARLEA S I,Send_BufferSend_Group1:LODSB ;?CALL Sendbyte;?LOOP Send_Group1;?RETSend_Group ENDP;发送一个字节Sendbyte PROC NEARPUSH AXMOV DX,CTL_ADDR ;读入状态Sendbyte1: IN AL,DX;?TEST AL,1;?JZ Sendbyte1;? ;允许数据发送吗?POP AX;? ;发送MOV AX,DA TA_ADDR;?OUT DX,AL;?RETSendbyte ENDP;延时DLTIME PROC NEARMOV CX,10LOOP $RETDLTIME ENDPEND START////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 8253实验程序.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,35HOUT DX,AL ;计数器T0设置在模式2状态,BCD码计数MOV DX,T0_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALMOV DX,COM_ADDRMOV AL,77HOUT DX,ALMOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALJMP $ ;OUT1输出频率为1S的方波END START////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 8255实验程序.MODEL TINYCOM_ADD EQU 0F003HPA_ADD EQU 0F000HPB_ADD EQU 0F001HPC_ADD EQU 0F002H.STACK 100.DATALED_Data DB 01111101B ;东西绿灯,南北红灯DB 11111101B ;东西绿灯闪烁,南北红灯DB 10111101B ;东西黄灯亮,南北红灯DB 11010111B ;东西红灯,南北绿灯DB 11011111B ;东西红灯,南北绿灯闪烁DB 11011011B ;东西红灯,南北黄灯亮.CODESTART: MOV AX,@DA TAMOV DS,AXNOPMOV DX,COM_ADDMOV AL,80H ;PA、PB、PC为基本输出模式OUT DX,ALMOV DX,PA_ADD ;灯全熄灭MOV AL,0FFHOUT DX,ALLEA B X,LED_DataSTART1: MOV AL,0XLATOUT DX,AL ;东西绿灯,南北红灯CALL DL5SMOV CX,6START2: MOV AL,1XLATOUT DX,AL ;东西绿灯闪烁,南北红灯CALL DL500msMOV AL,0XLATOUT DX,ALCALL DL500msLOOP START2MOV AL,2 ;东西黄灯亮,南北红灯XLATOUT DX,ALCALL DL3SMOV AL,3 ;东西红灯,南北绿灯XLATOUT DX,ALCALL DL5SMOV CX,6START3: MOV AL,4 ;东西红灯,南北绿灯闪烁XLATOUT DX,ALCALL DL500msMOV AL,3XLATOUT DX,ALCALL DL500msLOOP START3MOV AL,5 ;东西红灯,南北黄灯亮XLATOUT DX,ALCALL DL3SJMP START1DL500ms PROC NEARPUSH CXMOV CX,60000DL500ms1: LOOP DL500ms1POP CXRETDL500ms ENDPDL3S PROC NEARPUSH CXMOV CX,6DL3S1: CALL DL500msLOOP DL3S1POP CXRETENDPDL5S PROC NEARPUSH CXMOV CX,10DL5S1: CALL DL500msLOOP DL5S1POP CXRETENDPEND START////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 8259实验程序.MODEL TINYEXTRN Display8:NEARIO8259_0 EQU 0F000HIO8259_1 EQU 0F001H.STACK 100.DATABUFFER DB 8 DUP(?)Counter DB ?ReDisplayFlagDB 0.CODESTART: MOV AX,@DA TAMOV DS,AXMOV ES,AXNOPCALL Init8259CALL WriIntverMOV Counter,0 ;中断次数MOV ReDisplayFlag,1 ;需要显示STI ;开中断START1: CMP ReDisplayFlag,0JZ START1CALL LedDisplayMOV ReDisplayFlag,0JMP START1Init8259 PROC NEARMOV DX,IO8259_0MOV AL,13HOUT DX,ALMOV DX,IO8259_1MOV AL,08HOUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0FEHOUT DX,ALRETInit8259 ENDPWriIntver PROC NEARPUSH ESMOV AX,0MOV ES,AXMOV DI,20HLEA A X,INT_0STOSWMOV AX,CSSTOSWPOP ESRETWriIntver ENDPLedDisplay PROC NEARMOV AL,CounterMOV AH,ALAND AL,0FHMOV Buffer,ALAND AH,0F0HROR AH,4MOV Buffer + 1,AHMOV Buffer + 2,10H ;高六位不需要显示MOV Buffer + 3,10HMOV Buffer + 4,10HMOV Buffer + 5,10HMOV Buffer + 6,10HMOV Buffer + 7,10HLEA S I,BufferCALL Display8RETLedDisplay ENDPINT_0: PUSH DXPUSH AXMOV AL,CounterADD AL,1DAAMOV Counter,ALMOV ReDisplayFlag,1MOV DX,IO8259_0MOV AL,20HOUT DX,ALPOP AXPOP DXIRETEND START。

实验5 步进电机控制实验

实验5 步进电机控制实验

实验五、步进电机控制实验5.1实验目的1.学习步进电机的控制方法。

2.学会用8255控制步进电机。

5.2实验内容1.学习步进电机的控制方法,编写程序,利用8255的B口来控制步进电机的运动。

2.计算步进电机的步距角、齿距角。

5.3 实验原理使用开环控制方式能对步进电机的转动方向、速度、角度进行调节。

所谓步进,就是指每给步进电机一个递进脉冲,步进电机各绕组的通电顺序就改变一次,即电机转动一次。

实验平台可连接的步进电机为四相八拍电机,电压为DC12V,其励磁线圈及其励磁顺序如图4-l-1及表4-1-l 所示。

实验中PB端口各线的电平在各步中的情况如表4-1-2所示。

实验电路如图4-1-2 所示。

5.4 实验步骤及说明Data segmentTTABLE DB 01H,03H,02H,06H,04H,0CH,08H,09H;Data endsMOV DX,MY8255_MODE ;定义8255工作方式MOV AL,80H ;工作方式0,B口为输出OUT DX,ALMOV BX,OFFSET TTABLEMOV CX,0008H MOV AL,[BX]MOV DX,MY8255_BOUT DX,ALCALL DALLY在返回DOS之前,给B口清零MOV AL,0MOV DX,MY8255_BOUT DX,ALDALLY PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,5000HD2: DEC AXJNZ D2LOOP D1POP AX POP CXRET DALLY ENDP;***************根据CHECK 配置信息修改下列符 号值******************* IOY0 EQU 9C00H ;片选IOY0对应的端口始地址 ;***************************************************************** MY8255_A EQU IOY0+00H*4 ;8255的A 口地址 MY8255_B EQU IOY0+01H*4 ;8255的B 口地址 MY8255_C EQU IOY0+02H*4 ;8255的C 口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT TTABLE DB 01H,03H,02H,06H,04H,0CH,08H,09H DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMAIN: MOV DX,MY8255_MODE ;定义8255工作方式MOV AL,80H ;工作方式0,A 口和B 口为输出OUT DX,ALA1: MOV BX,OFFSET TTABLEMOV CX,0008H A2: MOV AL,[BX]MOV DX,MY8255_B OUT DX,ALCALL DALLYINC BX LOOP A2MOV AH,1 ;判断是否有按键按下INT 16HJZ A1 ;无按键则跳回继续循环,有则退出 QUIT: MOV AL,0MOV DX,MY8255_B OUT DX,AL MOV AX,4C00H ;返回到DOS INT 21H DALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,0FFFH D1: MOV AX,5000H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RET DALLY ENDP CODE ENDS END START。

实验三 8259 8253 8255综合实验(大123)

实验三 8259 8253 8255综合实验(大123)

实验三 8253、8255、8259综合实验一.8253计数器实验要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。

实验线路:实验程序:CODE SEGMENT ;H8259.ASMASSUME CS:CODEINTPORT1 EQU 0FF80HINTPORT2 EQU 0FF81HINTQ3 EQU INTREEUP3TCONTR0 EQU 0043HTCON1 EQU 0041HPA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 12D0HSTART: JMP START0BUF DB ?,?,?,?,?,?intcnt db ?data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8ehdb 0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8fh START0: CLDCALL BUF1CALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV intcnt,01H ;TIME=1MOV DX,TCONTR0MOV AL,51HOUT DX,ALMOV DX,TCON1MOV AL,03OUT DX,ALMOV DX,0FF23HMOV AL,80OUT DX,ALSTIWATING: C ALL DISP ;DISP 显示8253-A JMP WATINGWRINTVER: MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSWMOV AX,0000hSTOSWRETINTREEUP3: push axpush bxpush cxpush dxMOV DX,TCON1MOV AL,03OUT DX,ALMOV AL,INTCNTCALL CONVERSMOV BX,OFFSET BUFMOV AL,10HMOV CX,05HINTRE0: MOV [BX],ALINC BXLOOP INTRE0ADD INTCNT,01HCMP INTCNT,06HJNA INTRE2CALL BUF2 ;DISP:good INTRE1: CALL DISPJMP INTRE1CONVERS: AND AL,0FHMOV BX,offset bufMOV [BX+5],ALRETINTRE2: MOV AL,20HMOV DX,INTPORT1OUT DX,ALpop dxpop cxpop bxpop axIRETDISP: M OV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20HMOV BX,OFFSET BUFDIS1: M OV DX,PCO UT DX,ALM OV AL,[BX]M OV AH,00HPUSH BXMOV BX,OFFSET DATA1A DD BX,AXM OV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HL OOP $P OP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: M OV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: M OV BUF,08HM OV BUF+1,02HM OV BUF+2,05HM OV BUF+3,03HM OV BUF+4,17HM OV BUF+5,0AHR ETBUF2: M OV BUF,09HM OV BUF+1,00HM OV BUF+2,00HM OV BUF+3,0dHM OV BUF+4,10HM OV BUF+5,10HR ETCODE ENDSEND START二、8253定时器实验要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态左移一位。

微机原理步进电机控制

微机原理步进电机控制

微机原理步进电机控制微机原理步进电机控制实验报告实验步进电机控制⼀、实验内容l、⽤8255的PA0,PA3输出脉冲信号,驱动步进电机转动,通过键盘设定来控制步进电机正转、反转、停⽌。

2、实验预备知识,步进电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。

驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,⽤微电脑控制步进电机最适合。

⼆、实验步骤1、在系统处于命令提⽰符“P.”态下,按SCAL键。

2、按图6,9连好实验线路图,8255的PA0,PA3依次连到HA-HD插孔。

3、运⾏实验程序。

在系统处于命令提⽰符“P.”态下,输⼊1630,按EXEC键,显⽰BJ?,按“1”键正转;按“2”键反转;按“3”停⽌。

4、观察步进电机转动情况。

三、实验原理图, 实验接线图:四(实验程序清单CODE SEGMENT ;BJ.ASM ASSUME CS: CODE IOCONPT EQU 0FF2BH IOBPT EQU 0FF29H IOAPT EQU 0FF28HPA EQU 0FF20H ;字位⼝PB EQU 0FF21H ;字形⼝PC EQU 0FF22H ;键⼊⼝ORG 1630HSTART: JMP START0 BUF DB ?,?,?,?,?,? KZ DB ?ltime db ?lkey db ?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1HSTART0: CALL BUF1 ;写显⽰缓冲区初值MOV AL,88H ;MOV DX,IOCONPTOUT DX,AL ;写命令字redikey: call dispkey ;调⽤显⽰键扫cmp KZ,01h ;是1键正转JZ ZZcmp KZ,02h ;是2键反转JZ STXJMP REDIKEY ;继续读键JMP ST ;转停⽌ STX:ZZ: CALL BUFZ ;显⽰正转值ZZ1: MOV DX,IOAPT ;PA⼝MOV AL,03H ;MOV DX,IOAPTOUT DX,AL ;驱动步进电机,A.B两相CALL DELPZ ;延时,读键MOV AL,06HMOV DX,IOAPTOUT DX,AL ;驱动步进电机,A.d两相CALL DELPZ MOV AL,0CHMOV DX,IOAPTOUT DX,AL ;驱动步进电机,C.D两相CALL DELPZ MOV AL,09H ;驱动步进电机,B.C两相MOV DX,IOAPT OUT DX,ALCALL DELPZMOV AL,03HMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,0CHMOV DX,IOAPTOUT DX,ALCALL DELPZMOV AL,09HMOV DX,IOAPTOUT DX,AL;------------------------- FZ: CALL BUFF ;反转⼊⼝FZ1: MOV DX,IOAPTMOV AL,0CHOUT DX,ALCALL DELPFMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV DX,IOAPTMOV AL,03HOUT DX,ALCALL DELPFMOV AL,09HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,0CHMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,06HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,03HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,09HMOV DX,IOAPTOUT DX,ALCALL DELPFMOV AL,00HOUT DX,ALST1: call dispkey cmp KZ,01hJZ ZZMONcmp KZ,02hJZ FZMONJMP ST1delpZ: mov cx,02h con1: push cx CALL dispkey pop cxcmp KZ,02hJZ FZMONcmp KZ,03hJZ STMONloop con1RETdelpF: mov cx,02h con2: push cx CALL dispkey pop cxcmp KZ,01hJZ ZZMONcmp KZ,03hJZ STMONloop con2RETZZMON: POP CXJMP ZZFZMON: POP CXJMP FZSTMON: POP CXJMP ST;-------------------------dispkey: call disp ;键盘显⽰⼦程序,见前注释call key mov ah,al ;newkeymov bl,ltime ;ltimemov dx,PA ;0ff21hout dx,alcmp ah,bhmov bh,ah ;bh=new keymov ah,bl ;al=timejz disk4mov bl,88hmov ah,88hdisk4: dec ahcmp ah,82hjz disk6cmp ah,0ehjz disk6cmp ah,00hjz disk5mov ah,20hdec bljmp disk7disk5: mov ah,0fhdisk6: mov bl,ahmov ah,bhdisk7: mov ltime,blmov lkey,bhmov KZ,bhmov al,ahretkey: mov al,0ffh ;键扫⼦程序mov dx,PB out dx,almov bl,00hmov ah,0fehmov cx,08hkey1: mov al,ahmov dx,PAmov ah,alnopnopnopnopnopnopmov dx,PCin al,dxnot alnopnopand al,0fhjnz key2inc blloop key1jmp nkeykey2: test al,01h je key3 mov al,00hjmp key6key3: test al,02h je key4 mov al,08hjmp key6key4: test al,04h je key5 mov al,10hjmp key6key5: test al,08hje nkeymov al,18hkey6: add al,blcmp al,10hjnc fkeymov bl,almov al,[bx+si]retnkey: mov al,20h fkey: retdata2: db 07h,04h,08h,05h,09h,06h,0ah,0bh DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh DISP: MOV AL,0FFH ;显⽰⼦程序 ,5ms MOV DX,PAOUT DX,ALMOV CL,0DFH ;20HMOV BX,OFFSET BUF DIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,0a0HLOOP $POP CXCMP CL,0FEHJZ LX1INC BXROR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0BH ;写”BJ----” MOV BUF+1,019HMOV BUF+4,17HMOV BUF+5,17HRETBUFZ: MOV BUF,0BH ;写”BJ---F” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,0FHRETBUFF: MOV BUF,0BH ;写”BJ---r” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,18HRETBUFS: MOV BUF,0BH ;写”BJ---S” MOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,17HMOV BUF+5,05HRETCODE ENDSEND START五、实验总结1、通过实验进⼀步了解8086的使⽤,学习汇编语⾔编程⽅法及调试技巧。

微机原理8259825582538250实验报告

微机原理8259825582538250实验报告

微机原理实验报告姓名:班级:学号:1 8259中断控制器实验31.1 实验目的 (3)1.2 硬件连接 (3)1.3 软件编程 (3)1.4 思考题 (4)2 8255并行接口实验 (5)2.1 实验目的 (5)2.2 硬件连接 (5)2.3 软件编程 (5)2.4 思考题 (6)3 8253可编程定时/计数器 (6)3.1 实验目的 (6)3.2 硬件连接 (6)3.3 软件编程 (6)3.4 思考题 (7)4 8250串行接口实验 (8)4.1 实验目的 (8)4.2 硬件连接 (8)4.3 软件编程 (8)4.4 思考题 (10)5 AD实验 (10)5.1 实验目的 (10)5.2 硬件连接 (10)5.3 软件编程 (11)5.4 思考题 (12)1 8259中断控制器实验1.1 实验目的1. 掌握8259的工作原理。

2. 掌握编写中断服务程序的方法。

3. 掌握初始化中断向量的方法1.2 硬件连接单脉冲发生器输出P+与8259的IR0相连;8259的片选CS8259与CS0相连;8259的INT与8086的INT相连;8259的INTA与8086的INTA相连;CS273与CS1相连;00与LED1相连;1.3 软件编程CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,4A0H //由于连接的CS0,初始化ICW1时,A1=0,为偶地址MOV AX,13H //上升沿触发,单片,要写ICW4OUT DX,AXMOV DX,4A2H //初始化ICW2,A1=1,为奇地址MOV AX,80H // 中断向量码为80HOUT DX,AXMOV AX,01 //初始化ICW4,非自动EOIOUT DX,AXMOV AX,0 //允许所有中断OUT DX,AXMOV AX,0 //把中断服务程序的地址放在中断向量表中DS=0,SI=80H*4=200HMOV DS,AXMOV SI,200HMOV AX,OFFSET HINT //先放IPMOV DS:[SI],AXADD SI,2MOV AX,CS //再放CSMOV DS:[SI],AXSTI //打开中断JMP $HINT:XOR CX,0FFH //取反操作,使得灯闪烁MOV DX,4B0H //CS1的地址4B0H,连在了273上MOV AX,CXOUT DX,AXMOV DX,4A0H //访问OCW2,A0=0,标志位D4=0,D3=0。

微机原理实验8253和步进电机实验

微机原理实验8253和步进电机实验
计数器0 计数器1 计数器2 控制口 200H 201H 202H 203H MOV MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV OUT DX, 203H AL, 26H DX, AL ;写计数器0控制字 DX 写计数器0控制字 DX, 200H AL, 20H DX, AL ;写计数器0初值高字节 计数器 初值高字节 DX, 203H AL, 54H DX, AL ;写计数器1控制字 DX, 201H AL, 0FH DX, AL ;写计数器1初值低字节
6
7
8
实际应用实验 (P. 12)
实验六 步进电机控制实验
利用8255A输出脉冲序列,开关K0~K6控制步进电机 利用8255A输出脉冲序列 开关K0~K6控制步进电机 转速,K7控制步进电机转向。
实现方法 实现方法:
A. 8255A+软件延时 —— 子程序的编写 B. 8255A+8253定时 —— 综合应用
实验 ( ) 实验三(2) 8253定时 定时
输入1MHz频率脉冲,分频输出1Hz频率脉冲。
选做实验:
A. 2MHz输入脉冲产生4s定时(第八章习题3)。 B.将实验三(1)计数初值范围改为0~99。 C.将实验三(1)改为键盘输入计数初值。 C 将实验三(1)改为键盘输入计数初值 D.将实验三(1)改为七段数码管显示计数值。 E. 8个LED依次闪烁,闪烁频率0 5Hz E 8个LED依次闪烁,闪烁频率0.5Hz (第八章习题6)。
4
8253实验内容
实验三(1)的问题与讨论
屏幕显示的是当前计数值,还是输入脉冲数? 为什么题目要求计数初值范围为N<=0FH,如果超 出这个范围,处理方法上有何不同? 出这个范 处 方法上有何 设置的计数初值与计数的脉冲数有什么关系? 计数到0之后,继续输入脉冲会观察到什么现象?

8253、8255、8259综合实验

8253、8255、8259综合实验

8253、8255、8259 综合实验医电61刘晶061210058253、8255、8259综合实验一、实验目的1.掌握8259、8253、8255芯片结构及工作方式;2.熟悉8259、8252、8259的初始化和操作编程;3.掌握各芯片之间或与CPU间的连接方法。

二、实验设备b6000p实验教学系统;2.IBM-PC机三、实验内容1.8255A口为输出口,接8个发光二极管,B口为输入口,接8个拨动开关,“0”或“1”,从而实现把开关的状态显示出来。

2.用8253计数器0对外部事件进行计数,每发生5次外部事件,用发光二极管亮做提示。

3.用8253计数器0输出一个1S为周期的方波,并用发光二极管显示其周期。

4.8个LED二级管循环点亮,每个亮1秒钟,用8253定时1秒,通过8259中断实现1S 循坏显示四、实验结果1.8255程序如下:DATA SEGMENTCOUNT DB 1DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACKSTART:MOV AX,DA TAMOV DS,AXMOV DX,8003H ;8255控制口MOV AL,10000010B ;控制字:A口方式0输出,B口方式0输入OUT DX,AL ;写入控制字TESTI:MOV DX,8001H ;指向B口IN AL,DX ;从B口读入开关状态MOV DX,8000H ;指向A 口OUT DX,AL ;A 口用LED 指示开关状态 JMP TESTI ;循环检测 CODE ENDSEND START 实验结果:程序运行后,波动开关,可以控制其对应二极管的亮、灭。

2.8253对外部事件计数 程序如下:DATA SEGMENT COUNT DB 1 DATA ENDSSTACK SEGMENT DB 100 DUP(?) STACK ENDSCODE SEGMENT MAIN PROC FARASSUME CS:CODE,DS:DA TA,SS:STACK START:MOV AX,DA TA MOV DS,AX JISHU:MOV AL,00010001BMOV DX,9003HOUT DX,ALMOV AL,3MOV DX,9000H OUT DX,ALDUHUI: MOV AL,00000000B MOV DX,9003H OUT DX,AL MOV DX,9000H IN AL,DX SUB AL,0 JZ JISHU JMP DUHUI MAIN ENDP CODE ENDS END START 实验结果:程序运行后,每发生5次外部事件(单脉冲电路产生),二极管亮1次作为MOV CX,0FFFFHDELAY: DEC CXCMP CX,00HJNZ DELAY3.8253输出周期为1s的方波程序如下:DATA SEGMENTCOUNT DB 1DATA ENDSSTACK SEGMENTDB 100 DUP(?)STACK ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DA TA,SS:STACKSTART:MOV AX,DA TAMOV DS,AXMOV AL,00110110BMOV DX,9003HOUT DX,ALMOV BX,62500MOV AL,BLMOV DX,9000HOUT DX,ALMOV AL,BHOUT DX,ALMAIN ENDPCODE ENDSEND START实验结果:二极管以1s为周期闪烁,即得到了1s为周期的脉冲波,并用二极管显示出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、实验原理
本实验由8253、8255、8259三个芯片及步进电机组成,各芯片的工作原理参看前各部分实验。
五、实验步骤
1、实验连线
8255CS~CS0,8255A口接步进电机A、B、C、D,为了观察步进电机的通电情况,将A、B、C、D插孔与发光二极管相连
8253CS~CS1,CLK2~8253CLK0,out0~8259IR0;
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
mov dx,04a0h
out dx,al
8259CS~CS2,INT~INT(INT在8086小板上),INTA~INTA(在8086小板上)
2、根据程序框图编程实验程序,并对编写好的程序进行汇编、连接,然后全速或单步运行程序。
3、全速运行后观察步进电机的旋转情况以及发光二极管的变化。
六、实验程序
code segment
assume cs:code
接口实验报告
专业班级计算机1208班姓名刘正皓学号20124729
实验题目8255A+8253+8259控制步进电机日期2015-1
实验九、8255A+8253+8259控制步进电机
一、实验目的
进一步掌握8253、8259、8255的工作原理,熟悉它们的使用方法,根据被控对象的要求组合使用步进电机的工作原理和控制方法。
mov dx,04c0h
out dx,al
mov al,80h
mov dx,04c2h
out dx,al
mov al,01h
out dx,al
mov al,0feh
out dx,al
mov si,0
i8255: mov dx,04a6h ;8255初始化定义
mov al,80h
out dx,al
mov bl,33h ;设置初置
二、实验设备
EL教学实验装置一个、计算机一套。
三、实验内容
将实验装置上的脉冲发生器所产生的脉冲信号作为定时/计数器8253的计数脉冲,使8253工作于周期计数方式(方式2),使其产生的脉冲输出信号作为中断控制器8259芯片的中断源。
中断控制器8259响应中断后,调用中断服务程序(8255驱动步进电动机)完成8255芯片对步进电机的控制。
mov dx,04c0h
out dx,al
mov al,80h
mov dx,04c2h
out dx,al
mov al,01h
out dx,al
mov al,0feh
out dx,al
mov si,0
i8255: mov dx,04a6h ;8255初始化定义
mov al,82h;设置8255为端口B输入的模式
p8259: cli
mov ax,0 ;中断程序的段地址、偏移地址填写
mov ds,ax
mov ax,offset int8259
mov bx,200h
mov ds:[bx],ax
mov bx,202h
mov ax,100h
mov ds:[bx],ax
for8259: mov al,13h ;8259初始化定义
out dx,al
mov bl,33h ;设置初置
p8253: mov dx,04b6h
mov al,34h ;通道0,方式2
out dx,al
mov dx,04b0h
mov al,0
out dx,al
mov al,96h
out dx,al
sti
jmp $
int8259: cli
mov al,bl ;中断程序
rol bl,1
mov al,20h
mov dx,04c0h
out dx,al
sti
iret
code ends
end p8259
七、思考题
1、分析程序并写出程序注释。
2、如何在电动机工作状态下通过设置一个状态控制开关实现步进电机的反向转动?
code segment
assume cs:code
org 100h
org 100h
p8259: cli
mov ax,0 ;中断程序的段地址、偏移地址填写
mov ds,ax
mov ax,offset int8259
mov bx,200h
mov ds:[bx],ax
mov bx,202h
mov ax,100h
mov dsLeabharlann [bx],axfor8259: mov al,13h ;8259初始化定义
out dx,al
sti
iret
code ends
end p8259
mov dx,04a0h
out dx,al
mov dx,04a2h从8255B口读取状态开关的情况
in al,dx
cmp al,01h判断状态开关高低电平
jnz one
rol bl,1若为低电平电机正转
jmp two
one: ror bl,1若为高电平电机反转
two: mov al,20h
mov dx,04c0h
相关文档
最新文档