当前位置:文档之家› Quartus实验三,212卷积码和计数器

Quartus实验三,212卷积码和计数器

Quartus实验三,212卷积码和计数器
Quartus实验三,212卷积码和计数器

课程名称通信系统集成电路设计

实验名称Quartus II实验三

专业班级

姓名

学号

日期 ______ 2012.1.2 __________

实验三: 212卷积码,十进制计数器

1. 实验目的

a) 掌握在FPGA 上实现212卷积码编码器的方法; b) 用原理图的方法实现十进制加法计数器。

2. 实验环境

a) Quartus II 9.1 (32-Bit)

b) ModelSim-Altera 6.5a (Quartus II 9.1) c) WinXP 操作系统

3. 实验要求

1) 212卷积码编码器

编写生成212卷积码编码器的程序,仿真后观察波形。 2) 十进制加法同步计数器

首先用VHDL 语言描述十进制加法计数器,然后画出它的原理图。 3) 思考题

16进制的计数器与PN4的电路图有什么区别。

4. 实验内容

1)212卷积码

卷积码编码器对输入的数据流每次1bit 或k bit 进行编码,输出n bit 编码符号。但是输出的分支码字的每个码元不仅与此时可输入的k 个bit 有关,也与前m 个连续式可输入的信息有关,因此编码器应包含m 级寄存器以记录这些信息。

通常卷积码表示为 (n,k,m). 编码率 k

r n

=

当k=1时,卷积码编码器的结构包括一个由m 个串接的寄存器构成的移位寄存器(成为m 级移位寄存器、n 个连接到指定寄存器的模二加法器以及把模二加法器的输出转化为穿行的转换开关。

本报告所讲的(2,1,2)卷积码是最简单的卷积码。就是2n =,1k =,m=2的卷积码。每次输入1 bit 输入信息,经过2级移位寄存器,2个连接到指定寄存器的模二加法器,并把加法器输出转化为串行输出。

212编码器原理图如图所示。

2)十进制加法计数器

综合数字逻辑电路的知识,设计出满足要求的电路图,然后用VHDL语言对所设计的电路进行描述。本计数器采用了四个D触发器和一些门级电路来完成。

通过D触发器的二分频功能,对时钟信号二分频后赋给Q(0),再对Q(0)二分频后赋给Q(1),再对Q(1)二分频后赋给Q(2),再对Q(2)二分频后赋给Q(3)。

但是,在设计时要注意,因为是10进制,当计数到达9后必须复位,所以设计一个带非门输入的与非门,输出连接到各D触发器的复位端口,当Q(3 to 0)=’1001’时,与非

门输出0并复位各D触发器。

5.实验步骤及结果

(一) 212编码器

1)建立名为juanji的新工程,编写212编码器的juanji.vdl和测试向量文件

tb_juanji.vdl,并添加到工程中;

2)用Modelsim仿真结果。

编译通过后仿真,结果如下:

图仿真波形图

clk是时钟信号,rst复位信号,d是输入序列,s是输出序列。

rst=1时复位,所有的寄存器置0;rst=0后,d输入序列先为1再为0最后又为1。观察可以看到,d为1的时候,s刚开始输出的序列是一样的。这是由于d为0的时间足够长,使两个寄存器里存的数都为0。而由于卷积码的输出不仅与当前的输入有关,还与前k bits个输入有关,所以当d持续为1时,输出s 也是有变化的。

(二)十进制加法计数器

1)counter10工程由两个模块构成。他们分别是:计数器模块counter10、测试向量模块tb_counter10。

编译成功后,仿真得到:

放大图后,在rst信号变0后,来的第一个时钟信号使data从零变成了

1,此后逐渐增加到9,然后归零又重新开始计数。可见设计图满足要

求。

点击Tools,然后点击Netlist Viewers,再选择RTL Viewer,就能根据程序生成寄存器传输级原理图。

6.需要注意的地方

(一)、卷积码编码器

a)s<=c1 when clk = '1' else c2; 这句话不能写在process里

源代码

architecture behave of juanji is

……

begin

……

s<=c1 when clk = '1' else c2;

process(rst,clk)

……

end process;

end behave;

一开始我在process里的elsif后面补充,

“elsif(clk=’1’) then

s<=c1;

else

s<=c2;

end if; ”

结果编译报错,Error (10818): Can't infer register for "s" at juanji.vhd(21) because it does not hold its value outside the clock edge.

应该把这个写在进程外,s<=c1 when clk = '1' else c2;

(二)、十进制加法计数器

a)、一开始以为D触发器能够像原来寄存器那样用std_logic_vector来声明就可以,后来写程序遇到麻烦才意识到D触发器要自己描述:

elsif(clock'event and clock='1') then

if(count='1')then

Q<="1010";

else

if(D(0)='1')then

Q(0)<= not Q(0);

end if;

if(D(1)='1')then

Q(1)<= not Q(1);

end if;

if(D(2)='1')then

Q(2)<= not Q(2);

end if;

if(D(3)='1')then

Q(3)<= not Q(3);

end if;

end if;

7.实验结论:

这次的实验包括卷积码生成器和十进制计数器。两个电路都少不了D触发器,前者是利用其存储的功能,后者是利用其二分频的功能。十进制计数器也比上次的16进制计数器要稍微复杂些;另外,这次也学习了如何根据VHDL描述语言生成寄存器传输级电路图。通过这次学习,我加深了对VHDL语言的理解。

思考题:16进制的计数器与PN4的电路图有什么区别。

1.周期不同:PN4的周期是2^4-1=15, 16进制的计数器的周期是16;

2. 都使用了D触发器,但PN4是利用其存储的功能,16进制的计数器是利用其二分频的功能。

8.附程序

1.卷积码生成器

(1)模块程序(juanji.vhd)

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity juanji is

port(clk,rst,d:in std_logic;

s:out std_logic);

end juanji;

architecture behave of juanji is

signal m:std_logic_vector(2 downto 0);

signal c1:std_logic;

signal c2:std_logic;

begin

c1<=m(0) xor m(1) xor m(2);

c2<=m(0) xor m(2);

s<=c1 when clk = '1' else c2;

process(rst,clk)

begin

if(rst='1') then

m<="000";

elsif(clk'event and clk='1') then

m(0)<=m(1);

m(1)<=m(2);

m(2)<=d;

end if;

end process;

end behave;

(2).测试向量(tb_juanji.vhd)

library ieee;

use ieee.std_logic_1164.all;

entity tb_juanji is

end tb_juanji;

architecture behaviour of tb_juanji is component juanji

port(clk,rst,d:in std_logic;

s:out std_logic);

end component;

--input

signal clk:std_logic :='0';

signal rst:std_logic :='0';

signal d:std_logic;

--output

signal s:std_logic :='0';

begin

uut:juanji port map(clk=>clk,rst=>rst,d=>d,s=>s);

clk_process:process

begin

clk<='0';

wait for 5ns;

clk<='1';

wait for 5ns;

end process;

d_rst_process:process

begin

rst<='1';

d<='1';

wait for 50ns;

rst<='0';

wait for 50ns;

d<='0';

wait for 50ns;

d<='1';

wait;

end process;

end behaviour;

2. 十进制计数器

(1)counter10.vhd

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

--use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity counter10 is

Port(

reset : in std_logic;

clock : in std_logic;

Qout: out std_logic_vector(3 downto 0));

end counter10;

architecture behave of counter10 is

signal Q: std_logic_vector(3 downto 0) :="0000"; signal Qn: std_logic_vector(3 downto 0);

signal D: std_logic_vector(3 downto 0);

signal count: std_logic :='0';

begin

count <= Q(3) and Qn(2) and Qn(1) and Q(0);

Qout<=Q;

Qn <=not Q;

D(0)<='1';

D(1)<=Q(0);

D(2)<=Q(1) and Q(0);

D(3)<=Q(2) and Q(1) and Q(0);

process(clock,reset)

begin

if (reset = '1') then

Q<= "0000";

elsif(clock'event and clock='1') then

if(count='1')then

Q<="0000";

else

if(D(0)='1')then

Q(0)<= not Q(0);

end if;

if(D(1)='1')then

Q(1)<= not Q(1);

end if;

if(D(2)='1')then

Q(2)<= not Q(2);

end if;

if(D(3)='1')then

Q(3)<= not Q(3);

end if;

end if;

end if;

end process;

end behave;

(2)测试向量tb_counter10.vhd

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.std_logic_unsigned.all;

USE ieee.numeric_std.ALL;

ENTITY tb_counter10 IS

END tb_counter10;

ARCHITECTURE behavior OF tb_counter10 IS

-- Component Declaration for the Unit Under Test (UUT) COMPONENT counter10

Port(

reset : in std_logic;

clock : in std_logic;

Qout: out std_logic_vector(3 downto 0));

END COMPONENT;

--Inputs

SIGNAL clk : std_logic := '0';

SIGNAL rst : std_logic := '0';

--Outputs

SIGNAL dataout1 : std_logic_vector(3 downto 0); BEGIN

-- Instantiate the Unit Under Test (UUT)

uut: counter10 PORT MAP(

reset => rst,

clock => clk,

Qout => dataout1

);

--clkgen:

clk_gen: process

begin

clk<='0'; wait for 50 ns;

loop

clk<=not clk; wait for 5 ns;

end loop;

end process;

reset_gen: process

begin

rst<='1'; wait for 115 ns;

rst<='0'; wait;

end process;

END;

定时器、计数器操作与应用实验报告

实验三 定时器、计数器操作与应用实验报告 、实验目的 1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法; 2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ; 3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。 二、实验要求 仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。 三、实验设备 2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆 注 意: 1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。 四、实验内容 1 、梯形图 1 、 FX 系列可 编程 序控 制器 一只 一套 5、 GX Developer Version 7.0 软件 一套

2、梯形图程序 0LD xooo 1OUT YOOO X001 2LD 3OR¥001 4AN I X002 5OUT Y001 6OUT TO K50 9MPS 10AHI TO 11OUT Y002 12MPP 13ASD TO 14OUT¥003 15LD X003 16RST CO 18LD X004 19OUT CO K5 22LD CO 23OUT Y004 24END 3、时序图

r 时序10 □ ?Si 正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C 40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1?-14D ,1如■!? 如也 40 如厂「 五、实验步骤 1、程序的编辑、检查和修改; 2、程序的变换; 3、程序的离线虚拟设备仿真测试; 4、程序写入PLC; 5、用PLC运行程序; 6、比较程序的分析结果与实际运行结果。 六、实验报告 1、实验梯形图程序的编写; 2、梯形图程序的理论分析与结果; 3、梯形图程序的实际运行结果; 4、结论。 七、实验心得 通过这样一次实验,我对GX Developer Version 7.0 软件的使用方 法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■XDU "Tlr-.Ll-t-1!- D LJ D-IT--1 z?E I4J 一 — Ti ll IL — 」 ill-t-ll-r — 1

8253定时器、计数器仿真实验报告

实验名称8253定时器/计数器仿真实验学生姓名 学生学号 专业班级 指导老师 2014-12-31

实验五8253定时器/计数器仿真实验 一、实验目的 1.针对特定的芯片,学会用Proteus ISIS设计仿真电路图; 2.掌握8253工作原理,对8253进行仿真; 3.了解电路一般仿真方法。 二、实验内容 1.配置Proteus仿真环境; 2.根据电路图,用合适的代码对其进行仿真。 三、实验步骤 1.安装Proteus和masm32编译器; 2.在Proteus里配置masm32编译器。配置过程如下: 图1 添加/移除代码生成工具(1) a)把masm32.bat 复制到c:\masm32\bin 里面(c:\masm32 为你自己安 装masm32的路径);

b)启动Proteus ISIS 后,选择菜单源代码——>设定代码生成工具。 打开如图1所示; c)点击“新建”,然后选择c:\masm32\bin\masm32.bat文件,就出现图 2; 图2 添加/移除代码生成工具(2) d)图中红圈位置分别填上ASM 和EXE。然后点确定。使用masm32 编 译器就配置好了。 3.在画好电路图后,选择菜单源代码——>添加/删除源文件。出现图3; 图3 添加/移除源代码(3) 4.代码生成工具选择masm32,然后点新建,创建自己的源代码。比如 8253.asm,点确定; 5.接下来点击源代码——>1.8253.asm,编辑自己的代码。完成后保存; 6.点击源代码——>全部编译。出现图4表示编译成功,表示程序可以执

行。 图4 代码成功编译 7.点击Proteus中的调试菜单的相应功能,完成仿真。 四、实验结果 1.仿真电路图如图5所示; 图5 8253仿真电路图

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

8254定时计数器应用实验报告

XX 大学实验报告 课程名称: 实验项目名称:8254定时/计数器应用实验学院:信息工程学院 专业:通信工程 指导教师: 报告人:学号:班级: 实验时间: 实验报告提交时间:

教务处制

单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=fCLKi÷fOUTi、其中fCLKi 是输入时钟脉冲的频率,fOUTi 是输出波形的频率。 图(1)是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。 图(1)8254的内部借口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表

1所示。 表1 8254的方式控制字 表2 8254 读出控制字格式 表3 8254 状态字格式 8254 实验单元电路图如下图所示:

五、实验步骤及相应操作结果 1. 计数应用实验 编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+ 作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“M”。 实验步骤: (1)实验接线如图2所示。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,按动KK1+产生单次脉冲,观察实验现象。(4)改变计数值,验证8254 的计数功能。

8253计数器定时器接口实验

微机原理实验报告 实验五 8253计数器/定时器接口实验 1.实验目的 1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片; 2)了解8253计数器/定时器的工作原理; 3)掌握8253初始化的程序设计; 4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。 2.实验内容 将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。 1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手 动逐个输入单脉冲,观察OUT0的电平变化。 硬件连接:断开电源,按图2-1将8253接入系统。具体包括: (1)将8253的CS接I/O地址输出端280H-287H; (2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数; (3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作; (4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的 状态。 图2-1 8253实验一的连线图 2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重 新接线。要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。

图2-2 8253实验二的连线图3.程序及框图 1)程序框图 图4-1给出了8253实验一的流程图。 图4-1 程序流程图 图4-2给出了8253实验二的流程图。 2)程序代码 实验一程序代码: CTRL EQU 283H TIME0 EQU 280H TIME1 EQU 281H DATA SEGMENT MESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDS CODE SEGMENT

接口定时器与计数器实验定时器实验

同组同学学号:同组同学姓名:

实验框图: 主程序框图 源程序及分析: CONTROL equ 0c003h ;设置命令寄存器 COUNT0 equ 0c000h ;设置计数器0 COUNT1 equ 0c001h ;设置计数器1 COUNT2 equ 0c002h ;设置计数器2 code segment assume cs:code start proc near ;第一次定时器设定: mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROL out dx, al mov ax, 1000

实验电路及连线: 连线连接孔1 连接孔2 1 8253_CS CS0 2 8253_OUT0L0 3 8253_GATE0VCC 4 8253_CLK0单脉冲 实验说明: 本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。实验时,可以将OUT0 接到LED上,观察计数器是否工作。 实验框图: 主程序框图 源程序及分析: CONTROL equ 08003h COUNT0 equ 08000h COUNT1 equ 08001h COUNT2 equ 08002h code segment assume cs:code start proc near mov al, 30h ; 通道0,方式0 mov dx, CONTROL out dx, al mov al, 5 ; 计数器初始值。

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。 汇编程序: ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } } 开始 TMOD初始化 计数初值初始化 中断初始化 启动定时器 计数溢出 清计数溢出标志 Y N P1.0口线取反

实验报告五 定时器计数器实验

信息工程学院实验报告 课程名称:微机原理与接口技术Array 实验项目名称:定时器/计数器实验实验时间: 班级:姓名:学号: 一、实验目的 1. 掌握8254 的工作方式及应用编程。 2. 掌握8254 典型应用电路的接法。 二、实验设备 PC 机一台、TD-PITD+实验系统一套。 三、实验原理 8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: (1)有 3 个独立的16 位计数器。 (2)每个计数器可按二进制或十进制(BCD)计数。 (3)每个计数器可编程工作于 6 种不同工作方式。 (4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。 (5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=f CLKi ÷f OUTi、其中f CLKi 是输入时钟脉冲的频率,f OUTi 是输出波形的频率。 图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述: (1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。

图5-1 8254 的内部接口和引脚 8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表5-1~5-3 所示。 表5-1 8254 的方式控制字格式 表5-2 8254 读出控制字格式 表5-3 8254 状态字格式 8254 实验单元电路图如下图所示:

可编程定时器计数器(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所示。 图1计数器8253与8086连接原理图

注:实验过程中,发现图1有误。应将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对控制字进行写操作,且对相应的定时器有效,则相应定时器改变工作模式,可能准备接收计时初值。控制字的格式如图2所示。

3实验三_定时计数器

实验三定时计数器实验 (实验前一定要先完成仿真电路设计,没有完成的不能进入实验室) 一、实验要求 设计一个如图所示的门铃电路,当按下按钮开关时,喇叭发出叮咚的门铃声音。 二、实验目的 掌握单片机定时计数器的定时模式及编程。 三、实验步骤 1、按实验一的方法设计电路原理图。 本实验需要选取的元器件有单片机AT89C51、瓷片电容CAP、电解电容CAP-ELEC、电阻RES、晶振CRYSTAL、按钮BUTTON、普通三极管PN2222、喇叭SPEAKER等。本实验中的元器件参数值:晶振X1频率为12MHz,瓷片电容C1、C2的值为30pF,电解电容C3的值为10uF,电阻R1为470,R2、R3的值为10K,单片机AT89c51的时钟频率12MHz。 2、编写源程序 程序设计方法 1.我们用单片机实定时/计数器T0的方式2来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ 的频率要经过4次250us的定时。 2.在设计过程,只有当按下k1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

3.“叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。也就是前0.5秒P3.2输出700HZ的频率,后0.5秒输出500HZ的频率。 四、仿真。 在PROTEUS ISIS环境,加载.HEX文件进行仿真。 五、写入实验箱单片机测试 启动ISP在线写程序,将仿真通过的.HEX文件写入综合实验箱的单片机中进行测试。检查是否和仿真的效果相同。 #include unsigned char t500hz; unsigned char t700hz; unsigned int tcnt; bit stop; bit flag; sbit SP1=P3^3; sbit SPOUT=P3^2; void main(void) { TMOD=0x02; TH0=0x06; TL0=0x06; ET0=1; EA=1;

实验三 8253定时器

实验三8253定时器/计数器实验 姓名:张朗学号:11121535 一、实验目的 1. 学会8255芯片与微机接口的原理和方法。 2. 掌握8255定时器/计数器的工作原理和编程方法。 二、实验内容 编写程序,将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;(单脉冲与时钟单元) 四、程序框图 五、编程

1.T=1.48s CODE SEGMENT ASSUME CS:CODE ORG 1200H START: CLI MOV DX, 0043H MOV AL, 34H OUT DX, AL MOV DX, 0040H MOV AL, 0EEH OUT DX, AL MOV AL, 02H OUT DX, AL MOV DX, 0043H MOV AL, 76H ;01110110设置计数器1,方式3,16位二进制计数OUT DX, AL MOV DX, 0041H MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL JMP $ ;8253自行控制led灯 CODE ENDS END START

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

实验六 8255和8253可编程芯片编程实验

实验六 8255/8253可编程芯片综合实验 一、实验目的 1.了解8255、8253芯片结构及接口方式。 2.掌握8255、8253的编程方法。 二、实验内容 1、以8253的计数器1,通过CLK1对300Hz的信号进行计数定时,采用方式2,要求定时时间为2S; 2、将计数器1的输出OUT1接到计数器2的CLK2上,用计数器2对其计数4次,采用方式3产生方波信号; 3、利用8255的A口工作于方式0输出控制LED灯、B口工作于方式0的输入, OUT2接到PB0上,查询PB0的状态,若PB0==0,则从A口输出00001111,若PB1==1,则从A口输出11110000。 三、实验预习要求 学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。 四、实验步骤 1)系统各跳线器处在初始设置状态。 将8位LED灯接到8255的A口,CS_8255接200H,则8255 状态/命令口地址为203H,PA口地址为200H,PB口地址为201H。 将CS-8253接208H,则8253计数器0地址为208H,计数器1地址为209H,计数器2地址为20AH,控制口地址为20BH。 CLK1接时钟信号源上的300Hz信号,OUT1接到CLK2上,OUT2接到8255的PB0上,GATE1和GATE2都接到+5V上。 2)启动PC机,打开THGMW-88软件,输入源程序,并编译源程序。编译无误后,下载程序运行。 五、实验要求 1)根据实验内容编写一个程序,并在实验仪上调试和验证,记录程序。 2)观察发光二极管的亮灭变化情况和时间的关系。 3)不改程序,将CLK1接到150Hz信号源上观察有什么变化,接到900Hz信号源上又有什么变化,想想为什么?

实验三单片机定时计数器实验

实验三单片机定时/ 计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4 (T0) 引脚进行计数。将其数值按二进制数在P1 口驱动LED丁上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱( lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0) 引脚进行计数。将其数值按二进制数在P1 口驱动LED丁上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON TMOD 用于设置定时器/ 计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要

功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b方式0,记数器 movTH0, #0 movTL0, #0 setbTR0开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0 的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh movr1,a mova,TH0

8253计数器实验

一、实验目的 1、学习8088/86与8253的连接方法。 2、学习8088/86对8253的控制方法。 二、实验器材 计算机,汇编相关程序,WA VE6000实验仿真器 三、实验原理 利用8088/86外接8253可编程定时器/计数器,可以实现对外部事件进行计数。设置断点读回计数器的值。本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT 脚输出一个高电平。实验时,可以将OUT0接到LED 上, 四、实验步骤 (1) 在实验箱断电的情况下连好线。 (2) 输入程序并检查,保存程序。 (3) “编译”程序。 (4) “全速执行”程序。 (5) 记录实验结果及分析。 五、实验数据 CONTROL equ 08003h COUNT0 equ 08000h COUNT1 equ 08001h COUNT2 equ 08002h code segment assume cs:code start proc near mov al, 30h ; 通道 0,方式0 mov dx, CONTROL out dx, al mov al, 5 ; 计数器初始值。 mov dx, COUNT0 out dx, al ; 低八位 mov al, 0 out dx, al ; 高八位 Again: mov al, 00000000B ; 锁存计数器值

mov dx, CONTROL out dx, al mov dx, COUNT0 in al, dx ; 读入计数值低八位 mov bl, al in al, dx ; 读入计数值高八位 mov ah, al mov al, bl jmp Again start endp code ends end start 六、实验结果分析 电路连接后按下试验箱左侧开关,L0灯亮。因为选择输入的单脉冲为高电平。程序编译后全速执行,观察到L0灯灭了。因为单脉冲信号进入,写信号有效时向计数器写入控制字CW,之后其输出端OUT就变低电平,所以灯灭。按下单脉冲开关第六次后,L0灯重新亮起。原因是本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。同时OUT脚输出一个高电平。所以灯又亮了。由此看来应该是第五次就亮的,那为什么是第六次灯才亮,是因为有一个软件误差,软件启动在CPU用输出指令向计数器写入初值后就启动计数。但事实上,CPU写入的计数初值只是写到了计数器内部的处置寄存器中,计数过程并未真正开始。写入初值后的第一个CLK信号将初值寄存器中的内容送到计数器中,而从第二个CLK脉冲的下降沿开始,计数器才真正进行减1计数。之后,每来一个CLK脉冲都会使计数器减1,直到减到零时在OUT端输出一个信号。因此,从CPU执行输出指令写入计数初值到计数结束,实际的CLK脉冲个数比编程写入的计数初值5要多一个,即6个。只要用软件启动计数,这个误差是不可避免的; 若要修改初值,可以在指令“MOV AL,5”修改,值得注意的是,由于有一个软件误差,所以每次输入的初值要比自己本来要的初值(N)多1,即(N+1)个脉冲

实验四 8253定时计数器应用

实验四8253定时/计数器应用 1.实验目的 掌握8253命令字的设置及初始化和8253的工作方式及应用编程 2.实验内容 8253是INTEL公司生产的通用外围接口芯片之一,它有3个独立的16位计数器,计数 频率范围为0-2MHZ。它所有的计数方式和操作方式都可通过编程控制。其功能是延时 终端、可编程频率发生器、事件计数器、倍频器、实时时钟、数字单稳和复杂的电机控 制器。 3.实训步骤 实现方式0的电路图。设8253端口地址为:40H-43H 要求:设定8253的计数器2工作方式为0 ,用于事件计数,当计数值为5时,发出 中断请求信号,8088响应中断在监视设备上显示M。本实训利用KK1作为CLK输 入,故初值设为5时,需按动KK1键6次,可显示一个 M. 实验七 8253定时/计数器应用实验 一.实验目的 1.熟悉8253在系统中的典型接法。 2.掌握8253的工作方式及应用编程。 二.实验设备

TDN86/88教学实验系统 一台 三.实验内容 (一)系统中的8253芯片 图7-1 8253的内部结构及引脚 1. 8253可编程定时/计数器介绍 8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。它有3个独立的十六位计数器,计数频率范围为0-2MHz。它所有的计数方式和操作方式都通过编程的控制。 8253的功能是:(1)延时中断(2)可编程频率发生器(3)事件计数器 (4)倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器

8253的工作方式:(1)方式0: 计数结束中断(2)方式1: 可编程频率发生器 (3)方式2: 频率发生器(4)方式3: 方波频率发生器 (5)方式4: 软件触发的选通信号 (6)方式5:硬件触发的选通信号 8253的内部结构及引脚如图7-1所示,8253的控制字格式如图7-2所示。 图7-2 8253的控制字

实验三 定时计数器、8253方波实验

实验三定时/计数器、8253方波实验 一、实验目的 1.学会8253芯片和微机接口原理和方法。 2.掌握8253定时器/计数器的工作方式和编程原理。 二、实验内容 8253的0通常工作在方式3,产生方波。 三、电路原理图 1.程序流程 2.实验电路图 四、程序清单 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490H H9: MOV DX,0FFE3H MOV AL,36H OUT DX,AL MOV DX,0FFE0H

MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL JMP $ CODE ENDS END H9 五、编程提示 8253芯片介绍 8253是一种可编程定/计数器,有三个十六位计数器,其计数频率范围为0~2MHZ,用+5V单电源供电。 8253的功能用途: ⑴延时中断 ⑵可编程频率发生器 ⑶事件计数器 ⑷二进制倍频器 ⑸实时时钟 ⑹数字单稳 ⑺复杂的电机控制器 8253的六种工作方式: ⑴方式0:计数结束中断 ⑵方式1:可编程频率发生 ⑶方式2:频率发生器 ⑷方式3:方波频率发生器 ⑸方式4:软件触发的选通信号 ⑹方式5:硬件触发的选通信号 8253的0号通道工作在方式3,产生方波。 六、实验步骤 1、实验连线 ⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。 ⑵定时计数单元CLK0与分频单元T2相连,GATE0与5V相连,8253CS与译码单元Y0相连。

⑶用8芯扁平电缆将8251串行通信单元的数据总线插座与数据总线单元任一插座相连。 2、LED环境 (1)在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 (2)在“P.”状态下键入3490,然后按“EXEC”进入实验项目的运行。 3、PC环境 在与PC联机状态下,编译、连接、下载PH88.asm,用连续方式运行程序。 4、观察运行结果 以连续方式运行程序,用示波器观察OUT0应有方波输出。 5、终止运行 按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。 七、实验心得 本次实验学会了8253芯片和微机接口原理和方法,掌握了8253定时器/计数器的工作方式和编程原理。

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图 四、实验程序流程框图和程序清单及实验结果

/********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END /********* 设计要求:(b)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器0的免装初值方式2以中断方式工作 时间:2012年11月10日

实验三 单片机定时计数器应用实验(一)(学生用)

实验三单片机定时/计数器应用实验(一) 一、实验目的 (1)掌握定时/计数器的基本结构、工作原理和工作方式。 (2)掌握定时/计数器的使用和编程方法。 (3)进一步掌握中断处理程序的编写方法。 二、实验器材 (1)HJ-C52开发板一块 (2)计算机一台 (3)Keil C51编程软件 (4)数据下载线 三、实验电路 图2 电路图 四、实验说明 1、51单片机有。两个16位内部定时器/计数器(T/C,Timer/ Counter)。若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。由于脉冲周期固定由计数值可以计算出时间,有定时功能。 定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要

功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 2、TMOD (1)M1M0工作方式控制位 (2)C/T 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式;C/T = 0时, 为定时器方式。 (3)GATE 定时器/计数器运行门控标志位 当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的T/C才被选通工作。若GATE=0, T/C的启动仅受TR0 (或 TR1)控制,即置 1, T/C就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。 3、TCON TF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。TR1、TR0 分别是定时器/计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器/计数器才开始工作, 在系统复位时被清0。 4、初始化 (1)初始化步骤 在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON 和TMOD编程,还需要计算和装载T/C的计数初值。一般完成以下几个步骤: 1)确定T/C的工作方式——编程TMOD寄存 2)计算T/C中的计数初值,并装载到TH和TL; 3)T/C在中断方式工作时,必须开CPU中断和源中断——编程IE寄存器; 4)启动定时器/计数器——编程TCON中TR1或TR0位。 (2)计数初值的计算 1)定时器的计数初值:

相关主题
文本预览
相关文档 最新文档