脉冲计数-定时计数器的记数功能实验-汇编

合集下载

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

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

实验6 8253定时计数器电路接口实验2220083443 赵洪宇一、实验目的掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。

二、实验设备MUT—Ⅲ型实验箱、8086CPU模块、示波器(实验台无)。

三、实验内容8253计数器0,1,2工作于方波方式,观察其输出波形四、实验原理介绍本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路(1)电路原理该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口,地址,读写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。

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

本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路脉冲产生电路8253的方式控制字8253的状态字(2)电路测试检查复位信号,通过8253定时器/计数器接口实验,程序全速运行,观察片选、读、写、总线信号是否正常。

五、实验步骤1、实验连线:CS0CS8253 OUT08253CLK2 OUT2LED1示波器(实验中无)OUT1 CLK38253CLK0 CLK38253CLK1实验接线原理图如下:注:GATE信号无输入时为高电平2、编程调试程序assume cs:codecode segment publicorg 100hstart:mov dx,04a6h ;控制寄存器mov ax,36h ;计数器0,方式3out dx,axmov dx,04a0hmov ax,7Chout dx,axmov ax,92hout dx,ax ;计数值927Chmov dx,04a6hmov ax,76h ;计数器1,方式3out dx,axmov dx,04a2hmov ax,32hout dx,axmov ax,0 ;计数值32hout dx,axmov dx,04a6hmov ax,0b6h ;计数器2,方式3out dx,axmov dx,04a4hmov ax,04hout dx,axmov ax,0 ;计数值04hout dx,axnext:nopjmp nextcode endsend start3、全速运行,观察实验结果六、实验结果程序全速运行后,LED1闪烁(周期为0.25s),本实验由于实验台没有提供示波器,所以对于实验所要求的观察方式3的波形无法实现。

定时器计数器的定时实验

定时器计数器的定时实验

定时器和计数器是数字逻辑电路中常见的功能模块,用于时间测量和事件计数。

以下是一个可能的定时器计数器的定时实验设计方案:
实验名称:定时器计数器的定时实验
实验目的:
1. 了解定时器和计数器在数字电路中的应用;
2. 学习定时器的工作原理和使用方法;
3. 掌握计数器的功能及其在事件计数中的应用。

实验内容:
1. 定时器实验:
-设计一个简单的定时器电路,利用集成电路或开发板上的定时器模块,实现不同时间间隔的脉冲输出。

-调节定时器参数,观察输出信号的频率和占空比的变化。

2. 计数器实验:
-将定时器的输出信号连接到计数器输入端,通过计数器实现对脉冲数量的计数。

-设置计数器的初始值和计数方式,观察计数器的计数过程及计数结果。

实验器材与设备:
1. 集成电路或开发板上的定时器和计数器模块
2. 连接线、电源等实验器材
3. 示波器或数码多用表等测试仪器
4. 相关的实验软件和工具
实验注意事项:
1. 理解定时器和计数器的工作原理,正确连接和设置实验电路。

2. 注意电路连接的准确性,确保信号传输正常。

3. 在实验过程中注意观察输出信号波形和计数结果,及时调整参数以获取所需实验数据。

预期结果:
通过该实验,学生可以深入了解定时器和计数器在数字电路中的应用,掌握定时器的工作原理和调节方法,以及理解计数器在事件计数中的作用。

学生将能够实际操作定时器计数器模块,设计并搭建相应的实验电路,观察实验结果并进行数据分析。

这样的定时器计数器的定时实验设计旨在帮助学生加深对数字逻辑电路中定时和计数功能的理解,培养其实验操作能力和问题解决能力。

定时器的设计实验报告

定时器的设计实验报告

定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。

本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。

2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。

其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。

2.2 设计步骤1. 确定定时器的时间基准。

时间基准可以选择外部脉冲输入或者由稳定的晶振产生。

2. 设计计数器的位数。

根据计时的范围确定计数器的位数,以保证计数范围的覆盖。

3. 计算计数器的计数速度。

根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。

4. 根据计数器的位数和计数速度,选择合适的计数器芯片。

5. 配置计数器芯片的工作模式和输入脉冲的触发方式。

6. 连接电路并验证设计是否符合要求。

2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。

在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。

3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。

由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。

然而,该设计存在一个缺点,即计数器位数的限制。

由于计数器位数的限制,导致定时的最大时间间隔受到了限制。

计数器实验报告

计数器实验报告

实验4计数器及其应用一、实验目的1、学习用集成触发器构成计数器的方法2、掌握中规模集成计数器的使用及功能测试方法二、实验原理计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。

计数器种类很多。

按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。

根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。

根据计数的增减趋势,又分为加法、减法和可逆计数器。

还有可预置数和可编程序功能计数器等等。

目前,无论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。

使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。

1、中规模十进制计数器CC40192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如图5-9-1所示。

图5-9-1 CC40192引脚排列及逻辑符号图中LD—置数端 CP U—加计数端 CP D—减计数端CO—非同步进位输出端BO—非同步借位输出端D0、D1、D2、D3—计数器输入端Q0、Q1、Q2、Q3—数据输出端 CR—清除端CC40192的功能如表5-9-1,说明如下:表5-9-1当清除端CR为高电平“1”时,计数器直接清零;CR置低电平则执行其它功能。

当CR 为低电平,置数端LD 也为低电平时,数据直接从置数端D 0、D 1、D 2、D 3 置入计数器。

当CR 为低电平,LD 为高电平时,执行计数功能。

执行加计数时,减计数端CP D 接高电平,计数脉冲由CP U 输入;在计数脉冲上升沿进行 8421 码十进制加法计数。

执行减计数时,加计数端CP U 接高电平,计数脉冲由减计数端CP D 输入,表5-9-2为8421码十进制加、减计数器的状态转换表。

表5-9-2加法计数减计数2、计数器的级联使用一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。

单片机定时计数器实验

单片机定时计数器实验
六、源程序修改原理及其仿真结果
实验结果图
原程序
打开开关,小灯依次亮
修改一
修改二
利用开关。
修改三
小灯每隔200us亮依次
修改四
七、心得体会
通过这次实验,我学会了计数器的使用方法。学会了计数器程序的编写,定时器的使用方法和定时器程序的编写。做完这次实验后,我熟练了对修改程序的修改,掌握了各种语句的作用,通过修改程序得到了实验结果。
2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转
三、实验仪器和条件
计算机
伟福实验箱(lab2000P)
四、实验内容与软件流程图
实验3-1 、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。
、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。
实验三单片机定时/计数器实验
一、实验目的
1、学习计数器的使用方法。
2、学习计数器程序的器程序的编写。
5、熟悉汇编语言
二、实验说明
1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。
、流程图
、实验电路及连线
实验3-2 、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转
、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

基于FPGA的PWM与定时计数器IP核的设计

基于FPGA的PWM与定时计数器IP核的设计

基于FPGA的PWM与定时计数器IP核的设计前言PWM是脉冲宽度调制(Pulse Width Modulation)的简称,在自动控制系统和计算机技术领域都有非常广泛的应用。

在许多硬核式的嵌入式CPU中都有PWM和定时计数器模块的I/O 口供用户使用,在交流检测、电机控制等实际应用系统中,PWM是整个系统的技术核心,在嵌入式操作系统中定时计数器也是不可缺少的部分。

而在FPGA中的SOPC中,很多时候并没有提供这种模块供用户使用,因此设计出支持PWM输出的IP核具有很大的实用价值。

针对市场上使用的FPGA情况,本文所提出的IP功能实现是基于Altera公司的cyclone II芯片,该功能模块不仅可以作为独立的模块使用,而且可以嵌入到Altera公司提供的NIOS II处理器中,并通过NIOS II对该模块进行控制。

HDL语言是一种通用性很强的语言,因此这个模块具有很高的移植性,不仅可以用于大多数的Altera芯片,而且对于其它公司生产的FPGA芯片同样适用。

本设计中给出了模块与主系统的接口电路、功能逻辑电路以及外部输出端口。

1 芯片功能描述本设计实现了PWM输出和定时器/计数器两大功能,IP核将根据内部寄存器的状态选择相应的工作模式完成系统的功能。

(1)PWM工作模式。

当IP工作在PWM模式下时,模块内部计数器将计算高低电平脉冲的时间长度(或者是脉冲个数),模块根据用户自定义的PWM 输出脉冲占空比,产生具有占空比可调的二进制信号,最后以脉冲的形式输出。

(2)定时器/计数器工作形式。

当IP工作在定时器模式下时,芯片内部的32位定时器/计数器模块开始计数时钟周期的个数,当时钟周期数达到内部寄存器的预设的数值,则产生一个中断信号。

该信号可以被主系统识别,并产生相应的中断功能。

定时/计数的模式有单一循环和连续循环两种方式,并有内部系统时钟源和外部时钟源供选择,工作方式与时钟源的选择通过置位控制寄存器相应的位来选择。

《微机原理与接口技术》实验指导书

《微机原理与接口技术》实验指导书

《微机原理与接口技术》课程实验指导书实验内容EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求✧实验一实验系统及仪器仪表使用与汇编环境✧实验二简单程序设计实验✧实验三存储器读/写实验✧实验四简单I/0口扩展实验✧实验五8259A中断控制器实验✧实验六8253定时器/计数器实验✧实验七8255并行口实验✧实验八DMA实验✧实验九8250串口实验✧实验十A/D实验✧实验十一D/A实验✧实验十二8279显示器接口实验EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求EL-8086-III微机原理与接口技术教学实验系统是为微机原理与接口技术课程的教学实验而研制的,涵盖了目前流行教材的主要内容,该系统采用开放接口,并配有丰富的软硬件资源,可以形象生动地向学生展示8086及其相关接口的工作原理,其应用领域重点面向教学培训,同时也可作为8086的开发系统使用。

可供大学本科学习《微机原理与接口技术(8086)》,《单片机应用技术》等课程提供基本的实验条件,同时也可供计算机其它课程的教学和培训使用。

为配合使用EL型微机教学实验系统而开发的8086调试软件,可以在WINDOWS 2000/XP等多种操作系统下运行。

在使用本软件系统调试程序时,可以同时打开寄存器窗口、内存窗口、反汇编窗口、波形显示窗口等等,极大地方便了用户的程序调试。

该软件集源程序编辑、编译、链接、调试与一体,每项功能均为汉字下拉菜单,简明易学。

经常使用的功能均备有热键,这样可以提高程序的调试效率。

一、基本特点EL型微机教学实验系统是北京精仪达盛科技有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。

旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。

系统具有以下特点:1、系统采用了模块化设计,实验系统功能齐全,涵盖了微机教学实验课程的大部分内容。

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

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

、实验目的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 口线上接示波器观察波形。

tJI-JTTALlRSTIPO 1 Z^Cil POiPD 3/jfiD3 IPCLW/MH FD-5/^CB”血P2 O/jtS PNUMa P 2 .2/AJOPI F3JD/RKDP1 且1门池F1 2P1 .3P3^/|NT1 卩11 .4P3.4Z1D P1.5 P3 .5fT1 尸1P3.0AA/RP1I.7 P3.?/RD17三、电路原理图 18HQAT69C52P 2 .4/A12P2 5/A13 P2P2 .7XA1«5蝕丘2Q 37答:程序见程序清单四、实验程序流程框图和程序清单1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,MAIN: MOV IE, #00HMOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1LOOP: JNB TF1, LOOP CLRTF1 CPL P1.0 AJMP LOOP ENDC 语言程序:#in elude <reg52.h> sbit Y=P1A0; void mai n() {EA=0; ET1=0; TMOD=0x60;TH1=0x9C;计数数值初始化中断断 艙化!l[启动 =时器1 器一、r动 启N箱 * 1溢断清计数溢出标志—1 ~ P1.(口线取反TL 仁 0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数, 每计满200个脉冲,则取反P1.0 口线状态。

汇编外部中断及NE555计数实验实验报告

汇编外部中断及NE555计数实验实验报告

外部中断及NE555计数实验11103070315 李青【实验内容】1、利用外部按键中断计数并用数码管显示计数值2、用51单片机T0、T1定时计数器对NE555产生的脉冲信号进行频率计数,频率送LCD显示(或数码管显示)【需要了解的知识】1、GPIO设定2、LCD显示原理,输入与输出及其原理3、定时计数器工作原理及频率测量4、NE555工作原理【实验预习】预读实验指导电子文档的实验十六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一外部中断实验任务:利用单片机的外部中断功能进行计数,然后将计数值输出到数码管上显示。

K5键—计数值加1(外部中断0)K6键—计数值加1(外部中断1)3位数码管显示,最大计数值255实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。

输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL 的AT89S52的CPU。

选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。

接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。

单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。

然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file (*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。

8254定时与计数器实验

8254定时与计数器实验

XX学院实验报告实验名称姓名学号班级教师日期一、实验内容与要求1.1 实验内容本次实验分为如下2个子实验:(1)计数应用实验:编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按下‘KK1+’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’;(2)定时应用实验:编写程序,应用8254的定时功能,产生一个1s的方波,并用本装置的示波器功能来观察。

1.2 实验要求本次实验中2个子实验的实验要求如下:(1)计数应用实验:将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符“M”;(2)定时应用实验:将8254的计数器0和计数器1都设置为方式3,用信号源1MHz作为CLK0时钟,OUT0为波形输出1ms方波,再通过CLK1输入,OUT1输出1s方波。

二、实验原理与硬件连线2.1 实验原理8254是Intel公司生产的可编程间隔定时器。

是8253的改进型,比8253具有更优良的性能。

8254具有以下基本功能:(1)有三个地理的16位计数器。

(2)每个计数器可按二进制或十进制(BCD)计数。

(3)每个计数器可编程工作于6种不同的工作方式。

(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。

(5)8254有读回命令(8253,没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。

计数初值公式为:n=f CLKi÷f OUTi,其中f CLKi是输入时钟脉冲的频率,f OUTi是输出波形的频率。

图2-1是8254的内部结构框图和引脚图,它是由与CPU的接口,内部控制电路和三个计数器组成。

8254的工作方式如下述:(1)方式0:计数到0结束输出正跃变信号方式。

(2)方式1:硬件可重触发单稳方式。

单片机计数器的编程

单片机计数器的编程

单片机计数器的编程概述单片机计数器是基于单片机的硬件模块,可以实现数值的增加和减少的功能。

通过编程控制计数器的工作模式和计数范围,可以实现各种应用场景下的数字计数功能。

本文将介绍单片机计数器的基本原理、编程方法和应用案例,帮助读者理解和掌握单片机计数器的编程技巧。

单片机计数器的基本原理单片机计数器通常采用定时器/计数器模块实现,这个模块集成在单片机芯片内部。

具体实现方式和功能会因单片机型号和厂家而有所差异,但基本原理是相通的。

单片机计数器通常由以下几个主要组成部分构成: - 器件选择:根据需要选择合适的单片机型号和计数器模块。

- 计数寄存器:用于存储计数器的当前值。

- 预设值寄存器:用于设置计数器的初始值或比较值。

- 控制寄存器:用于控制计数器的工作模式、计数范围等参数。

- 时钟源:提供计数器的时钟信号,以确定计数的时间间隔。

根据计数器的工作模式和计数范围的不同,单片机计数器可以实现多种功能,如:- 简单计数:按照固定时间间隔进行自增或自减操作。

- 定时/延时:在一定时间后触发中断或执行特定操作。

- 脉冲计数:计算外部脉冲信号的频率或脉冲数。

- 频率计数:测量外部信号的频率。

单片机计数器的编程方法单片机计数器的编程方法主要包括以下几个方面: 1. 初始化计数器:设置计数器的初始值和工作模式。

2. 控制计数器:控制计数器的启动、停止、清零等操作。

3. 处理计数器溢出:处理计数器达到最大值后的溢出操作。

4. 读取计数器值:读取计数器的当前值,并根据需要进行处理。

具体编程方法在不同的单片机和编程语言环境下可能会有所不同,以下是一个C语言编写的单片机计数器的代码示例:#include <reg51.h>// 单片机寄存器定义// 定义计数器全局变量unsigned int counter = 0;// 中断处理函数void Timer0Interrupt() interrupt 1{TF0 = 0; // 清除中断标志位counter++; // 计数器自增}// 初始化计数器void InitTimer0(){TMOD = 0x01; // 定时器0工作在模式1,16位定时/计数模式TH0 = 0xFF; // 设置计数器的初始值,定时溢出时间为65536个机器周期TL0 = 0xFF;ET0 = 1; // 允许定时器0中断EA = 1; // 允许总中断TR0 = 1; // 启动定时器0}// 主函数void main(){InitTimer0(); // 初始化计数器while(1){// 在这里执行其他操作// 读取并处理计数器的值if(counter > 100){// 当计数器值大于100时执行特定操作// 可以触发中断、改变计数器的工作模式等counter = 0; // 重置计数器的值}}}单片机计数器的应用案例单片机计数器的应用非常广泛,在各种嵌入式系统和电子设备中都有重要作用。

51单片机定时器计数器汇编实验报告

51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

stm32定时器脉冲计数

stm32定时器脉冲计数

今天,尝试使用STM32的计数器的外部时钟功能,来对外部脉冲信号进行计数。

效果还不错。

具体设置如下:/* TIM3_CH2 为脉冲输入口1. 配置GPIO_GPIOA_PIN7 输入2. 配置TIM3 计数器在TI2 端的上升沿计数:1). TIMx_CCMR1: CC2S =01; 配置通道2检测TI2输入的上升沿2). TIMx_CCMR1:IC2F =000; 选择输入滤波器带宽3). TIMx_CCER: CC2P =0; 配置上升沿极性√4). TIMx_SMCR: SMS =111; 选择定时器外部时钟模式15). TIMx_SMCR: TS =110; 选择TI2作为触发输入源√6). TIMx_CR1: CEN =1; 启动计数器*/void TIM3_External_Clock_CountingMode(void){GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;// TIM_ICInitTypeDef TIM_ICInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);TIM_DeInit(TIM3);TIM_TimeBaseStructure.TIM_Period = 0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler = 0x00;TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; /*定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)使用的采样频率之间的分频比为1*/TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit( TIM3, &TIM_TimeBaseStructure); // Time base confi guration/*tmpccmr1 |= (uint16_t)(TIM_ICFilter << 12); // CCMR1_IC2F tmpccmr1 |= (uint16_t)(TIM_ICSelection << 8); // CCMR1_CC2S由TIM_TIxExternalCLK1Source_TI2决定了TIM_ICSelection=TIM_ICSelection_DirectTI: CCMR1_CC2S = 01;TIM_ICPolarity_Rising = CCER_CC2PTIM_TIxExternalCLK1Source_TI2 = TIM_SMCR_TS该函数定义了TIM_SlaveMode_External1;外部时钟模式1*/TIM_TIxExternalClockConfig(TIM3,TIM_TIxExternalCLK1Source_TI2,TIM_ICPo larity_Rising,0);//// TIM_SetCounter(TIM3, 0); // 清零计数器CNT// TIM_Cmd(TIM3,ENABLE);}// 下面是使用方法:TIM3_External_Clock_CountingMode();TIM_SetCounter(TIM3, 0); // 清零计数器CNTTIM_Cmd(TIM3,ENABLE);SecCnt = 0;TFgs.Secok = 0;i=0;while(1){Delay_Nms(1000);CountPulse = TIM_GetCounter(TIM3);DisplayDat(10,10+24*i,CountPulse,5);TFgs.Secok = 0;if(++CountTims>=120){TIM_Cmd(TIM3,DISABLE);CountPulse = TIM_GetCounter(TIM3);DisplayDat(10,10+24*i,CountPulse,5);if(++i>11)i=0;TIM_SetCounter(TIM3, 0); // 清零计数器CNTTIM_Cmd(TIM3,ENABLE);SecCnt = 0;TFgs.Secok = 0;CountTims =0;}};上述程序经过硬件测试。

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告定时器计数器实验报告引言:定时器计数器是一种常用的电子元件,它可以在电路中起到计时和计数的作用。

在本次实验中,我们将探索定时器计数器的基本原理和应用,并通过实际操作来验证其性能和功能。

一、实验目的本次实验的目的是熟悉定时器计数器的工作原理,掌握其使用方法,并通过实验验证其性能和功能。

二、实验器材和原理1. 实验器材:- 定时器计数器模块- 电源- 示波器- 连接线- 电阻、电容等元件2. 实验原理:定时器计数器是一种能够产生精确时间间隔的电子元件。

它通常由一个时钟信号源和一个计数器组成。

时钟信号源提供固定频率的脉冲信号,计数器根据时钟信号的输入进行计数,并在达到设定值时触发相应的操作。

三、实验步骤1. 连接电路:将定时器计数器模块与电源和示波器连接起来,确保电路连接正确。

2. 设置参数:根据实验要求,设置定时器计数器的工作频率、计数范围等参数。

这些参数可以通过调节电阻、电容等元件来实现。

3. 运行实验:启动电源,观察示波器上的波形变化。

根据设定的参数,定时器计数器将在一定时间间隔内产生脉冲信号,并在达到计数值时触发相应的操作。

4. 数据记录和分析:记录实验过程中的数据和观察结果,并进行分析。

比较实验结果与理论预期的差异,找出可能的原因并提出改进措施。

四、实验结果与讨论通过实验,我们观察到定时器计数器在不同参数设定下的工作情况。

根据实验数据和观察结果,我们可以得出以下结论:1. 定时器计数器的工作频率与输入时钟信号的频率有关。

当时钟信号频率较高时,定时器计数器的计数速度也会相应增加。

2. 定时器计数器的计数范围决定了其能够计数的最大值。

当计数器达到设定的计数范围时,将触发相应的操作。

3. 定时器计数器可以应用于各种计时和计数的场合,如脉冲计数、频率测量等。

通过调节参数,可以实现不同的功能。

根据实验结果,我们可以进一步探索定时器计数器的应用领域和优化方法,提高其性能和功能。

五、实验总结通过本次实验,我们深入了解了定时器计数器的原理和应用。

脉冲计数(定时计数器的记数功能实验)

脉冲计数(定时计数器的记数功能实验)

实验三脉冲计数(定时/计数器的记数功能实验1、实验目的:(1熟悉8031定时/计数器的记数功能,(2掌握初始化编程方法(3掌握中断程序的调试方法2、实验内容:定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。

3.实验电路图:方案1方案24、实验器材:(1超想-3000TB综合实验仪 1 台(2超想3000仿真器 1 台(3连线若干根(4计算机 1 台5、实验连线:方案1:总线插孔的P3.4接脉冲源的DOWN,按下脉冲按钮,观察数码管上计数脉冲的个数。

6、实验原理:MCS-51有两个16位的定时/计数器:T0和T1。

计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已.当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间,故可通过设定计数值来实现定时功能。

当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0 的电平变化时,计数器的值加1,从而实现计数功能。

可以通过编程来指定时计数器的功能,以及它的工作方式。

读取计数器的当前值时,应读3次。

这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。

7、程序框图8、程序清单; “验证式”实验三脉冲计数(定时/记数实验;对定时器0外部输入的脉冲信号进行计数且显示OUTBIT equ 0e101hCLK164 equ 0e102h ; 段控制口(接164时钟位DAT164 equ 0e102h ; 段控制口(接164数据位LEDBuf equ 40hORG 0000hMOV SP,#60HMOV DPTR,#0e100H ;8155初始化MOV A,#03HMOVX @DPTR,AMOV TMOD,#05H ;定时器初始化MOV TH0,#00HMOV TL0,#00HSETB TR0LOOP0:MOV R2,TH0MOV R3,TL0LCALL LOOP1 ;调用二转十子程序,结果放在R4 R5 R6中MOV R0,#40H MOV A,R6LCALL PTDSMOV A,R5LCALL PTDSMOV A,R4LCALL PTDSLCALL DISPLAYSJMP LOOP0LOOP1:CLR A ;二转十子程序MOV R4,AMOV R5,AMOV R6,AMOV R7,#10H LOOP2:CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,LOOP2RETPTDS: MOV R1,A ;拆字子程序ACALL PTDS1MOV A,R1SWAP APTDS1: ANL A,#0FHMOV @R0,AINC R0RETDelay:mov r7, #0 ; 延时子程序DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDISPLAY:setb 0d3hmov r0, #LEDBufmov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop: mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov dptr,#LEDmapmovc a,@a+dptrmov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, canl a,#0fdhmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管 mov r6, #1 call Delaymov a, r2 ; 显示下一位rl amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管clr 0d3hretLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h END。

定时器计数器工作原理

定时器计数器工作原理

定时器计数器工作原理
定时器计数器工作原理是利用双色LED分别显示计数值的方法,实时记录时间。

定时器计数器通常由一个时钟信号源和一个计数寄存器组成。

首先,时钟信号源提供完整的周期性时钟信号,如晶振或外部脉冲源。

该信号被传输到计数寄存器中,开始计数。

计数寄存器是一个二进制寄存器,能够计数时钟信号的脉冲次数。

当计时器启动时,计数寄存器开始从初始值开始计数,然后每接收到一个时钟信号,计数值就会加一。

计数器通过一个高速时钟信号和一个除频器来控制计数频率。

除频器可以通过设置不同的分频比来改变计数频率,从而实现不同的计时精度。

双色LED用来显示计时值。

例如,一个红色LED用于表示小时位,一个绿色LED用于表示分钟位。

当计数器的值递增到下一个单位时,相应的LED会亮起,显示出当前的计数值。

通过以上步骤循环执行,定时器计数器可以实时记录时间,并在LED上显示出来。

这种设计简单、可靠,广泛应用于计时器、时钟等各种设备中。

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结

单片机定时器-计数器实验总结单片机定时器/计数器实验总结篇一:单片机实验之定时器计数器应用实验一一、实验目的1、掌握定时器/计数器定时功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Prteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Prteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P1.0口线上接示波器观察波形。

2、用Prteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P1.1口线上接示波器观察波形。

三、电路原理图六、实验总结通过这次实验,对定时器/计数器的查询工作方式有了比较深刻的理解,并能熟练运用。

掌握定时器/计数器的中断、查询使用方法。

对于思考题能够运用三种不同思路进行编程。

七、思考题1、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波。

答:程序见程序清单。

四、实验程序流程框图和程序清单1、以查询方式工作,在P1.0 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #02H MV TH0, #9CH MV TL0, #9CH SETB TR0 LP: JNB TF0, LP CLR TF0 CPL P1.0 AJMP LP END2、以中断方式工作,在P1.1 RG 0000H START: LJMP MAIN RG 000BH LJMP TTC0 RG 0100H MAIN: MV TMD, #02H MV TH0, #88H MV TL0, #88H SETB EA SETB ET0 SETB TR0 HERE: LJMP HERE RG 0200H TTC0: CPL P1.1 RETI END3、在P1.0口线上产生周期为500微秒,占空比为2:5的连续矩形波 RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F6H MV TL0, #14H LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 MV TH0, #0F6H MV TL0, #14H CLR TF0 CLR TR0 CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #20H MV TH1, #38H MV TL1, #38H MV TH0, #0F0H MV TL0, #0CH SETB TR0 LP1: SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CLR TR1 CPL P1.0 SETB TR0 LP3: JNB TF0, LP3 CLR TF0 MV TH0, #0F0H MV TL0, #0CH CPL P1.0 LJMP LP1 END RG 0000H START: LJMP MAIN RG 0100H MAIN: MV IE, #00H MV TMD, #00H LP1: MV TH1, #0F9H MV TL1, #18H SETB TR1 LP2: JNB TF1, LP2 CLR TF1 CPL P1.0 MV TH1, #0F6H MV TL1, #14H LP3: JNB TF1, LP3 CLR TF1 CPL P1.0 LJMP LP1 END五、实验结果(波形图)篇二:单片机实验-定时器计数器应用实验一定时器/计数器应用实验一一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。

定时器计数器的定时实验

定时器计数器的定时实验

定时器计数器的定时实验简介本文将介绍定时器计数器的定时实验,主要涉及定时器计数器的原理、使用方法以及实验步骤。

定时器计数器是一种常用的计时设备,广泛应用于各种计时场景。

定时器计数器的原理定时器计数器是一种能够精确计时的设备,它通常由一个可编程的时钟和一个计数器组成。

计数器根据时钟的脉冲信号进行计数,从而实现计时的功能。

定时器计数器的工作原理如下:1.初始化计数器:将计数器的初始值设置为0。

2.启动计数器:通过控制信号将时钟输入到计数器中,开始计数。

3.计数过程:计数器根据时钟的脉冲信号进行计数,每接收到一个时钟脉冲,计数器的值加1。

4.判断定时完成:当计数器的值等于设定的定时值时,表示定时完成。

5.停止计数器:定时完成后,停止时钟信号的输入,计数器停止计数。

定时器计数器的使用方法定时器计数器通常由软件通过编程的方式进行使用,具体方法如下:1.初始化定时器计数器:首先,需要将计数器的初始值设置为0,并且设定定时的时间。

2.启动计数器:通过控制信号将时钟输入到计数器中,开始计数。

3.监测计数器的值:在计数的过程中,可以通过查询计数器的值来获取当前的计时结果。

4.判断定时完成:当计数器的值等于设定的定时值时,表示定时完成。

5.停止计数器:定时完成后,停止时钟信号的输入,计数器停止计数。

实验步骤以下是一个简单的实验步骤,用于演示定时器计数器的定时功能:1.准备硬件:–打开开发板,并确保定时器计数器的引脚与外部设备连接正常。

–连接调试器,以便在实验过程中监测计数器的值。

2.编写代码:–在开发环境中,编写一段代码,完成实验的需求,包括初始化计数器、设定定时值等。

3.烧录程序:–将编写好的程序烧录到开发板中。

4.启动实验:–启动开发板,开始实验。

5.监测计数器的值:–在实验过程中,通过调试器监测计数器的值,以便实时了解计时结果。

6.判断定时完成:–当计数器的值等于设定的定时值时,表示定时完成,可以进行相关操作,如触发其他事件、输出提示信息等。

定时计数器实验-单片机

定时计数器实验-单片机

单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。

二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。

它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。

T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。

作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。

计数的最高频率一般为振荡频率的1/24。

定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。

TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。

因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。

TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:GATE:门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

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

实验三 脉冲计数(定时/计数器的记数功能实验)
一、实验目的:
1、熟悉8031定时/计数器的记数功能;
2、掌握初始化编程方法;
3、掌握中断程序的调试方法。

二、实验内容: 定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。

三、实验原理:
MCS-51有两个16位的定时/计数器:T0和T1。

计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。

当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能。

当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0的电平变化时,计数器的值加1,从而实现计数功能。

可以通过编程来指定时计数器的功能,以及它的工作方式。

读取计数器的当前值时,应读3次。

这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。

四、接线图案:
五、程序框图:
二转十进制子程序
六、实验步骤:
用连线把“总线插孔”的P3.4孔连“脉冲源”的“DOWN”孔 ,执行程序,按动AN锁按钮,观察数码管上计数脉冲的个数。

七、思考问题:
把P3.4孔分别与“脉冲源”的2MHZ、1MHZ、0.5MHZ孔相连时,显示值反而比连0.25MHZ 孔更慢,为什么?当f osc=6MHZ时,能够计数的脉冲信号最高频率为多少?
八、实验程序:
;对定时器0外部输入的脉冲信号进行计数且显示
OUTBIT equ 0e101h
CLK164 equ 0e102h ; 段控制口(接164时钟位)
DAT164 equ 0e102h ; 段控制口(接164数据位)
LEDBuf equ 40h
IN equ 0e103h
ORG 0000h
MOV SP,#60H
MOV DPTR,#0e100H ;8155初始化
MOV A,#03H
MOVX @DPTR,A
MOV TMOD,#05H ;定时器初始化
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
LOOP0: MOV R2,TH0
MOV R3,TL0
LCALL LOOP1
MOV R0,#40H
MOV A,R6
LCALL PTDS
MOV A,R5
LCALL PTDS
MOV A,R4
LCALL PTDS
LCALL DISPLAY
SJMP LOOP0
LOOP1: CLR A ;二转十子程序 MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LOOP2: CLR C
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
DJNZ R7,LOOP2
RET
PTDS: MOV R1,A ;拆字子程序 ACALL PTDS1
MOV A,R1
SWAP A
PTDS1: ANL A,#0FH
MOV @R0,A
INC R0
RET
Delay:
mov r7, #0 ; 延时子程序DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret
DISPLAY:setb 0d3h
mov r0, #LEDBuf
mov r1, #6 ; 共6个八段管 mov r2, #00000001b ; 从左边开始显示Loop:
mov dptr, #OUTBIT
mov a, #00h
movx @dptr, a ; 关所有八段管
mov a, @r0
mov dptr,#LEDmap
movc a,@a+dptr
mov B, #8 ; 送164
DLP:
rlc a
mov r3, a
mov acc.0, c
anl a,#0fdh
mov dptr, #DAT164
movx @dptr, a
mov dptr, #CLK164
orl a,#02h
movx @dptr, a
anl a,#0fDh
movx @dptr, a
mov a, r3
djnz B, DLP
mov dptr, #OUTBIT
mov a, r2
movx @dptr, a ; 显示一位八段管
mov r6, #1
call Delay
mov a, r2 ; 显示下一位
rl a
mov r2, a
inc r0
djnz r1, Loop
mov dptr, #OUTBIT
mov a, #0
movx @dptr, a ; 关所有八段管
clr 0d3h
ret
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h END。

相关文档
最新文档