微机实验8253

合集下载

实验五 8253定时器

实验五  8253定时器

实验五8253定时器/计数器接口实验5.1实验目的掌握8253定时器/计数器的工作方式及应用编程。

5.2实验条件1. 北京达盛科技有限公司“缔造者”电子电气技术综合实验台、CPU挂箱、8086CPU模块。

2. PC机1台,已安装实验台8086开发调试软件。

3. 万用表、示波器。

5.3实验内容CPU挂箱自带一个脉冲发生器,按基频6.0MHz进行1分频(CLK0)、二分频(CLK1)、四分频(CLK2)、八分频 (CLK3)、十六分频(CLK4)输出方波。

编程设定8253计数器0、计数器1、计数器2工作于方波方式,观察其输出波形。

其中T0、T1的时钟由脉冲发生器的CLK3提供,其频率为750KHz,T0、T1的计数器初值设为927CH(37500十进制),则OUT0、OUT1输出的方波周期为(37500*4/3*10-6=0.05s)。

T2采用OUT0的输出为时钟,如果在T2中设置计数器初值为n,则OUT2输出方波周期为n*0.05s。

5.4实验步骤1. 实验接线将8253定时器/计数器的CS8253与地址译码电路的CS0相连,8253的CLK0、CLK1与脉冲发生器的CLK3相连8253的CLK2与OUT0相连,8253的OUT1与示波器相连,OUT2与开关量输入输出电路的LED1相连。

2. 建立PC机与8086CPU模块间的通讯连接将8086CPU模块正确地放在CPU挂箱上的CPU插槽中,系统上电后按下RESET键,几秒钟之后如果显示“P_”,说明CPU挂箱上的8086系统复位及8086CPU模块监控程序运行正常。

在PC机上打开8086开发调试软件,根据提示按下RESET键,几秒种后如果显示“C_”,说明与PC机通讯正常,同时8086开发调试软件用户界面提示通讯成功。

如果通讯不成功,试着选择串口COM2。

3. 编辑汇编语言源程序8086开发调试软件是将编辑、汇编、连接和调试集成在一起的综合开发环境,同时具有断点设定、程序下载到实验台等功能。

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计数器原理及分频实验

03H
1
00H
1
1
D2位
1
方式2
计数开
CLK
方式0
1 0
计数开
1
ห้องสมุดไป่ตู้
1
0
0
1
方式2
0
计数关
fX
计数器1计数结束后,同时自动关闭计数器2。读IN2,D2位为1
03H
00H
D2位
关闸门,地址0x03写入0x00 : D3位
0
1
0
方式2
计数关
CLK
方式0
计数开
方式2
计数关
1
1
0
1
0
1 0
0
0
1
0 1
往地址0x03写入0x00,关闸门。 然后锁存计数器2,再读计数器2的计数值,进行频率计算。
③ OUT:输出引脚。当计数到“0”时,OUT 引脚上必然有输出, 输出信号波形取决于工作方式。
8253内部端口的选择及每个通道的读/写操 作的选择如下表所示
RD WR A1 A0 寄存器选择和操作 1 0 0 0 写入计数器 0 1 0 0 1 写入计数器 1 1 0 1 0 写入计数器 2 1 0 1 1 写入控制寄存器 0 1 0 0 读计数器 0 0 1 0 1 读计数器 1 0 1 1 0 读计数器 2 0 1 1 1 无操作(3 态)
0 二进制 1 BCD
▼ 8253的工作方式和输出波形
方 功能

输出波形
0 计完最后一个数中断
写入计数值 N 后,经过 N+1 个 CLK 脉冲输出变高
1 硬件再触发单拍脉冲
单拍脉冲的宽度为 N 个 CLK 脉冲

可编程定时器计数器(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定时 计数器实验

实验三  8253定时 计数器实验

实验三8253定时/计数器实验一.实验目的了解8253的硬件连接方法,掌握8253的各种方式的编程及其原理。

二.实验要求编写程序,将8253的计数器0设置为方式3(方波),计数器1设置为方式2(分频),计数器2设置为方式2(分频);计数器0的输出作为计数器1的输入,计数器1的输出作为计数器2的输入;计数器2的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。

1. 编程时用程序框图中的三个计数初值,计算OUT2的输出频率,用手表观察LED,进行核对。

2. 修改程序中的三个计数初值,使OUT2的输出频率为1Hz,用手表观察LED,进行核对。

3. 上面计数方式选用的是16进制,现若改用BCD码,试修改程序中的三个计数初值,使LED的闪亮频率仍为1Hz。

三.实验电路及连线GATE0~GATE2连至电源+5V,从波特率开关边的f插孔用线连至CLK0,OUT0用线连至CLK1,OUT1用线连至CLK2,OUT2用线连至一个发光管(DL1),8253片选孔CS 用线连至译码处228~22FH插孔。

四.实验说明8253工作频率为0~2MHZ,所以输入的时钟频率必须在2MHZ之下。

实验板上的晶振为4.9152MHZ,需经74LS393(16分频),由Q3输出307200HZ到CLK0(将波特率开关拨至9600)。

五.实验内容(一)程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3MOV AL,00110111BOUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2MOV AL,01110101BOUT DX,ALMOV DX,229HMOV AL,18HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,22BH ;定时器2工作在方式2MOV AL,10110101BOUT DX,ALMOV DX,22AHMOV AL,0AHOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START输出频率:f=307200HZ/(200H*18H*0AH)=2HZ修改后程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTSTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3 MOV AL,00110111BOUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2 MOV AL,01110101BOUT DX,ALMOV DX,229HMOV AL,30H ;初值30HOUT DX,ALMOV AL,00HOUT DX,ALMOV DX,22BH ;定时器2工作在方式2 MOV AL,10110101BOUT DX,ALMOV DX,22AHMOV AL,0AHOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START输出频率1HZ(二)OUT1----LED1:点亮0.5s,熄灭0.5sOUT2----LED2:点亮1s,熄灭3s程序:DA TA SEGMENTDA TA ENDSCODE SEGMENTSTART: PUSH DSMOV AX,0HPUSH AXMOV AX,DATAMOV DS,AXCLI ;关中断MOV DX,22BH ;定时器0工作在方式3 MOV AL,00110111B ;OUT DX,ALMOV DX,228HMOV AL,00HOUT DX,ALMOV AL,02HOUT DX,ALMOV DX,22BH ;定时器1工作在方式2 MOV AL,01110111BOUT DX,ALMOV DX,229HMOV AL,35H ;35H 58hOUT DX,ALMOV AL,15H ;15H 02hOUT DX,ALMOV DX,22BH ;定时器2工作在方式2 MOV AL,10110100BOUT DX,ALMOV DX,22AHMOV AL,04H ;04hOUT DX,ALMOV AL,00HOUT DX,ALSTIJMP $CODE ENDSEND START。

可编程定时器计数器(8253) 实验报告

可编程定时器计数器(8253) 实验报告

实验名称可编程定时器/计数器(8253) 学生姓名学生学号专业班级指导老师2015-1-7实验六可编程定时器/计数器(8253)一、实验目的掌握8253芯片和微机接口原理和方法,掌握8253定时器/计数器的工作方式和编程原理。

二、实验内容1.设计8253定时器/技术器仿真电路图;2.根据仿真电路图,编写代码,对8253定时器/计数器进行仿真。

三、实验要求1.要求计数器2工作于模式1(暂稳态触发器),计数初值为1250;2.计数器0工作于方式3(方波模式),输出一个1KHz的方波, 8253的输入时钟为1MHz,计数初始值格式为BCD。

3.8253与系统的连接如错误!未找到引用源。

所示。

图 1计数器8253与8086连接原理图注:实验过程中,发现错误!未找到引用源。

有误。

应将8253定时器/计数器右边部分的电阻R2与按钮交换位置。

四、实验原理8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

8253的工作方式3被称作方波发生器。

任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。

进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。

如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。

这时OUTi端输出的周期为n×CLKi 周期,占空比为1:1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi 周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。

8253定时器/计数器控制字决定这定时器0,1,2的工作模式。

一旦CPU对控制字进行写操作,且对相应的定时器有效,则相应定时器改变工作模式,可能准备接收计时初值。

接口技术实验-8253定时计数器

接口技术实验-8253定时计数器

接口技术实验报告
实验三:可编程定时/计数器8253
一、实验目的
1、学会8253芯片和微机接口的原理和方法。

2、掌握8253定时器/计数器的工作方式和编程原理。

二、实验设备
微机原理实验箱、计算机一套。

三、实验内容
8253计数器0,1工作于方波方式,产生方波。

四、实验原理
本实验用到三部分电路:脉冲发生电路、分频电路以及8253定时器/计数器电路。

脉冲发生电路:实验台上提供8MHZ的脉冲源,见下图,实验台上标有8MHZ的插
孔,即为脉冲的输出端。

脉冲发生电路
分频电路:该电路由一片74LS393组成,见下图。

T0-T7为分频输出插孔。

该计数器在加电时由RESET信号清零。

当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ。

分频电路
8253定时器/计数器电路:该电路由1片8253组成,8253的片选、数据口、地址、读、写线均已接好,时钟输入分别为CLK0、CLK1。

定时器输出、GATE控制孔对应如下:OUT0、GATE0、OUT1、GATE1。

原理图如下:
注:GATE信号无输入时为高电平
8253定时器/计数器电路
四、实验连线
1、实验连线:
T接8.0MHZ;CLK0插孔接分频器74LS393(左下方)的T2插孔; OUT0接CLK 1;OUT1接发光二极管;
各通道门控信号GATE +5V
2、编程调试程序。

3、全速运行,观察实验结果。

8253实验 微机原理与接口技术

8253实验  微机原理与接口技术
①采用8253A通道2,工作在方式 3 ( 方波发生器方 式 )输入时钟 CLK2 为 1MHZ,输出 OUT2 要求为 1KHZ 的方波. ②写入新的初值对输出波形的影响。
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

硬件实验三 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产生不同频率的波形,使扬声器产生不同频率的音调,达到类似与音阶的高低音变换。

微原实验报告8253

微原实验报告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计数器实验报告

8253计数器实验报告8253计数器实验报告引言:实验报告是对实验过程和结果的详细记录和分析,通过实验报告,可以总结出实验的目的、方法、数据和结论,为进一步研究和实践提供参考。

本文将对8253计数器实验进行报告,介绍实验目的、实验步骤、实验结果和结论。

实验目的:本次实验的目的是熟悉8253计数器的工作原理和使用方法,掌握8253计数器的基本功能和应用场景。

实验步骤:1. 准备实验材料:8253计数器、示波器、电源等。

2. 搭建实验电路:根据实验要求,将8253计数器与示波器和电源相连,确保电路连接正确。

3. 设置实验参数:根据实验要求,设置8253计数器的工作模式、计数范围等参数。

4. 运行实验程序:编写实验程序,通过编程控制8253计数器的工作状态,观察实验结果。

5. 记录实验数据:使用示波器等仪器,记录实验过程中的数据和波形图。

6. 分析实验结果:根据实验数据和波形图,分析8253计数器的工作状态和性能。

实验结果:通过实验,我们观察到了8253计数器的不同工作模式下的输出结果。

在定时器模式下,我们设置了不同的计数范围和计数频率,观察到了计数器的计数过程和计数结果。

在计数器模式下,我们设置了不同的计数方向和计数初始值,观察到了计数器的增减过程和最终的计数结果。

结论:通过本次实验,我们对8253计数器的工作原理和使用方法有了更深入的了解。

我们掌握了8253计数器的基本功能和应用场景,能够根据实际需求设置计数器的工作模式和参数。

实验结果表明,8253计数器具有较高的计数精度和稳定性,在计时、计数等领域有广泛的应用前景。

总结:实验报告是对实验过程和结果的详细记录和分析,通过实验报告,可以总结出实验的目的、方法、数据和结论,为进一步研究和实践提供参考。

本次实验报告对8253计数器的实验进行了详细介绍,包括实验目的、实验步骤、实验结果和结论。

通过本次实验,我们对8253计数器有了更深入的了解,掌握了其基本功能和应用场景。

微机原理实验4 可编程定时器计数器8253

微机原理实验4 可编程定时器计数器8253

实验三可编程定时器/计数器8253要求:按图15连接电路,并将OUT0接指示灯(高电红灯亮、低电平绿灯亮)。

将计数器0、计数器1分别设置为方式3,已知CLK0输入为1MHz的方波,计算两计数器的计数初值,使OUT1输出1s为周期的方波,接着退出程序返回DOS流程图:初始化计数器1初始化计数器0按任意键返回dos程序:stack segment stack 'stack'dw 32 dup (0)stack endsdata segmenttip db 'quit the program.$'data endscode segmentstart proc farassume ss:stack, cs:code,ds:datapush dssub ax,axpush axmov ax,datamov ds,axmov dx,283hmov al,77hout dx,almov dx,281hmov al,00hout dx,almov al,10hout dx,almov dx,283hmov al,37hout dx,almov dx,280hmov al,00hout dx,almov al,10hout dx,almov dx,offset tipmov ah,9int 21hmov ah,8int 21hmov ah,4chint 21hretstart endpcode endsend start分析总结:这次的程序真心是没什么好说的了,初始化完后就没有然后了(话说这也能叫程序的······),本来按我的想法得有一个输入计数值的结构和一秒自动检测误差的结构的,关于输入结构前面的实验已经出现过了应该不是很难办,而延时结构就比较麻烦了,直接的调用int 15h,ah 86h功能不知为啥老是出问题,也不晓得是不是我格式错了,而通过指令循环凑出1s延迟计算起来有些麻烦,稳定性可能还有些问题,这个可能还得去查多点资料了,不过只要延迟精确了误差也就几条指令罢了,之后显示的话也就稍微麻烦点而已了。

实验八定时器计数器8253实验

实验八定时器计数器8253实验

8253是Intel公司生产的一款可 编程定时器计数器。
它具有3个独立的16位计数器, 每个计数器都可以独立编程和控
制。
8253的计数器可以用于产生时 间间隔、脉冲信号、PWM(脉
宽调制)等。
8253的工作原理
825ቤተ መጻሕፍቲ ባይዱ的每个计数器都有一个预置 值,当计数达到预置值时,计数 器会自动回置并触发一个中断或
实验八:定时器计数器8253实验
contents
目录
• 实验简介 • 8253定时器计数器概述 • 实验步骤与操作 • 实验结果与分析 • 实验总结与思考
01 实验简介
实验目的
掌握8253定时器计 数器的工作原理。
了解定时器在计算机 系统中的应用。
学习如何编程控制 8253定时器计数器。
实验设备
01
微机实验箱
02
8253定时器计数器芯片
03
示波器
04
信号发生器
02 8253定时器计数器概述
定时器计数器的基本概念
定时器计数器是一种用于产生 时间间隔或计数的电子设备。
它通常由石英晶体振荡器驱动, 以提供稳定的计时基准。
定时器计数器广泛应用于计算 机、通信、自动化等领域。
8253的特性和功能
配置8253定时器计数器
设置工作模式
根据实验要求,选择适当的定时/计数 模式,如计数模式、定时模式或门控 模式等。
设置定时/计数初值
启动定时/计数
通过微处理器发送控制信号,启动 8253定时器计数器的定时/计数操作。
根据实验要求,设置适当的定时/计数 初值,以满足实验条件。
启动和观察实验结果
启动实验
加强实践环节
为了更好地理解和掌握相关知识,建议增加更多的实践环节,例 如组织小组讨论、分享经验等。

微机实验 可编程定时器计数器8253

微机实验  可编程定时器计数器8253

微机原理实验报告实验题目:可编程定时器/计数器8253一、实验目的1、学习8253可编程定时器/计数器定时方法2、学习8253多级串联实现大时间常数定时方法二、实验内容编一个1秒定时子程序,并提示有键盘读入要计时的时间,并把数值显示在屏幕上三、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干四、实现过程1、流程图2、程序源代码;*****************************************IOY0 EQU 280H;*****************************************MY8253_COUNT0 EQU IOY0+00HMY8253_COUNT1 EQU IOY0+01HMY8253_COUNT2 EQU IOY0+02HMY8253_MODE EQU IOY0+03H;*****************************************MY8255IOY0 EQU 2A0H;*****************************************MY8255_A EQU MY8255IOY0+00HMY8255_B EQU MY8255IOY0+01HMY8255_C EQU MY8255IOY0+02HMY8255_MODE EQU MY8255IOY0+03HSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCOUNTER2 DB 0MESG1 DB 'Please input your number:',0DH,0AH,'$' ;提示语一,请输入数字MESG2 DB 'It is counting:',0DH,0AH,'$';提示语二,正在计数MESG3 DB 'Wrong input,please input again:',0DH,0AH,'$';提示语三,输入错误,请重新输入DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESG1 ;输出提示语MOV AH,9INT 21HDEAL: MOV AH,1 ;读入一个数字INT 21HCMP AL,'0'JL EXITCMP AL,'9'JG EXITMOV BL,ALSUB BL,30H ;把输入的ASCII码转化成数字ADD COUNTER2,BL ;COUNTER2+=INPUTMOV CH,00HMOV CL,COUNTER2MOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HONE_SECOND:MOV AL,CL ;输出当前计数值CXADD AL,30HMOV DL,ALMOV AH,02INT 21HMOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HMOV DX,MY8253_MODE ;计数器0,方式3,十进制计数MOV AL,37HOUT DX,ALMOV DX,MY8253_COUNT0 ;装入初值MOV AL,00H ;1000分频OUT DX,ALMOV AL,10HOUT DX,ALMOV DX,MY8253_MODE ;计数器1,方式0,十进制计数MOV AL,71HOUT DX,ALMOV DX,MY8253_COUNT1 ;装入初值MOV AL,00H ;1000分频MOV AL,10HOUT DX,ALMOV DX,MY8255_MODEMOV AL,89HOUT DX,ALMOV DX,MY8255_CL1: IN AL,DX ;判断PC7口是否为高,即计数一秒是否已到TEST AL,80HJZ L1DEC CXJNZ ONE_SECONDQUIT:MOV AX,4C00HINT 21HEXIT: MOV DX,OFFSET MESG3 ;输入范围错误,提示重新输入MOV AH,9INT 21HJMP DEALCODE ENDSEND START3、实验结果图五、实验改进1、说明本实验中课本上只给出了0~9秒的计数,而实际运用的时候我们经常会需要用到任意值的定时,因此我们做了改进,计时可以输入任意数,若要输出到屏幕则能计数0~992、流程图注:改进的地方是分十位和个位进行存储和输出显示六、小结1、通过本次试验,我进一步了解了8253的定时和计数功能,以及如何通过串联定时器的方式实现大时间常数的定时。

微机原理实验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之后,继续输入脉冲会观察到什么现象?

实验6:8253定时器∕计数器应用

实验6:8253定时器∕计数器应用

8253定时器/计数器应用一、实验目的1.掌握8253定时/计数器的工作原理、工作方式及应用编程。

2.掌握8253的典型应用电路的接法。

二、实验设备PC 机一台,TD-PITE 实验教学系统一台。

三、实验原理实验系统中安装的为8254(8253的改进型)共有三个独立的定时/计数器,其中0号和1号定时/计数器开放供实验使用,2号定时/计数器为串行通信单元提供收发时钟信号。

定时/计数器0的GATE 信号连接好了上拉电阻,若不对GA TE 信号进行控制,可以在实验中不连接此信号。

四、实验内容计数应用实验:使用单次脉冲模拟计数,使每当按动“KK1+”5次后,产生一次计数中断,并在显示器上显示一个字符“M”。

初始化设置:8254的计数器0、计数器1、计数器2、控制口地址分别为06C0H 、06C2H 、06C4H 、06C6H ;选择计数器0,仅用低8位计数,方式0,二进制计数;8259的地址为20H 、21H ,边沿触发,IR7对应的中断类型码为0FH ,一般全嵌套方式,非缓冲方式,非自动结束。

五、实验步骤(实验报告中要详细写出你自己的实验步骤)计数应用实验步骤:(1)按图1连接实验线路。

(2)编写实验程序,对实验程序进行编译、链接无误后,加载到实验系统。

(3)执行程序。

并按动单次脉冲输入KK1+,观察程序执行结果。

(4)改变程序中的定时/计数值,验证8253的定时/计数功能。

思考题1.执行实验步骤(3)时,程序的执行结果和按动KK1+的速度有关吗?2.如果将图1中OUT0连接到系统总线的MIR6引脚,如何修改程序,使其仍能正常 4.7K图1 8253计数应用实验VCC · · XA1 XA2 系统 XD0· 总 ·XD7 线IOW# IOR# IOY3 MIR7 A0 A1 GATE0 D0 8254 · 单元 · D7 CLK0 WR RD CS OUT0 KK1+单次 脉冲单元计数?3.如果将图1中OUT0连接到系统总线的SIR1引脚,如何修改程序,使其仍能正常计数?提示:主片8259的地址为20H、21H,从片8259的地址为A0H、A1H,从片的INT 连接到主片的IR2引脚上,构成两片8259的级联。

实验五 8253 定时器 计数器实验

实验五 8253 定时器 计数器实验

实验五8253 定时器/计数器实验
一、实验目的
1、学习8253可编程定时/计数器与8088CPU的接口方法
2、熟悉8253的工作方式
3、熟悉8253在各种工作方式下的编程方法
二、实验内容
1、将计数器1设置为方式0,计数初值为25000,编程使计数值为0时在屏幕上显示字符R,并完成对程序的注释。

三、实验连线:
本实验主要用到的模块:系统模块、8253模块、中断模块等。

8253和系统相连的信号线都已经连好,计数器1的CLK1已经内接了一个250KHz 的信号,可以通过对通道1编程直接控制,将计数器1的OUT1接到8259A中断模块的IR6。

8253的端口地址为40H、41H、42H、43H。

四、实验步骤
1、将实验的线路连接好后,列出程序清单,并进行注释。

2、运行上位机软件,装载并运行程序,观察实验现象。

五、思考
1、8253共有几种工作方式,方式二和方式三有什么区别?
2、将计数器1改为方式2工作,则上面的程序要如何修改?将修改后程序上机调试并观察现象。

3、若要使实验箱的液晶屏上每隔1秒左右显示一个“R”,则连线要做何变动?程序要如何修改?重新连线后将修改完毕的程序上机调试并观察现象。

实验一 8253方波实验

实验一 8253方波实验

实验一8253方波实验一、实验目的(1)学会8253芯片和微机接口原理和方法。

(2)掌握8253定时器/计数器的工作方式和编程原理。

二、实验仪器示波器教学机电脑三、实验内容8253的0通常工作在方式3,产生方波。

四、程序框图五、实验电路六、编程提示8253芯片介绍,用+5V 8253是一种可编程定/计数器,有三个十六位计数器,其计数频率范围为0~2MHZ单电源供电。

8253的功能用途:(1)延时中断(2)可编程频率发生器(3)事件计数器(4)二进制倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器8253的六种工作方式:(1)方式0:计数结束中断(2)方式1:可编程频率发生(3)方式2:频率发生器(4)方式3:方波频率发生器(5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253的0号通道工作在方式3,产生方波。

七、程序清单通道0工作在方式3:00110110H=36H计数器0:0FFE0H控制计数器:0FFE3Hcode segmentassume cs:code,ds:code,es:codeorg 3000Hstart:MOV DX,0FFE3HMOV AL,36HOUT DX,ALMOV DX,0FFE0HMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALJMP $code endsend start八、实验步骤(1)按实验电路图连接线路:①8253的GATE0接+5V。

(已②8253的CLK0插孔接分频器74LS393的T2插孔,分频器的频率源为:4.9152MHz连好)。

③8253的CS孔与138译码器的Y0孔相连。

④对一体机而言,将SIO区D0~D7用排线与BUS区D0~D7相连。

(2)运行实验程序(3)用示波器测量8253的OUT0输出插孔有方波产生。

九、实验数据及结果当程序清单中MOV AL 10H 时,其频率为149.9HZ,T=6.7ms当程序清单中MOV AL 15H 时,其频率为114.3HZ,T=8.7ms当程序清单中MOV AL 20H 时,其频率为75.02HZ,T=13ms十、实验心得通过本次实验,自己学到了很多,连线时要仔细,不然一不留神会差错或漏连在编写程序时遇到困难,不能正确写清楚那几条指令,不能运行程序。

实验五--8253方波实验

实验五--8253方波实验

.STACK 100
.CODE
START: MOV DX,COM_ADDR
MOV AL,35H
OUT DX,AL ;计数器T0设置在模式2状态,BCD码计数
MOV DX,T0_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL ;CLK0/1000
MOV DX,COM_ADDR
MOV AL,77H
OUT DX,AL ;计数器T1为模式3状态,输出方波,BCD码计数
MOV DX,T1_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL ;CLK1/1000
JMP $ ;OUT1输出1S的方波
END START
六、实验结果
蜂鸣器间歇性蜂鸣,逻辑测试笔红绿灯交替亮灭。

七、实验总结
通过这次实验,我了解了8253的功能,即作为计时器可以输出各种不同的波形,实现
对电路的控制;了解了8253与8088的接口端,特别是片选端口及其对地址的选择;熟悉了8253的控制寄存器和初始化编程方法,熟悉了8253的6种工作模式,该实验中用的是模式
2和模式3,分别作为频率发生器和方波方波发生器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江工业大学计算机学院实验报告实验名称定时/计数器(8253)一、实验内容与要求1.1 实验内容1.计数器方式0实验将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

2.计数器方式3实验将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。

3. 计数器级联实验将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。

实现计数器0的输出为方波,计数器1的输入是计数器0输出。

人机交互界面设计:实现在显示屏幕上提示输入计数器0(方波)的参数和计数器1(分频信号)的参数。

1.2 实验要求(1)正确完成硬件电路连线;(2)使用8253定时/计数器芯片,除片选引脚,其他信号都已接好,进行有关结构设计和编程(3)编写正确汇编程序,完成正确的屏幕以及硬件仪器的显示。

二、实验原理与硬件连线2.1 实验原理8253/8254 定时/计数器总体结构如图2.1.1所示,外部引脚定义如图2.1.2所示图2.1.1 定时/计数器总体结构 图2.1.2 外部引脚定义2.2 硬件连线1.实验1硬件连线如图2.21所示:图2.2.1 TPC-USB 平台计数器方式0实验连线图2.实验2硬件连线如图2.22所示:U5 8253+5V+5V图2.2.2 TPC-USB平台计数器方式3实验连线3.实验3硬件连线如图2.23所示:U5 8253+5V+5V图2.2.3 TPC-USB平台计数器级联实验连线三、设计思路、步骤和程序流程图3.1 设计思路(1)硬件连线:在TPC-USB实验板上,进行三种方式下的8253计数器实验(2)程序设计:通过对实验要求的理解,编写想关的汇编代码(3)两者结合显示符合实验要求的结果3.2 实验步骤3.3 程序流程(1)计数器方式0实验,流程如图3.3.1:图3.3.1 TPC-USB平台计数器方式0实验流程图(2)计数器方式3实验,流程如图3.3.2:图3.3.2 TPC-USB平台计数器方式3实验流程图(3)计数器级联方式实验,流程如图3.3.3:图3.3.3 TPC-USB平台计数器级联实验流程图四、程序清单与执行结果4.1 程序清单1.计数器方式0实验CODE SEGMENTASSUME CS:CODESTART:MOV AL,10H ;计数器0,方式0,写两个字节,二进制计数MOV DX,283H ;把控制寄存器地址放在DX寄存器中OUT DX,AL ;将AL的值送入DX端口MOV DX,280H ;把计数器0地址放在DX寄存器中MOV AL,0FH ;将0FH存入AL寄存器OUT DX,AL ;将此时AL的值送入DX端口LP1: IN AL,DX ;从DX端口读入8位,放在AL寄存器中CALL DISP ;调用DISPPUSH DX ;将DX内容保存到堆栈段MOV AH,06H ;将06H存入AH,为了下句调用21中断MOV DL,0FFH ;将0FFH存入DLINT 21H ;调用21中断POP DX ;将DX的内容推出栈段JZ LP1 ;如果DX的内容是0,就跳转到LP1MOV AH,4CH ;将4CH存入AH,为了下句调用21中断INT 21H ;调用21中断DISP PROC NEAR ;定义一个名为DISP的子程序PUSH DX ;把DX的内容保存到堆栈段中AND AL,0FH ;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中MOV DL,AL ;将AL的值送入DL寄存器CMP DL,9 ;比较DL中的值与9的大小JLE NUM ;如果DL的值小于或等于9时,则跳转到NUMADD DL,7 ;将DL的值与7进行相加后,再送入DL中NUM: ADD DL,30H ;将DL的值与30H进行相加后,再送入DL中MOV AH,02H ;将02H存入AHINT 21H ;调用DOS21中断MOV DL,0DH ;结合“MOV AH,02H”,输出0DHINT 21H ;调用中断指令MOV DL,0AH ;结合“MOV AH,02H”,输出0AHINT 21H ;调用DOS21中断POP DX ;将DX的内容推出栈段RET ;子程序在功能完成后返回调用程序继续执行DISP ENDP ;子程序结束CODE ENDS ;代码段结束END START2.计数器方式3实验CODE SEGMENTASSUME CS:CODESTART:MOV DX,283H ;把控制寄存器地址放在DX寄存器中MOV AL,36H ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)OUT DX,AL ;将AL的值送入DX端口MOV AX,1000H ;把1000H这个数赋给AXMOV DX,280H ;把计数器0地址放在DX寄存器中OUT DX,AL ;将AL的值送入DX端口MOV AL,AH ;将AX的高8位存入AL寄存器中OUT DX,AL ;将此时AL的值送入DX端口MOV DX,283H ;把端口地址放在DX寄存器中MOV AL,76H ;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数)OUT DX,AL ;将AL的值送入DX端口MOV AX,1000H ;把1000H赋给AXMOV DX,281H ;把端口地址放在DX寄存器中OUT DX,AL ;将AX的低8位送入DX端口MOV AL,AH ;将AX的高8位存入AL寄存器中OUT DX,AL ;将AL的值送入DX端口MOV AH,4CH ;将4CH存入AHINT 21H ;调用DOS21中断CODE ENDS ;代码段结束END START;程序结束3. 计数器级联实验data segmentmesg1 db 13,10,'counter0:','$'mesg2 db 13,10,'counter1:','$'mesg3 db 13,10,'continue?(y/n)','$'mesg4 db 13,10,13,10,'thank you!',13,10,'$'errorm db 13,10,'input error!','$'counter0 dw 0counter1 dw 0data endscode segmentassume cs:code,ds:data main proc farstart:mov dx,datamov ds,dxdo:sub bx,bxsub ax,axmov counter0,0mov counter1,0 ;initl1:mov dx,offset mesg1 mov ah,09hint 21hrd1 : ;read counter0 mov al,0 ;判断有无输入mov ah,01 ;read a char int 21hcmp al,0jz rd1cmp al,13 ;if enterje fdone1jmp tdone1fdone1: jmp done1tdone1: cmp al,10je fdone1cmp al,'0' ;if input<0 or input>9 errorjb errorcmp al,'9'ja errorpush axmov ax,10mul counter0mov counter0,ax ;counter0=counter*10 pop axsub bx,bxmov bl,alsub bl,30hadd counter0,bx ;counter=counter+input jmp rd1error:mov dx,offset errormmov ah,09hint 21hmov dl,7mov ah,2int 21hjmp done3tr: ;for jmp domov dl,almov ah,02hint 21hmov dl,10int 21hmov dl,13int 21hjmp dol2:mov dx,offset mesg2 mov ah,09hint 21hrd2:mov al,0 ;判断有无输入mov ah,01 ;read counter1int 21hcmp al,0jz rd2cmp al,13 ;if enterje fdone2cmp al,10je fdone2jmp tdone2fdone2: jmp done2tdone2:cmp al,10je fdone2cmp al,'0'jb errorcmp al,'9'ja errorpush axmov ax,10mul counter1mov counter1,ax ;counter1=counter1*10sub bx,bxmov bl,alsub bl,30h ;bh=0add counter1,bx ;counter1=counter1+input jmp rd2done1:jmp l2done2:jmp out8253 ;after enter two counters; set 8253 and do itdone3:mov dx,offset mesg3mov ah,09hint 21hl3: mov ah,07hint 21hcmp al,'y'je trcmp al,'y'cmp al,'n'je quitcmp al,'n'je quitmov dl,7mov ah,02hint 21hjmp l3out8253: ;work code mov al,00110110b mov dx,283hout dx,almov ax, counter0 mov dx,280hout dx,almov al,ahout dx,almov al,01110110b mov dx,283hout dx,almov ax,counter1mov dx,281hout dx,almov al,ahout dx,almov cx,2801delay: loop delayjmp done3quit: ;return to dosmov dx,offset mesg4mov ah,9int 21hmov ax,4c00hint 21hmain endpcode endsend start4.2 执行结果(1)计数器方式0实验,执行结果如图4.2.1所示(2)计数器方式3实验,执行结果如图4.2.2所示(3)计数器级联实验,执行结果如图4.2.3所示图4.2.3实验3执行结果五、程序调试说明和实验感想5.1 调试说明5.2 实验感想与收获5.3 实验特色5.4 展望。

相关文档
最新文档