位置:51电子网 » 技术资料 » 测试测量

51单片机定时器实验

发布时间:2008/5/27 0:00:00 访问次数:3350

        

    

    

    一.实验要求

    由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟t1溢出中断一次。p1口的p1.0-p1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟l1,l3亮,第二秒钟l2,l4亮,第三秒钟l5,l7亮,第四秒钟l6,l8亮,第五秒l1,l3,l5,l7亮,第六秒钟l2,l4,l6,l8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,l1,l3亮,然后l2,l4亮......一直循环下去。

    二.实验目的

    1.学习8031内部计数器的使用和编程方法。

    2. 进一步掌握中断处理程序的编程方法。

    三.实验电路及连线

    

    

    

    p1.0--p1.7 接 l1--l8

    四.实验说明

    1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器,有关计数器的说明请查阅实验七。

    2.内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592mhz,所以定时常数的设置可按以下方法计算:

    机器周期=12÷11.0592mhz=1.0857μs

    (65536-定时常数)*1.0857μs=50ms

    定时常数=4c00h

    3.定时器的有关的寄存器有工作方式寄存器tmod和控制寄存器tcon。tmod用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。tcon主要功能是为定时器在溢出时设定标志位,并控制定时器的运行

    或停止等。

    4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

    五.实验程序

    org 0000h

    ajmp start

    org 001bh ;t1中断入口地址

    ajmp int_t1

    org 0100h

    start:

    mov sp,#60h

    mov tmod,#10h ;置t1为方式1

    mov tl1,#00h ;延时50ms的时间常数

    mov th1,#4bh

    mov r0,#00h

    mov r1,#20

    setb tr1

    setb et1

    setb ea ;开中断

    sjmp $

    int_t1: ;t1中断服务子程序

    push acc ;保护现场

    push psw

    push dpl

    push dph

    clr tr1 ;关中断

    mov tl1,#00h ;延时50ms常数

    mov th1,#4bh

    setb tr1 ;开中断

    djnz r1,exit

    mov r1,#20 ;延时一秒的常数

    mov dptr,#data ;置常数表基址

    mov a,r0 ;置常数表偏移量

    movc a,@a+dptr ;读常数表

    mov p1,a ;送p1口显示

    inc r0

    anl 00,#07h

    exit:

    pop dph ;恢复现场

    pop dpl

    pop psw

    pop acc

    reti

   led显示常数表

    data: db 0fah,0f5h,0afh,05fh,0aah,55h,00h,0ffh

    end

    

    

        

    

    

    一.实验要求

    由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟t1溢出中断一次。p1口的p1.0-p1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟l1,l3亮,第二秒钟l2,l4亮,第三秒钟l5,l7亮,第四秒钟l6,l8亮,第五秒l1,l3,l5,l7亮,第六秒钟l2,l4,l6,l8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,l1,l3亮,然后l2,l4亮......一直循环下去。

    二.实验目的

    1.学习8031内部计数器的使用和编程方法。

    2. 进一步掌握中断处理程序的编程方法。

    三.实验电路及连线

    

    

    

    p1.0--p1.7 接 l1--l8

    四.实验说明

    1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器,有关计数器的说明请查阅实验七。

    2.内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592mhz,所以定时常数的设置可按以下方法计算:

    机器周期=12÷11.0592mhz=1.0857μs

    (65536-定时常数)*1.0857μs=50ms

    定时常数=4c00h

    3.定时器的有关的寄存器有工作方式寄存器tmod和控制寄存器tcon。tmod用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。tcon主要功能是为定时器在溢出时设定标志位,并控制定时器的运行

    或停止等。

    4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

    五.实验程序

    org 0000h

    ajmp start

    org 001bh ;t1中断入口地址

    ajmp int_t1

    org 0100h

    start:

    mov sp,#60h

    mov tmod,#10h ;置t1为方式1

    mov tl1,#00h ;延时50ms的时间常数

    mov th1,#4bh

    mov r0,#00h

    mov r1,#20

    setb tr1

    setb et1

    setb ea ;开中断

    sjmp $

    int_t1: ;t1中断服务子程序

    push acc ;保护现场

    push psw

    push dpl

    push dph

    clr tr1 ;关中断

    mov tl1,#00h ;延时50ms常数

    mov th1,#4bh

    setb tr1 ;开中断

    djnz r1,exit

    mov r1,#20 ;延时一秒的常数

    mov dptr,#data ;置常数表基址

    mov a,r0 ;置常数表偏移量

    movc a,@a+dptr ;读常数表

    mov p1,a ;送p1口显示

    inc r0

    anl 00,#07h

    exit:

    pop dph ;恢复现场

    pop dpl

    pop psw

    pop acc

    reti

   led显示常数表

    data: db 0fah,0f5h,0afh,05fh,0aah,55h,00h,0ffh

    end

    

    

相关IC型号

热门点击

 

推荐技术资料

音频变压器DIY
    笔者在本刊今年第六期上着重介绍了“四夹三”音频变压器的... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!