单片机定时计数中断实验(单片机外部中断计数实验程序)

介绍

单片机定时计数中断实验是一种基本的单片机实验,旨在让学生掌握单片机中断处理的原理和实现方法,在实践中加深对单片机知识的理解和运用。在这个实验中,我们需要用单片机内部的定时器和中断服务程序来实现计时器功能,将计数器的值输出到LED灯上。

原理

单片机中断处理是指当某一事件发生时,单片机会立即停止当前程序的运行,转而执行一个预先定义好的中断服务程序,中断服务程序执行完毕后再返回原来的程序继续运行。在这个实验中,我们通过使用单片机的定时器和中断功能,来计数一定时间,然后将计数器的值在LED灯上显示出来,以实现计时器功能。

单片机中断处理的实现需要以下步骤:

  1. 设置中断向量表:在程序开始运行前,需要将中断向量表中相应中断的地址进行初始化,以使单片机在相应事件发生时,能够执行正确的中断服务程序。
  2. 设置定时器初始化:在程序开始运行前,需要设置定时器工作模式、计数值等参数,以使定时器能够按照预定的时间间隔计数。
  3. 开启定时器中断:配置定时器中断使能位,使得单片机在定时器计数完成后能够自动进入中断服务程序。
  4. 编写中断服务程序:中断服务程序需编写,用于在定时器中断发生时显示计数器的值。

实验步骤

1. 配置中断向量表:将TIMER0的中断向量表设置为中断服务程序的起始地址。

INITIAL_IE_ADDRESS equ 0x003  ;中断向量表初始化向量地址
    ORG INITIAL_IE_ADDRESS
    DW TIMER0_INTERRUPT_PROC ;TIMER0中断服务程序的入口地址

2. 配置定时器初始化:按照实验需要设置定时器T0的时钟源,计数值等初始化参数。

TIMER0_FUNCTION_CTRL EQU P0M1;设置P0.0为T0引脚;
TIMER0_CLEAR tl0;清零T0计数器;
TIMER0_CONTROL_REG EQU 0x8A;设置T0为模式1,工作电平为低电平,不分频;
TIMER0_VALUE equ 247;设置T0的计数初值
    MOV TH0,TIMER0_VALUE/256;设置T0计数初值的高8位
    MOV TL0,TIMER0_VALUE%256;设置T0计数初值的低8位

3. 开启定时器中断:设置TIM0的中断使能位,使得定时器计数结束时可以进入中断服务程序。

TIMER0_FUNCTION_CTRL: ORI TIM0;设置T0定时器中断使能

4. 编写中断服务程序:当T0中断发生时,将计数器的值用二进制数码管依次显示出来。

单片机定时计数中断实验(单片机外部中断计数实验程序)

TIMER0_INTERRUPT_PROC:    
        MOV P1,#0FFH ;打开二极管
        CPL P3.3 ;取反LED灯
        MOV A,TL0 ;将T0计数初值的低八位赋值给寄存器A
        ADD A,#1 ;计数器加一
        MOV TL0,A ;将加1后的值重新赋给T0计数初值的低8位
        ACALL value_disp ;调用计数器显示程序
        RETI    ;返回中断附属程序的主程序

总结

通过这个实验,我们深入了解了单片机的定时计数器和中断处理功能。在这个实验中,我们学习了如何设置中断向量表、配置定时器初始化、开启定时器中断,并编写中断服务程序。在实践操作中,我们发现当计时器计数达到设定值时,单片机会立即转入中断服务程序,并按照预定算法处理计时器计数器的值,将其输出到LED灯上以完成实验。这个实验不仅锻炼了我们的动手实践能力,也加深了我们对单片机中断处理的理解和应用,对今后学习单片机更加深入和实际应用会有很好的帮助。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcual-3.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午10:30
下一篇 2023年4月26日 上午10:30

猜你喜欢