[芯片] 2、接口技术·实验二·定时/计数器8253

目录

一、实验目的和要求

二、实验原理与背景

三、实验具体的内容

3-1、计数器方式0实验

3-2、计数器方式3实验

3-3、计数器级联实验

四、实验的代码说明

4-1、计数器方式0实验代码及说明

4-2、计数器方式3实验代码及说明

4-3、计数器级联实验代码及说明

五、实验结果的分析

5-1、计数方式0实验分析

5-2、计数方式3实验分析

5-3、级联方式实验分析

附录资料



一、实验目的和要求

学会8253芯片和微机接口原理和方法。

掌握8253定时\计数芯片的基本工作原理、工作方式和编程原理。

二、实验原理与背景

intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)。下面是它的控制方式字:

                   

                      图2.1 8253引脚图

8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

            

                    图2.2 8253控制方式方式字寄存器

表2.3 6种工作方式比较

方式


功能


输出波形


输出波形


0


单次计数


写入初值后,OUT端变低,经过N+1个CLK后,OUT变高(单次)


软件触发的单次负脉冲


1


可编程单稳态触发器


输出宽度为N个时钟周期的负脉冲(单次)


硬件触发的单次负脉冲


2


频率发生器


输出宽度为1个时钟周期的负脉冲(重复波形)


自动触发连续的脉冲波


3


方波发生器


N为偶数时占空比为1/2;N为奇数时输出(N+1)/2个正脉冲,(N-1)/2个负脉冲(重复波形)


自动触发连续的方波


4


软件触发选通


写入初值后,经过N个时钟周期,OUT端变低1个时钟周期(单次)


软件触发的单次单拍负脉冲


5


硬件触发选通


门控触发后,经过N个时钟周期,OUT端变低1个时钟周期(单次)


硬件触发的单次单拍负脉冲

这个表总是影响排版,略坑~

三、实验具体的内容

3-1、计数器方式0实验

将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

步骤如下:

1)按图2.1虚线连接电路。

        图3.1  TPC-USB平台计数器方式0实验连线图

2)根据流程图2.2,编程并运行,观察实验结果。

        

       图3.2  TPC-USB平台计数器方式0实验流程图

3-2、计数器方式3实验

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

步骤如下:

1)按图2.3连接电路。

              图3.3  TPC-USB平台计数器方式3实验连线

2)根据流程图2.4,编程并运行,观察实验结果。

              

             图3.4  TPC-USB平台计数器方式3实验流程图

3-3、计数器级联实验

将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。实现计数器0的输出为方波,计数器1的输入是计数器0输出。人机交互界面设计:实现在显示屏幕上提示输入计数器0(方波)的参数和计数器1(分频信号)的参数。如下所示:

Counter0:____

Counter1:____

continue?(y/n)____

实现用键盘直接输入修改程序中方波的参数和分频信号的参数,以改变方波的宽度,分频信号的周期和分频数,不需重新修改源代码。用示波器观察计数器0和计数器1的输出波形及其关系,并在纸上画出CLK0、OUT0、OUT1的波形。

步骤如下:

1)按图2.5连接电路。

           

              图3.5  TPC-USB平台计数器级联实验连线

2)根据流程图2.6,编程并运行,观察实验结果。

              

            图3.6  TPC-USB平台计数器级联实验流程图

编程提示:8253控制寄存器地址   :283H;计数器0地址:280H;计数器1地址:281H;CLK0连接时钟1MHz。

四、实验的代码说明

4-1、计数器方式0实验代码及说明

 1 CODE SEGMENT        ;段定义开始(CODE段)
 2     ASSUME  CS:CODE ;规定CODE为代码段
 3 START:MOV AL,10H    ;设置控制字00010000(计数器0,方式0,写两个字节,二进制计数)
 4       MOV DX,283H   ;把控制寄存器地址放在DX寄存器中
 5       OUT DX,AL     ;将AL的值送入DX端口
 6       MOV DX,280H   ;把计数器0地址放在DX寄存器中
 7       MOV AL,0FH    ;将0FH存入AL寄存器
 8       OUT DX,AL     ;将此时AL的值送入DX端口
 9 LP1:  IN AL,DX      ;从DX端口读入8位,放在AL寄存器中
10       CALL DISP     ;调用DISP
11       PUSH DX       ;将DX内容保存到堆栈段
12       MOV AH,06H    ;将06H存入AH,为了下句调用21中断
13       MOV DL,0FFH   ;将0FFH存入DL
14       INT 21H       ;调用21中断
15       POP DX        ;将DX的内容推出栈段
16       JZ LP1        ;如果DX的内容是0,就跳转到LP1
17       MOV AH,4CH    ;将4CH存入AH,为了下句调用21中断
18       INT 21H       ;调用21中断
19 DISP PROC NEAR      ;定义一个名为DISP的子程序
20       PUSH DX       ;把DX的内容保存到堆栈段中
21       AND AL,0FH    ;将AL寄存器的内容与0FH进行"与"运算,再把结果存入AL中
22       MOV DL,AL     ;将AL的值送入DL寄存器
23       CMP DL,9      ;比较DL中的值与9的大小
24       JLE NUM       ;如果DL的值小于或等于9时,则跳转到NUM
25       ADD DL,7      ;将DL的值与7进行相加后,再送入DL中
26 NUM:  ADD DL,30H    ;将DL的值与30H进行相加后,再送入DL中
27       MOV AH,02H    ;将02H存入AH
28       INT 21H       ;调用DOS21中断
29       MOV DL,0DH    ;结合"MOV AH,02H"就是说输出0DH
30       INT 21H       ;调用中断指令
31       MOV DL,0AH    ;结合"MOV AH,02H"就是说输出0AH
32       INT 21H       ;调用DOS21中断
33
34       POP DX        ;将DX的内容推出栈段
35       RET           ;子程序在功能完成后返回调用程序继续执行
36       DISP ENDP     ;子程序结束
37       CODE ENDS     ;代码段结束
38       END START     ;程序结束 

4-2、计数器方式3实验代码及说明

 1 CODE SEGMENT       ;段定义开始(CODE段)
 2     ASSUME CS:CODE ;规定CODE为代码段
 3 START:MOV DX,283H  ;把控制寄存器地址放在DX寄存器中
 4       MOV AL,36H   ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)
 5       OUT DX,AL    ;将AL的值送入DX端口
 6       MOV AX,1000H ;该语句是立即寻址方式,就是把1000H这个数赋给AX
 7       MOV DX,280H  ;把计数器0地址放在DX寄存器中
 8       OUT DX,AL    ;将AL的值送入DX端口
 9       MOV AL,AH    ;将AX的高8位存入AL寄存器中
10       OUT DX,AL    ;将此时AL的值送入DX端口
11       MOV DX,283H  ;把端口地址放在DX寄存器中
12       MOV AL,76H   ;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数)
13       OUT DX,AL    ;将AL的值送入DX端口
14       MOV AX,1000H ;把1000H赋给AX
15       MOV DX,281H  ;把端口地址放在DX寄存器中
16       OUT DX,AL    ;将AX的低8位送入DX端口
17       MOV AL,AH    ;将AX的高8位存入AL寄存器中
18       OUT DX,AL    ;将AL的值送入DX端口
19       MOV AH,4CH   ;将4CH存入AH
20       INT 21H      ;调用DOS21中断
21 CODE ENDS          ;代码段结束
22      END START     ;程序结束 

4-3、计数器级联实验代码及说明

  1 data segment
  2 mesg1 db 13,10,‘Counter0:‘,‘$‘
  3 mesg2 db 13,10,‘Counter1:‘,‘$‘
  4 mesg3 db 13,10,‘Continue?(Y/N)‘,‘$‘
  5 mesg4   db   13,10,13,10,‘Thank You!‘,13,10,‘$‘
  6 errorm db 13,10,‘Input Error!‘,‘$‘
  7 Counter0 dw 0
  8 Counter1 dw 0
  9 data ends
 10 code segment
 11 assume cs:code,ds:data
 12 main proc far
 13 start:
 14 mov dx,data
 15 mov ds,dx
 16 do: sub bx,bx
 17 sub ax,ax
 18 mov Counter0,0
 19 mov Counter1,0 ;init
 20 l1:
 21 mov dx,offset mesg1
 22 mov ah,09h
 23 int 21h
 24 rd1 : ;read Counter0
 25 mov al,0 ;判断有无输入
 26 mov ah,01 ;read a char
 27 int 21h
 28 cmp al,0
 29 jz rd1
 30 cmp al,13 ;if enter
 31 je fdone1
 32 jmp tdone1
 33 fdone1: jmp done1
 34 tdone1: cmp al,10
 35 je fdone1
 36 cmp al,‘0‘ ;if input<0 or input>9 error
 37 jb error
 38 cmp al,‘9‘
 39 ja error
 40 push ax
 41 mov ax,10
 42 mul Counter0
 43 mov Counter0,ax ;Counter0=counter*10
 44 pop ax
 45 sub bx,bx
 46 mov bl,al
 47 sub bl,30h
 48 add Counter0,bx ;counter=counter+input
 49 jmp rd1
 50 error:
 51 mov dx,offset errorm
 52 mov ah,09h
 53 int 21h
 54 mov dl,7
 55 mov ah,2
 56 int 21h
 57 jmp done3
 58 tr: ;for jmp do
 59 mov dl,al
 60 mov ah,02h
 61 int 21h
 62 mov dl,10
 63 int 21h
 64 mov dl,13
 65 int 21h
 66 jmp do
 67 l2:
 68 mov dx,offset mesg2
 69 mov ah,09h
 70 int 21h
 71 rd2:
 72 mov al,0 ;判断有无输入
 73 mov ah,01 ;read Counter1
 74 int 21h
 75 cmp al,0
 76 jz rd2
 77 cmp al,13 ;if enter
 78 je fdone2
 79 cmp al,10
 80 je fdone2
 81 jmp tdone2
 82 fdone2: jmp done2
 83 tdone2:
 84 cmp al,10
 85 je fdone2
 86 cmp al,‘0‘
 87 jb error
 88 cmp al,‘9‘
 89 ja error
 90 push ax
 91 mov ax,10
 92 mul Counter1
 93 mov Counter1,ax ;Counter1=Counter1*10
 94 pop ax
 95 sub bx,bx
 96 mov bl,al
 97 sub bl,30h ;bh=0
 98 add Counter1,bx ;Counter1=Counter1+input
 99 jmp rd2
100 done1:
101 jmp l2
102 done2:
103 jmp out8253 ;after enter two counters
104 ; set 8253 and do it
105 done3:
106 mov dx,offset mesg3
107 mov ah,09h
108 int 21h
109 l3: mov ah,07h
110 int 21h
111 cmp al,‘Y‘
112 je tr
113 cmp al,‘y‘
114 je tr
115 cmp al,‘N‘
116 je quit
117 cmp al,‘n‘
118 je quit
119 mov dl,7
120 mov ah,02h
121 int 21h
122 jmp l3
123 out8253: ;work code
124 mov al,00110110b
125 mov dx,283h
126 out dx,al
127 mov ax, Counter0
128 mov dx,280h
129 out dx,al
130 mov al,ah
131 out dx,al
132 mov al,01110110b
133 mov dx,283h
134 out dx,al
135 mov ax,Counter1
136 mov dx,281h
137 out dx,al
138 mov al,ah
139 out dx,al
140 mov cx,2801
141 delay: loop delay
142 jmp done3
143 quit: ;return to DOS
144 mov dx,offset mesg4
145 mov ah,9
146 int 21h
147 mov ax,4c00h
148 int 21h
149 main endp
150 code ends
151 end start

五、实验结果的分析

5-1、计数方式0实验分析

我们将计数器0设置为方式0,计数器初值为N=15,用R-S单脉冲触发器手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同使用逻辑笔观察OUT0的电平变化(当输入16个脉冲后OUT0变低电平),电脑的console窗口中逐渐减1输出,最后为0。

5-2、计数方式3实验分析

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

5-3、级联方式实验分析

其实就是在实验计数方式3的基础上将计数初值设计成可以自己设置的情况。当Counter0= Countet1=1000时和上一个实验一样。

附录资料

本文链接:http://www.cnblogs.com/zjutlitao/p/4172325.html

更多精彩:http://www.cnblogs.com/zjutlitao/p/4125085.html

文档下载:http://pan.baidu.com/s/1i3rFx57

时间: 2024-09-28 19:25:52

[芯片] 2、接口技术·实验二·定时/计数器8253的相关文章

[芯片] 3、接口技术&#183;实验三&#183;可编程并行接口8255A

目录 一.实验目的和要求 二.实验原理与背景 2-1.8255A简介 2-2.8255A编程 三.实验具体的内容 3-1.8255方式0实验1 3-2.8255方式0实验2 3-3.8255方式1输出实验 3-4.8255方式1输入实验 四.实验的代码说明 4-1.8255方式0实验1代码及说明 4-2.8255方式0实验2代码及说明 4-3.8255方式1输出实验代码及说明 4-4.8255方式1输入实验代码及说明 五.实验结果的分析 5-1.8255方式0实验1实验分析 5-1.8255方式

[芯片] 4、接口技术&#183;实验四&#183;串行接口8251A

目录 一.实验目的和要求... 2 二.实验原理与背景... 3 三.实验具体的内容... 3 四.实验的代码说明... 4 五.实验结果的分析... 6 附录资料 一.实验目的和要求 学会8251芯片和微机接口原理和方法. 掌握8251串口芯片的基本工作原理.工作方式和编程原理. 二.实验原理与背景 TPC-USB平台上有一块8251A串行接口芯片,除了片选引脚,其他信号都已接好. 三.实验具体的内容 从键盘输入一个字符,将其ASCII码加 1 后串行发送出去,再从串行口接收回来在屏幕上显示,

[芯片] 1、接口技术&#183;实验一&#183;中断8259

目录 一.实验目的和要求 二.实验原理与背景 2-1.微处理器的中断类型 2-2.8259A内部结构 2-3.8259A读写控制逻辑 2-4.PC上可屏蔽中断 三.实验具体的内容 四.实验的代码说明 五.实验结果的分析 附录材料 一.    实验目的和要求 学会8259芯片和微机接口原理和方法. 掌握8259中断芯片的基本工作原理.工作方式和编程原理. 二.    实验原理与背景 2-1.微处理器的中断类型 图2.1 微处理器中断结构图 2-2.8259A内部结构 图2.2 8259A内部结构图

WLGK-51单片机接口技术基础实验 ——LED闪烁灯

WLGK-51单片机接口技术基础实验-LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld",这个实验是带领我们走入"软硬件综合使用"的一个很好入门示例,51单片机是他的一个载体.下面小伙伴们,让我们一起来揭开LED的神秘面纱吧! 万立高科官网:www.wanligaoke.com 万立高科官方商城:http://www.wlgkbj.com 万立高科淘宝直销店铺:https://r

微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

实验环境:intel x386 一.要求:将3000H单元开始置数为00H-0FH SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3000H MOV CX, 16 AA1: MOV [SI], AL INC SI INC AL LOOP AA1 ;CX == 0? NEXT():AA1

CCNA实验二十五 实战多种ACL访问控制 &nbsp;

CCNA实验二十五 实战多种ACL访问控制 环境:Windows XP .Pracket Tracert 5.3 . GNS3.0.7.2 目的:了解ACL作用并熟练在不同环境中配置ACL 说明: ACL是路由器和交换机接口的指令列表,用来控制端口进出的数据包并且可以保护网络,ACL适用于所有的被路由协议,如IP.IPX.AppleTalk等.ACL种类:标准ACL.扩展ACL.命名式ACL.基于时间ACL.自反ACL.动态ACL. 标准的ACL使用 1 ~ 99 以及1300~1999之间的数

CCNA实验二十八 帧中继(Frame Relay) &nbsp;

CCNA实验二十八 帧中继(Frame Relay) 环境: Windows XP. GNS3.0.7.2 目的:了解如何配置帧中继 说明: 帧中继(Frame Relay, FR)是一种用于连接计算机系统的面向分组的通信方法,也是面向连接的第二层传输协议,帧中继是典型的包交换技术.用户经常需要租用线路把分散在各地的网络连接起来,如果采用点到点的专用线路(例如 DDN),ISP 需要给每个地方的路由器拉 4对物理线路,同时每个路由器需要有 4 个串口.而使用帧中继每个路由器只通过一条线路连接到帧

定时/计数器 脉冲计数

定时/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间.速度.频率.脉宽.提供定时脉冲信号 等.相对于一般8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大.ATmega128一共配置了2个8位和2个 16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍. 5.9.1 预分频器   定时/计数器最基本的功能就是对脉冲信号计数,当计数器计满后(8位为255,16位为65535),再来一个脉

实验二 20155335 实验报告 固件程序设计

实验二 20155307 20155335 20155338 实验报告 固件程序设计 一.实验内容: 1.安装MDK,JLink驱动,运行uVision4,破解MDK2.KEIL-MDK 中添加Z32 SC-000芯片库,完成LED实验3.完成UART发送与中断接收实验4.理解国密算法标准SM1,SM2,SM3,SM4并用gcc和gcc-arm编译5.完成SM1加密实验 二.实验步骤 在开始试验之前,先安装MDK,JLink驱动,运行uVision4,破解MDK, 很多付费软件为了保证试用和购买