微原实验报告8253
8253音乐发生器微机原理实验
8253音乐发生器实验接线图:单线连接:排线连接:将模块电源JP3接通将电源模块的JP7跳接. ?????I/O端口地址:8255的4个端口地址为300H~303HA口:300H,B口:301H,C口:302H,命令口:303H。
8253的四个端口地址为304H~307H其中通道0为304H,通道1为305H,通道2为306H,命令口为307H 流程图:系统资源分配本平台系统提供的I/O地址范围是300H~3FFH,目前已使用的I/O地址有:8255A:300H~303H8253A:304H~307H8251A:308H~30BHDAC0832:30FH8237A:主片0~0FH;从片0C0H~0DEH8259A:主片20H,21H;从片0A0H,0A1H在此区有一个TP1测试点,可以对译码信号进行检测。
本平台为用户提供了两个中断识别源分别为:IRQ2和IRQ10,当用户需要进行中断实验时,可以任意用单线连接,进行中断申请。
跳线开关说明; 音乐发生器程序Source Filesstack segment stackdw 200 dup(?)sstack endsdata segmentbg db 'Two tigers ...'db 0ah,0dhdb 'press any key to stop! ',0ah,0dh,'$'freq dw 2 dup(262,294,330,262) ;"两只老虎"乐曲中,音符的频率(音阶)dw 2 dup(330,349,392) ;其中,0频率表示结尾dw 2 dup(392,440,392,349,330,262)dw 2 dup(294,196,262),0time dw 10 dup(8),16,8,8,16 ; "两只老虎"乐曲中,音符的延时(节拍)dw 2 dup(4,4,4,4,8,8) ;其中4,8,16表示延时的次数dw 2 dup(8,8,16)old_seg dw ?old_off dw ?data endscode segmentassume cs:code, ds:data, ss:sstackstar proc far ;程序开始mov ax,datamov ds,axmov ax,sstackmov ss,axpush di ;寄存器压栈push sipush bppush bxmov al,90h ;8255初始化mov dx,303hout dx,almov al,0ch ;关闭8253的T2计数器(8255的PC6=0)mov dx,303hout dx,almov al,00h ;关闭喇叭(8255的PC0=0)mov dx,303hout dx,almov al,0b6h ;8253初始化mov dx,307hout dx,almov dx,offset bg ;显示提示信息mov ah,9int 21hmov si,offset freq ;设置频率指针→simov bp,offset time ;设置延时指针→bppp: mov ah, 0bh ;检测是否有任意键按下?int 21hcmp al,00jne end_sing ;若有,则结束演凑mov di,[si] ;取1个音符的频率→dicmp di,0 ;检测是否是乐曲结尾je end_sing ;若是,则结束演凑mov dx,12h ;计算音符的频率所对应的8253计数初值mov ax,34dch ;1.19318MHzdiv dimov dx,306h ;向8253装入计数初值out dx,al ;先装低字节mov al,ahout dx,al ;再装高字节mov dx,303h ;打开喇叭(8255的PC0=1)out dx,almov al,0dh ;打开8253的T2(PC6=1),开始发声out dx,almov bx,ds:[bp] ;取1个音符的延时次数→bxcall time_delay ;调用延时子程mov dx,303h ;关闭8253的T2(PC6=0)mov al,0chout dx,almov al,00h ;关闭喇叭(PC0=0)out dx,aladd si,2 ;取下1 个音符的频率add bp,2 ;取下1 个音符的延时次数jmp pp ;继续end_sing:mov dx, 303h ;关闭8253的T2mov al, 0chmov al, 00h ;关闭喇叭out dx, alpop bx ;寄存器出栈pop bppop sipop dimov ax,4c00h ;返回DOSint 21hstar endpnew_intr proc ;新中断服务程序dec bx ;该服务程序只将延时次数-1iretnew_intr endptime_delay proc near ;延时子程序pushf ;压栈push dspush espush bxmov ah,35h ;取原中断(INT1CH)的向量,并保存mov al,1ch ;INT 1CH —用户时钟服务int 21hmov old_off, bxmov bx, esmov old_seg, bxpop bxpop espush dsmov ah, 25h ;设置新中断服务程序的向量mov al, 1chmov dx, seg new_intrmov ds,dxlea dx, new_intrint 21hpop dsTD: cmp bx,0h ;延时次数已到?jnz TD ;未到,则继续mov ah,25h ;已到,则恢复原中断向量mov al,1chmov dx,old_segpush dxmov dx,old_offpop dsint 21hpop dspopf;time delay endrettime_delay endpcode endsend star ;程序结束。
微原硬件实验三:8253计数器定时器的应用
微原硬件实验报告北京邮电大学微机原理硬件实验报告实验三:8253计数器/定时器的应用专业:信息工程学生姓名:×××学号:×××指导教师:××完成时间:2013年11月29日一、实验目的 (3)二、实验原理及内容 (3)1、实验原理 (3)①8253定时器介绍 (3)②8253初始化 (3)③8253控制字 (3)④注意事项 (4)2、实验内容 (4)①基本功能 (4)②拓展功能 (5)三、硬件连接图及程序流程图 (5)1、硬件连接图 (5)①8253定时器 (5)②数码管 (6)③译码器 (7)④扬声器 (7)⑤分频器 (8)2、程序流程图 (9)四、源程序 (10)五、实验结果 (12)六、实验总结 (13)1、都是不认真听课惹的祸 (13)2、难听的曲子 (13)七、实验收获与心得体会 (13)八、思考题 (13)一、实验目的1、进一步熟悉汇编语言;2、学习掌握8253用作定时器的编程原理。
二、实验原理及内容1、实验原理①8253定时器介绍Ⅰ、微机系统使用的8254,其3个通道均有固定的用途:0号计数器为系统时钟源,每隔55ms向系统主8259IR0提一次中断请求;1号计数器用于动态存储器的定时刷新控制;2号计数器为系统的发声源。
用户在使用微机系统的时候,可以使用0号和2号计数器,但不能改变对1号计数器的初始化。
Ⅱ、实验箱上的8253,其数据线D7—D0,地址线A1、A0和控制线RD、WR通过总线驱动卡和微机系统的三总线相连。
除此之外,三个计数器的引出段和片选端都是悬空的,这意味着实验箱上的8253的三个计数器都归用户使用,你可以单独使用其中的一个计数器,也可以串联使用其中的2个或3个计数器。
Ⅲ、8253计数器的输入信号,其频率不能超过2MHz,否则长时间使用,芯片过热,容易烧毁②8253初始化使用8253前,要进行初始化编程。
可编程定时器计数器(8253)(微机实验报告)
可编程定时器/计数器(8253)一、实验目的 1)学会8253芯片和微机接口原理和方法。
芯片和微机接口原理和方法。
2)掌握8253定时器定时器//计数器的基本工作原理、工作方式和编程原理。
二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N (N ≤0FH 0FH)),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图 6按图7连接电路,连接电路,将计数器将计数器0、计数器1分别设置为方式3,计数初值设为10001000,用逻辑笔观察,用逻辑笔观察OUT1输出电平的变化(频率1HZ 1HZ))。
图 7三、编程提示1 1、、8253控制寄存器地址控制寄存器地址283H计数器0地址地址 280H 计数器1地址地址 281HCLK0连接时钟连接时钟 1MHZ2 2、参考流程图(见图、参考流程图(见图8、9): 开 始读计数器值显示计数值有键按下吗?开 始送计数器初值N Y结 束结 束设计数器0为工作方式0向计数器0送初值1000先送低字节后送高字节向计数器1送初值1000先送低字节后送高字节设计数器0为工作方式3设计数器1为工作方式3图 8 图图 9四、实验代码1、图6电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV START:MOV AL,10H ;AL,10H ;AL,10H ;设置控制字设置控制字0001000000010000(计数器(计数器0,方式0,写两个字节,二进制计数)二进制计数)MOV DX,283H ; MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中MOV AL,0FH ; MOV AL,0FH ;将将0FH 存入AL 寄存器寄存器OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口LP1: IN AL,DX ;LP1: IN AL,DX ;从从DX 端口读入8位,放在AL 寄存器中寄存器中CALL DISP ; CALL DISP ;调用调用DISP PUSH DX ; PUSH DX ;将将DX 内容保存到堆栈段内容保存到堆栈段MOV AH,06H ; MOV AH,06H ;将将06H 存入AH AH,为了下句调用,为了下句调用21中断中断MOV DL,0FFH ; MOV DL,0FFH ;将将0FFH 存入DLINT 21H ; INT 21H ;调用调用21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段JZ LP1 ; JZ LP1 ;如果如果DX 的内容是0,就跳转到LP1MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AH AH,为了下句调用,为了下句调用21中断中断INT 21H ; INT 21H ;调用调用21中断中断DISP PROC NEAR ;DISP PROC NEAR ;定义一个名为定义一个名为DISP 的子程序的子程序PUSH DX ; PUSH DX ;把把DX 的内容保存到堆栈段中的内容保存到堆栈段中AND AL,0FH ;AL,0FH ;将将AL 寄存器的内容与0FH 进行“与”运算,再把结果存入AL 中MOV DL,AL ; MOV DL,AL ;将将AL 的值送入DL 寄存器寄存器CMP DL,9 ; CMP DL,9 ;比较比较DL 中的值与9的大小的大小JLE NUM ; JLE NUM ;如果如果DL 的值小于或等于9时,则跳转到NUM ADD DL,7 ; ADD DL,7 ;将将DL 的值与7进行相加后,再送入DL 中NUM: ADD DL,30H ;NUM: ADD DL,30H ;将将DL 的值与30H 进行相加后,再送入DL 中 MOV AH,02H ; MOV AH,02H ;将将02H 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断MOV DL,0DH ; MOV DL,0DH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0DHINT 21H ; INT 21H ;调用中断指令调用中断指令调用中断指令MOV DL,0AH ; MOV DL,0AH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0AHINT 21H ; INT 21H ;调用调用DOS21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段RET ; RET ;子程序在功能完成后返回调用程序继续执行子程序在功能完成后返回调用程序继续执行 DISP ENDP ; DISP ENDP ;子程序结束子程序结束子程序结束CODE ENDS ; CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束2、图7电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV DX,283H ;START:MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中MOV AL,36H ; MOV AL,36H ;设置控制字设置控制字0011011000110110(计数器(计数器0,方式3,写两个字节,二进制计数)二进制计数)OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;该语句是立即寻址方式,就是把该语句是立即寻址方式,就是把1000H 这个数赋给AX MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口MOV DX,283H ; MOV DX,283H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中MOV AL,76H ; MOV AL,76H ;设置控制字设置控制字0111011001110110(计数器(计数器1,方式3,写两个字节,二进制计数)二进制计数) OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;把把1000H 赋给AXMOV DX,281H ; MOV DX,281H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AX 的低8位送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断CODE ENDS ;CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束五、实验总结通过实验,学会通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器定时器//计数。
微机原理实验总结
实验三、8253的各种工作方式测试实验一、实验内容1、编写程序分别显示0,2,3几种工作方式下的波形本实验使用8253A的定时/计数器2,GATE2接高电平,CLK2接1MHZ的时钟脉冲,OUT2接示波器观测输出波形。
实验中,要求记录定时器的时间常数,测试方式2和方式3下的输出周期信号的频率和周期。
2、采用图3-2来产生1秒的时钟周期(此内容不做要求,根据实验的时间确定)图3-2为定时器的级联方式,主要用于产生长时间的定时操作。
图3-2实际上对输入时钟进行了两次分频。
三、实验线路连接io8253aequ 200hio8253bequ 201hio8253cequ 203hcode segmentassumecs:codestart:mov dx,io8253c ;向8253写控制字mov al,36h ;使0通道为工作方式3outdx,almov ax,0 ;写入循环计数初值1000mov dx,io8253aout dx,al ;先写入低字节moval,ahout dx,al ;后写入高字节mov ah,4ch ;程序退出int 21hcode endsend start实验四、利用8255A实现LED的流水点亮实验一、实验内容PC口接8个拨动开关K1-K8,PB口接8个LED。
初始由开关K1-K8设定8位不同的值,当执行程序后LED按K1-K8初始设定的值点亮,并向右流动(8255A工作在0方式),同时在数码管上显示“8255A”(数码管的片选信号自定)。
关于数码管的编程方法请看实验平台介绍(TPC-386EX学生实验指导书)。
二、实验接线图将8255A的片选信号8255CS插孔和译码输出210H-21FH插孔相连。
三、实验编程提示根据难易程度,学生可以选择完成下列两个程序之一:1、LED右流水仅仅取决于第1次开关的位置,一旦LED流水开始,LED流水的次序将不再理睬开关位置的重新变化。
2、在LED右流水中,如果开关的位置发生了变化,LED右流水从变化的位置重新开始。
8253实验 微机原理与接口技术
8253 实验硬件接线图
实验要求
(1)掌握8253的编程方法。观察 OUT2 端输出 的波形。
(2)修改程序
使 OUT2 分别输出频率:为 500Hz、10Hz 的方 波。
定时/计数器 8253 实验
1. 实验目的
⑴ 学会 8253 芯片和微机接口原理方法。 ⑵ 掌握 8253 定时器/计数器的工作方式 和编程原理。
ห้องสมุดไป่ตู้CS
A1A0 0通道 1通道 2通道 控制口
2、实验内容
01001000B 01001101B 01001010B 01001111B
8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址。经地址译码器译码后,四个口地址 为: 48H、49H、4AH、4BH,分别对应通道0、通 道1、通道2和控制字。
(计算计数初值、观察波形)。
3、流程图
8253 实验程序(主程序)
CODE SEGMENT ASSUME CS:CODE EQU 004BH TCONTRO TCON2 EQU 004AH CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMAT CALL LEDDISP MOV DX, TCONTRO MOV AL, 0B6H OUT MOV MOV OUT MOV OUT HLT DX, DX, AL, DX, AL, DX, AL TCON2 00 AL 10H AL
硬件实验三 8253
一、实验目的1、掌握8253的基本工作原理和编程方法。
2、了解微机控制直流继电器的一般方法。
3、进一步熟悉使用8255、8253。
二、实验内容1、按图3-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N ≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图3-12、按图3-2连接电路,将out1接LED 灯L0,让灯亮1s,熄灭1s (频率1HZ)。
图3-23、实验电路如图3-3,按虚线连接电路:CLK0接1MHZ ,GATE0,GATE1,接+5V ,OUT0接CLK1,OUT1接PA0,PC0接继电器驱动电路的开关输入端Ik 。
编程使用8253定时,让继电器周而复始的闭合5秒钟(指示灯灯亮),断开5秒钟(指示灯灯灭)。
图3-34. 实验电路如图3-4,8253的CLK0接1MHZ时钟,GATE0接8255的PA1,OUT0和8255的PA0接到与门的两个输入端,K8跳线连接喇叭,编程使计算机的数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音阶。
图3-4 电子琴电路三、编程提示1、8253控制寄存器地址283H计数器0地址280H计数器1地址281HCLK0连接时钟1MHZ将8253计数器0设置为方式3、计数器1设置为方式0并联使用,CLK0接1MHZ时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒钟OUT1输出高电平。
通过8255A口查询OUT1的输出电平,用C口PC0输出开关量控制继电器动作。
继电器开关量输入端输入“1”时,继电器常开触点闭合,电路接通,指示灯发亮,输入“0”时断开,指示灯熄灭。
2、利用8255的PA0口来施加控制信号给与门,用来控制扬声器的开关状态。
再利用设置不同的计数值,使8253产生不同频率的波形,使扬声器产生不同频率的音调,达到类似与音阶的高低音变换。
微机原理实验 可编程定时器计数器82548253实验
图2 8253/8254定时器/计数器实验连线图
六、实验源程序清单
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START:MOV AL, 00010110B;控制字00-计数器0,01-低8位,011-方式3,0-二进制
OUT 03H,AL;将控制字写入控制寄存器
实验报告(45)
总分
指导教师签字:
年月日
备注:
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
图1可编程定时器/计数器8253/8254原理图
(2).计数器都有6种工作方式:
方式0—计数过程结束时中断;
方式1—可编程的单拍脉冲;
方式2—频率发生器;
方式3—方波发生器;
方式4—软件触发;
方式5—硬件触发。
(3)6种工作方式主要有5点不同:
一是启动计数器的触发方式和时刻不同;二是计数过程中门控信号GATE对计数操作的影响不同;三是OUT输出的波形不同;四是在计数过程中重新写入计数初值对计数过程的影响不同;五是计数过程结束,减法计数器是否恢复计数初值并自动重复计数过程的不同。
九、实验总结
硬件实验相对来说趣味性大了很多,同时也使得程序没那么复杂不过存在的问题突出表现于受到硬件实验条件的制约,硬件上的小问题就有可能导致不能出显预想的结果这也就使得在硬件连接上要很小心。
十、思考题
1.若8254模块选通线CS连到MCU主模块的地址A12,则应如何修改程序?
答:改变了存储芯片的地址范围所以将程序对应的地址范围改过即可。接A12对应地址范围是6800~6FFFH;接A14对应地址范围是3800~3FFFH。
可编程定时器计数器(8253)实验报告
END START
5・对程序进行编译、链接、仿真,仿真结果如图4、图5所示。
图4方波图(A通道,黄色)
图Байду номын сангаас脉冲图(D通道,绿色)
六、实验总结
本次实验,巫点在于自己找资料,理解透8253的控制方式及工作原理。只 要理解了 8253的原理,再配上汇编指令,便轻松完成本次实验。
到现在,一共做了 6次实验。6次实验都是与外设打交道,故常用到的指令 就MOV, OUT, IN三条指令,常用到的寄存器就AX, DX,常用到的寻址方式 是寄存器间接寻址(DX用在此处)。当访问的端口地址小于255时,则可以采 用直接寻址,不用DX间接寻址;当访问的端口地址大于255时,寄存器间接寻 址则是必须的,必须用到DX寄存器。
START:JMPTCONT
TCONTRO EQU 0A006H
TCONO
EQU OAOOOH
TCONl
EQU OA002H
TCON2
EQU OA004H
TCONT:
MOV DX.TCONTRO
MOV Ak27H;计数器0,只写初值«8位■方式3.BCD码
OUT DX.AL
MOV DX.TCONO
MOVAklOH;时钟为IMH乙计数时间“usrOOO•输出频率1KHZ
01读/写计数器低8位
10读/写计数器高8位
11先读/写计数器低8位,
畀读/写计数器髙8位」
图2 8253控制字格式
8253有4个端口,且通过A[1…0]引脚控制着4个端口。访问端口如所示。
A1
A0
访问端口
0
0
CNT0端口地址
0
1
CNT1端口地址
1
(完整word版)东北大学_微机原理实验报告及答案_8253定时计数器
code segment
assume cs:code
org 100h
start: mov dx,04a6h
mov al,36h ;通道0
out dx,al
mov dx,04a0h
mov al,00h
out dx,al
mov al,40h
out dx,al
mov dx,04a6h
mov al,76h ;通道1
思考题
1
code segment
assume cs:code
org 100h
start: mov dx,04a6h
mov al,70h
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
jmp $
code ends
end start
2
code segment
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
mov dx,04a6h
mov al,0b6h ;通道2
out dx,al
mov dx,04a4h
mov al,2h
out dx,al
mov al,00h
out dx,al
:GATE信号无输入时为高电平
8253定时器/计数器电路
四、实验连线
1、实验连线:
CS0CS8253 CLK48253CLK0 OUT08253CLK1 OUT18253CLK2
OUT2示波器或发光二级管;
各通道门控信号GATE+5V
微原实验报告8253
华北电力大学实验报告||实验名称 8253应用课程名称微机原理及应用||专业班级:自动化1202 学生姓名:屈言雪学号: 201202020222 成绩:指导教师:程海燕实验日期: 2014/12/16一、实验目的及要求:实验目的:(1) 学习可编程定时/计数器8253的工作原理及工作方式;(2)掌握使用8253的应用编程方法,并设计出相应电路在实验箱上正确连接;(3)熟练掌握WAVE6000实验系统的使用实验要求:1、基本要求:利用8253输出周期为1秒的方波。
2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz)。
每来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,LED7亮,中断8次后结束。
二、实验设备1.计算机b6000微机实验箱3.导线若干三、实验内容1、基本要求:利用8253输出周期为1秒的方波。
2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz)。
每来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,LED7亮,中断8次后结束。
四、实验步骤1、Proteus中的设计:(1)连接好8086与74LS373,如图:(2)设置38译码器译码:根据74LS273地址为8000H,知A15-A0只有A15为1、其余全为0时,即Y0有效时选中273;8259的地址为9000H,Y1有效时选中8259;8253的地址为A000H,Y2有效时选中8253;将38译码器的A、B、C端口分别接地址A12、A13、A14,使能端E1接A15,E2、E3都接地,如图:(3)连线8259,注意8259的A0要连接8086的A1,因为8259的数据端连接8084的低八位数据线,即偶存储体,因此8086的A0一直为0,若用8259的A0连8086的A0,则不能选中8259的奇地址端口;但在实验室中,由于使用的是只有8位的8088,用8088的A0连接8259的A0即可;使能端连接Y1,8259的地址为9000H,即A15-A12分别为1001,38译码器Y1有效选中8259;8259IR2端接8253的OUT1,表示将方波信号送入IR2申请中断,相当于开关的作用;如图:273,MR接电源的原因:MR只有接电源时,273才具有锁存功能。
实验三_8253定时器计数器实器
实验三 8253定时器/计数器实验一、实验目的1. 学会8253 芯片与微机接口的原理和方法。
2. 掌握8253 定时器/计数器的工作原理和编程方法。
二、实验内容编写程序,将8253的计数器0设置为方式2 (频率发生器),计数器1设置为方式3 (方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。
1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。
2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。
3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使LED 的闪亮频率仍为1Hz。
三、电路图CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;四、流程图及编程指南8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz用+5V 单电源供电。
8253 的六种工作方式:⑴方式0:计数结束中断⑷方式3:方波频率发生器⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号⑶方式2:频率发生器⑹方式5:硬件触发的选通信号8253 初始化编程1. 8253 初始化编程8253 的控制寄存器和 3 个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。
因此8255 在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则:①在对某个计数器设置初值之前,必须先写入控制字;②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。
2. 8253 的编程命令8253 的编程命令有两类:一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令;另一类是读出命令,用来读取计数器的当前值。
微机原理实验8253和步进电机实验
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方波实验
实验五8253 方波实验一、实验目的与要求了解8253 的内部结构、工作原理;了解8253 与8088 的接口逻辑;熟悉8253 的控制寄存器和初始化编程方法,熟悉8253 的6 种工作模式。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编写程序:使用8253 的计数器0 和计数器 1 实现对输入时钟频率的两级分频,得到一个周期为 1 秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。
2、连接线路,验证8253 的功能,熟悉它的使用方法。
四、实验原理图五、实验步骤1、连线说明:C5区:CS、A0、A1 ——A3区:CS5、A0、A1C5区:CLK0 ——B2区:2MC5区:OUT0 ——C5区:CLK1C5区:OUT1 ——D1区:Ctrl( 蜂鸣器)C5区:GATE0、GATE1 ——C1区的VCC2、测试实验结果:蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红绿灯交替点亮。
六、演示程序.MODEL TINYCOM_ADDREQU 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,AL ;CLK0/1000MOV DX,COM_ADDRMOV AL,77HOUT DX,AL ; 计数器T1 为模式 3 状态,输出方波,BCD码计数MOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,AL ;CLK1/1000JMP $ ;OUT1输出频率为1S的方波END START七、实验总结本次实验我们应用了8253 定时器,学会了对8253 的初始化编程。
(完整word版)微机原理完整实验报告+程序
实验题目8253定时/计数器实验一、实验目的与要求:1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容:1、实验原理本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示。
8253A的片选地址为48H~ 4FH。
因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。
采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ,输出OUTO 要求为1KHZ的方波,并要求用接在GA TE0引脚上的导线是接地("0"电平)或甩空("1"电平)来观察GA TE对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GATE0接+5V。
3、实验步骤(1) 按图1连好实验线路(2) 运行实验程序1.按“调试”按钮2。
选“窗口”“进入示波器窗口”,然后最小化3.按“运行按钮”4.将模拟示波器窗口打开,选择“串行口2”,再按ctrl+F2 按钮即可看到波形图1 显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的方波输出,幅值0~4V三、实验代码:CODE SEGMENTASSUME CS:CODETCONTRO EQU 004BHTCON2 EQU 004AHCONTPORT EQU 00DFHDA TAPORT EQU 00DEHDA TA1 EQU 0500HSTART: JMP TCONTTCONT: CALL FORMATCALL LEDDISPMOV DX,TCONTROMOV AL,0B6H ;要使用方式2,0B6H要改为0B4HOUT DX,ALMOV DX,TCON2MOV AL,00 ;输入频率(即时间常数)OUT DX,AL ;要修改频率,只需更改送给AL的值(注意先送低8位,MOV AL,10H ;后送高8位)OUT DX,ALHLTLEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制字MOV DX,CONTPORT ;8279命令状态口OUT DX,ALMOV BYTE PTR DS:[0600H],00 ;置显示位数初值为0LED1: CMP BYTE PTR DS:[0600H],07H ;判断显示位数满8为否?JA LED2 ;满8位转子程序返回MOV BL,DS:[0600H] ;未满8位从数据区取数MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORT ;8279数据口OUT DX,ALADD BYTE PTR DS:[0600H],01H ;显示位数加1JNZ LED1LED2: RET ;子程序返回FORMAT: MOV BX,0 ;显示8253---1MOV WORD PTR DS:[BX+0500H],4006HADD BX,2MOV WORD PTR DS:[BX+0500H],4040HADD BX,2MOV WORD PTR DS:[BX+0500H],6D4FHADD BX,2MOV WORD PTR DS:[BX+0500H],7F5BHRETCODE ENDSEND START四、思考题若改用方式2,并改变时间常数,如何编写程序。
实验八8253已完成
实验八定时/计数器8253方波一、实验目的(1)学会8253芯片和微机接口原理和方法。
(2)掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容8253的0通道工作方式在3,产生方波。
三、程序框图四.电路图五.变成提示8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数器频率范围为0——2MHz,用+5V单电源供电。
8253的功能用途:(1)延时中断(3)实时时钟(2)可编程频率发生器(4)数字単稳(5)事件计数器(6)复杂的电机控制器(7)二进制倍频器8253的六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件出发的选通信号(6)方式5:硬件触发的宣统信号六.实验步骤(7)按实验电路图连接线路:1@8253的GATE0接+5V。
2@8253的CLK0插孔接分频器74LS393(左上方)的T2插孔,分频器的频率源为:4.9152MHz(已连好)。
3@8253的CS孔与138译码器的FFE0孔相连。
(8)编写试验程序并运行(9)用示波器测量8253的OUT0口有方波产生。
示波器可以产生理论分析的方波信号。
(10)按复位键RESET返回“P.”或按暂停键STOP+MONF键返回“P.”。
程序代码如下所示:CODE SEGMENTASSUME: CS:CODEORG 2000HSTART: MOV DX,0FFE3HMOV AL,36HOUT DX,ALMOV DX,0FFE0HMOV AL,99HOUT DX,ALMOV AL,09HOUT DX,ALJMP $CODE ENDSEND START。
实验三 8253计数器原理及分频实验
D2位 位
方式2 方式
计数开
1 0 1 1
CLK
方式0 方式
计数开
0 1 1 fx 0
0 1 0 1 0
方式2 方式
计数开
往地址0x03写入 写入0xFF,开闸门,启动计数器 计数,并将 x接入. 计数, 往地址 写入 ,开闸门,启动计数器0计数 并将f 接入.
计数器1计数结束,则计数器 已经循环了 已经循环了N次 计数器 计数结束,则计数器0已经循环了 次 计数结束
写入N后,输出
3
方波速率发生器
{(N+1)/2个CLK高电平,(N-1)/2N个CLK低电平(N为奇数)
1/2N个CLK高电平,1/2N个CLK低电平(N为偶数)
4 5
软件触发选通 硬件触发选通
写入 N 后,过 N+1 个 CLK,输出一个宽度为 1 个 CLK 的脉冲 门控触发后,过 N+1 个 CLK,输出一个宽度为 1 个 CLK 的脉冲
▼本实验共用到六个端口地址:
23H(1Y1): 输出口,8255的控制端口 22H(1Y1): 输出端口(PC3),发出计数器0的闸门信 号(0为关,1为开) A0H(1Y5): 输入/输出端口,8253计数器0 的读写口 A1H(1Y5): 输入/输出端口,8253计数器1的读写口 A3H(1Y5): 输出端口,8253的控制寄存器的端口
思考和练习题
1.向计数器0和计数器1写入不同的值,指示灯 会出现什么现象? 2.计数器0和1采用不同的工作方式,指示灯有 什么现象. 3.8253的初始化要在一个脉冲的作用下才能完 成,这对实验中计数器输出信号的频率有没 有影响?
�
方式0 方式1 方式2 方式3 方式4 方式5
8253实验报告
定时器计数器实验1.简单计数器:用实验系统的频率发生器作为输入信号,作为定时器T0输入,实现秒脉冲发生器,秒脉冲信号接8259A INT0。
用发光二极管二进制方式显示秒计数。
此实验利用8253的一路计时器,将定时频率接到CLK上,使该路工作在方式2下,即将其作为频率发生器,GATE端置为高电平,OUT端接到8259A的INT0端,即当OUT给出一个上升沿跳变时,程序调用中断服务程序,在中断服务程序中,向输出接口273进行写入并输出,每次进中断输出值加一,给适当的输入脉冲,即可实现秒脉冲发生器。
程序代码如下:ICW1 equ 00010011b ; 写8259A控制字(单片8259, 上升沿中断, 要写ICW4)ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断CS8259A equ 09000h ; 8259地址CS8259B equ 09001hCONTROL equ 08003h ;8253控制字COUNT0 equ 08000h ;1路计数器方式字COUNT1 equ 08001h ;2路计数器方式字COUNT2 equ 08002h ;3路方式字(此程序中未用)CS273 equ 0A000hdata segmentCNT db 0data endscode segmentassume cs:code, ds: dataIEnter proc nearpush axpush dxstimov dx, CS273inc CNTmov al, CNTout dx, al ; 输出计数值mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alnoppop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endp ;8259A的初始化子程序start proc nearmov al, 34h ; 通道0,方式2mov dx, CONTROLout dx, al ;写入程序控制字mov al, 0out dx, al ; 高八位mov al, 00000000B ; 锁存计数器值mov dx, CONTROLout dx, almov dx,COUNT0 ;写入0通道方式字mov ax,1000out dx,almov al,ahout dx,almov ax, 0mov ds, axmov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0)mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, CS273out dx, alstiLP: ; 等待中断,并计数。
东南大学微机报告8253定时器
东南大学《微机实验及课程设计》实验报告实验五8253 计数器/定时器姓名:学号:专业:实验室:实验时间:2014年5月29日报告时间:2014年6月5日评定成绩:审阅教师:一. 实验目的与内容实验目的:1.掌握计数器/定时器8253的基本工作原理和编程使用方法;2.了解掌握8253的计数器/定时器典型应用方法。
实验内容:(1)8253 计数器参考图3.6-1 虚线连接电路,将计数器0 设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0 电平变化(当输入N+1 个脉冲后OUT0 变高电平)。
(2)8253 定时器按图3.6-2 连接电路,将计数器0、计数器1 分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1 输出电平的变化(频率1Hz)。
(3)在实验2的基础上,利用输出的1Hz的方波接入计数器2,设置计数器2初值为4,根据键盘输入的数字(0~5)来设置计数器2的工作方式,并将GATE2信号进行相应的连接(接+5V或接单脉冲)用逻辑笔观察OUT2电平的变化。
要求可以响应键盘的连续变化,直到按ESC键退出。
(4)在实验2的基础上,将8253计数器1的工作方式改为方式0,输出OUT1接入8255的PA0,PC0连接任意一个发光二级管,8255A的CS接288H。
编程使得发光二极管亮5秒,灭2秒,一直循环直到按任意键退出。
(提示:PA0查询OUT1输出电平,PC0输出开关量控制二极管发光)二. 基本实验原理电路图如下:程序框图如下:三. 方案实现与测试实验1:ioport equ 0ec00h-280h io8253a equ ioport+283h io8253 equ ioport+280hstacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov al,10hmov dx,io8253aout dx,almov dx,io8253mov al,0fhout dx,alzzz: in al,dxcall dispmov ah,06hint 21hmov dl,0ffhcmp al,dlpop dxjnz zzzmov ah,4chint 21hmain endpdisp proc nearpush dxand al,0fhmov dl,alcmp dl,9jle numadd dl,7num: add dl,30hmov ah,02hint 21hmov dl,0dhint 21hmov dl,0ahint 21hpop dxretdisp endpcode endsend start实验2ioport equ 0ec00h-0280h io8253a equ ioport+280h io8253b equ ioport+281h io8253 equ ioport+283h stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8253mov al,36hout dx,almov ax,1000mov dx,io8253aout dx,almov al.ahout dx,almov dx,io8253mov al,76hout dx,almov ax,1000mov dx,io8253bout dx,almov al,ahout dx,almov ah,4chint 21hmain endpcode endsend start实验3:ioport equ 0ec00h-0280h io8253a equ ioport+280h io8253b equ ioport+281hio8253c equ ioport+282h io8253 equ ioport+283h stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8253mov al,36hout dx,almov ax,1000mov dx,io8253aout dx,almov al.ahout dx,almov dx,io8253mov al,76hout dx,almov ax,1000mov dx,io8253bout dx,almov al,ahout dx,alinput:mov ah,1int 21hcmp al,1bhje exitsub al,30hmov cl,2mul cladd al,0b0hout dx,almov ax,4mov dx,io8253cout dx,almov al,ahout dx,aljmp inputexit:mov ah,4chint 21hmain endpcode endsend start实验4:ioport equ 0ec00h-280hio8253a equ ioport+280h; io8253b equ ioport+281h; io8253 equ ioport+283h;io8255a equ ioport+288h; io8255 equ ioport+28bh;io8255c equ ioport+28ah; stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8255mov al,90h;out dx,al;mov dx,io8253;mov al,36h;out dx,al;mov ax,1000;mov dx,io8253a;out dx,al;mov al.ah;out dx,al;mov dx,io8253;mov al,70h;out dx,al;inout: mov ax,2000;mov dx,io8253b;out dx,al;mov al,ah;out dx,al;mov dx,io8255a;in al,dx;mov dx,io8255c;out al,dx;mov cx,5000;delay:loop delay;mov dl,0ffh;mov ah,06h;int 21h;jz inout;mov ah,4ch;int 21h;main endp;code ends;end start;四.提高与创新研究1.图3.6-2系统中最大定时时间为多长,如果需要获得20秒的精确定时该如何处理?CLK0:0.0000001sCLK1、OUT0:0.0001sCLK2、OUT1:1s所以最大定时时间为一秒。
集美大学微机实验 8253
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称8253可编程计数器/实时钟实验实验类型设计型姓名张伟学号2011810055日期2013-12-14 地点克立楼微机室成绩教师洪玉玲、徐初杰第1页共9页1. 实验目的及内容1.1实验目的1)了解8253的内部结构和与8086的接口逻辑。
2)熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
1.2实验内容1)设计8253与8086CPU的硬件连接图,分配8253的基地址为0F000H。
2)设计8253与外界输入时钟频率2MHZ和电源的硬件连接,使8253产生周期为1秒的方波。
用此方波控制逻辑笔,使其红绿灯交替闪烁。
3)承接上述的实验步骤,用8253产生的脉冲来触发8259中断。
2. 实验环境STAR系列实验仪、PC机、星研集成软件环境3. 实验方法8253是可编程的定时器/计数器,具有三个独立的16位减法计数器,每个计数器中有三个寄存器,计数器的工作方式由工作方式寄存器(又称控制字寄存器)确定。
计数器在编程写入计数初值后,在某些方式下计数到0后自动预置,计数器连续工作。
CPU访问计数器时,必须设定工作方式控制字的RL1、RL0位。
本实验主要需解决两个方面的问题:(1)要使输出波形周期为1秒,即输出频率为1HZ。
而外界输入的时钟频率为2MHZ,要完成由2MHZ到1HZ,初值需2000000,但是它超过了8位所能存储的最大值,因此需要两个定时器,即2000×1000=2000000,这时连线时就要将8253的OUT0接在自身的CLK0上。
(2)要使8253产生的脉冲来触发8259中断需将脉冲发送到中断上,即将OUT1连接到IR2上。
4. 实验步骤4.1电路设计IR2VCC“1”VCC2MHZ4.2实验装置的连线说明;8253:C5 区;8253:CLK0————B2区2M;8253:OUT0————CLK1;8253:OUT1————D1逻辑笔和8259的IR2;8235:GATE0 GA TE1------VCC;8253:A0——A0,A1——A1,CS——CS1;8253;8253:CLK0————B2区2M;8253:OUT0————CLK1;8253:OUT1————逻辑笔和8259的IR2;8235GATE0 GATE1------VCC;8253:A0——A0,A1——A1,CS——CS1;B3区8259A:CS——CS7,A0——A0;B3区8259A:INT,INTA——A4区CPU:INTR,INTA;E5区:CS,A0———————A3区CPU总线、片选区:CS5,A0 ;E5区8279键盘/LED控制器:CLK——B2区:2M;E5区8279键盘/LED控制器:B,C——G5区LED:B,C4.3 运行调试实验程序实验运行于预期结果一致5. 实验现象和结论(1)方波实验成果后逻辑红绿灯在一秒的时间交替闪烁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学
实验报告
|
|
实验名称 8253应用
课程名称微机原理及应用
|
|
专业班级:自动化1202 学生姓名:屈言雪
学号: 201202020222 成绩:
指导教师:程海燕实验日期: 2014/12/16
一、实验目的及要求:
实验目的:(1) 学习可编程定时/计数器8253的工作原理及工作方式;
(2)掌握使用8253的应用编程方法,并设计出相应电路在实验箱上正确连接;
(3)熟练掌握WAVE6000实验系统的使用
实验要求:1、基本要求:利用8253输出周期为1秒的方波。
2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率
1Hz)。
每来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发
光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,
LED7亮,中断8次后结束。
二、实验设备
1.计算机
b6000微机实验箱
3.导线若干
三、实验内容
1、基本要求:利用8253输出周期为1秒的方波。
2、在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz)。
每来
一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,LED7亮,中断8次后结束。
四、实验步骤
1、Proteus中的设计:
(1)连接好8086与74LS373,如图:
(2)设置38译码器译码:根据74LS273地址为8000H,知A15-A0只有A15为1、其余全为0时,即Y0有效时选中273;8259的地址为9000H,Y1有效时选中8259;8253的地址为A000H,Y2有效时选中8253;将38译码器的A、B、C端口分别接地址A12、A13、A14,
使能端E1接A15,E2、E3都接地,如图:
(3)连线8259,注意8259的A0要连接8086的A1,因为8259的数据端连接8084的低八位数据线,即偶存储体,因此8086的A0一直为0,若用8259的A0连8086的A0,则不能选中8259的奇地址端口;但在实验室中,由于使用的是只有8位的8088,用8088的A0连接8259的A0即可;使能端连接Y1,8259的地址为9000H,即A15-A12分别为1001,38译码器Y1有效选中8259;8259IR2端接8253的OUT1,表示将方波信号送入IR2申请中断,
相当于开关的作用;如图:
273,MR接电源的原因:MR只有接电源时,273才具有锁存功能。
如图:
(5)8253的设置:
使用8253将1MHZ的信号变为1HZ的信号,因此将OUT0的输出连OUT1的输入;38译码器Y2有效时选中8253,因此使能端连接Y2;OUT0的输入端连接方波发生器;A0、A1端连接8086的
A1、A2,若是8088,则连8088的A0、A1,原理同8259;如图:
总设计图如下:
一次一盏,时隔一秒,如图:
软件流程图:
程序:
T8259A EQU 9000H T8259B EQU 9002H OUT273 EQU 8000H CODE SEGMENT ASSUME CS:CODE START:
MOV DX,0A006H MOV AL,37H
OUT DX,AL
MOV DX,0A000H MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
MOV DX,0A006H MOV AL,77H
OUT DX,AL
MOV DX,0A002H MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
CLI
MOV AL,13H
MOV DX,T8259A OUT DX,AL
MOV AL,80H
MOV DX,T8259B OUT DX,AL
MOV AL,01H
OUT DX,AL
MOV AX,0000H
MOV DS,AX
MOV BX,82H*4
MOV AX,OFFSET INTP
MOV [BX],AX
INC BX
INC BX
MOV AX,SEG INTP
MOV [BX],AX ;非规范装入中断向量
MOV DX,T8259B
IN AL,DX
AND AL,0FBH
OUT DX,AL ;编程开放IRQ2
MOV BL,1H ;编程灯全灭
MOV CX,8 ;设置中断次数
STI
L1:MOV AL,82H
MOV DX,0B000H
OUT DX,AL
CMP CX,0
JZ QUIT
JMP L1 ;Proteus中8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号,所以造成了要在这里执行EOI的假相,QUIT:CLI
MOV DX,T8259B
IN AL,DX
OR AL,04H
OUT DX,AL ;编程关闭IRQ2
STI
JMP $
INTP PROC NEAR ;中断服务子程序
CLI
PUSH AX
MOV AL,BL
MOV DX,OUT273
OUT DX,AL
ROL BL,1
SUB CX,1
MOV AL,20H
MOV DX,T8259A
OUT DX,AL
POP AX
STI
IRET ;自己编写中断服务子程
INTP ENDP
CODE ENDS
END START
2、LAB6000实验箱上的设计:
一、实验结果与数据分析
二、结论。