定时器中断综合实验
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
实验三运用定时中断方法控制P1口亮灯实验报告一、实验目的1学习内部定时/计数器的使用2学习定时中断处理程序的编程方法二、实验预备知识1.P1口是准双向口,可以定义为输入,也可以定义为输出2.本实验中延时子程序采用指令循环来实现。
3.延时时间的计算:延时时间=机器周期×指令所需机器周期数×循环次数其中循环次数可以采用多重循环来实现三、实验内容程序如下:一、外部中断选择边沿触发方式控制灯的状态ORG 00HLJMP MAINORG 03HLJMP INTERRUPTORG 30HMAIN: SETB EX0SETB IT0SETB EAMOV A,#00HMOV P1,ASJMP $INTERRUPT: INC AMOV P1,ARETI二、用定时器定时方式控制灯的状态 ORG 0000HLJMP MAINORG 000BHLJMP DISPLAYORG 0030HMAIN:MOV IE,#82HMOV TMOD,#01HMOV P1,#01HMOV TH0,#9EHMOV TL0,#58HMOV R7,#10SETB TR0SJMP$DISPLAY:MOV TH0,#9EHMOV TL0,#58HDJNZ R7,LOOPMOV A,P1RL AMOV P1,AMOV R7,#10LOOP:RETI三、实验心得及体会对于中断的设置用到P3口的第二功能,第一个实验中,我所设置的触发方式为边沿触发,中断输入的管脚应该为P3.2即外部中断0输入,因此给外加脉冲时应该给到P3.2。
第一次因未分清触发所给管脚导致脉冲加入时无反应。
编写中断及初始化程序时,中断地址的开辟要提前在主程序之前给出,以实现执行中断时指针的转移。
做有关定时程序之前要首先弄清楚晶振的大小,以确定一个机器周期的时间,在这次试验中,试验箱所用晶振为6MHZ,一个机器周期的时间为2us,总计数时间可以达到131ms,但是无法满足0.5s的时间要求,所以用R7预置循环次数,显得尤为重要。
实验三:中断及定时器实验一、实验目的:1、弄清中断的概念、基本原理,掌握中断技术的应用2、了解中断初始化的方法,中断向量安装和中断服务子程序的设计方法。
3、了解定时/计数器的工作原理及MCS51单片机的定时器内部结构4、掌握时间常数计算方法5、掌握定时器初始化方法和定时中断程序设计方法二、实验内容:定时器实验1、这个是一个电子钟走时程序,利用定时器T0产生50ms中断,中断计数器中断20次为1秒,利用秒信号进行电子钟计时。
先读懂下面程序段,然后编辑、编译程序,并在伟福仿真器上模拟调试该程序。
程序清单如下:COUNT EQU 7FHCOUNT1 EQU 7EHS_MEM EQU 73HM_MEM EQU 72HH_MEM EQU 71HORG 0000HLJMP MAINORG 000BHLJMP INT_T0 ;“*1”MAIN: MOV SP,#2FHMOV TMOD,#00000001BMOV TH0,#03CH ;50毫秒中断时间常数MOV TL0,#0BHMOV IE,#10000010B ;开放T0MOV IP,#0MOV S_MEM,#0MOV M_MEM,#0MOV H_MEM,#0MOV COUNT,#20SETB TR0;______________________________________________________ W AIT:NOPSJMP W AITINT_T0: MOV TL0,#0BHMOV TH0,#3CHDJNZ COUNT,EXT_T0MOV COUNT,#20 ;恢复中断计数器INC S_MEM ;“*2”MOV A,S_MEMCJNE A,60,EXT_T0MOV S_MEM,#0INC M_MEMMOV A,M_MEMCJNE A,#60,EXT_T0MOV M_MEM,#0INC H_MEMMOV A,H_MEMCJNE A,#13,EXT_T0MOV H_MEM,#0EXT_T0: RETI2、分别在“*1”和“*2”处设置断点,全速执行程序,待第一个断点停下之后,观察并记录堆栈内保留的断点信息,分析并弄清中断返回后执行的第一条指令是什么指令?然后单步执行程序,指导执行完RETI指令后观察返回的地址,观察实际返回和刚才分析的地址是否一致。
一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
实验十二定时器及中断(1秒基时)一、实验内容及实验电路及步骤1.产生1S延时的设计:(11.0592MHZ)方案1:定时器0定时加软件计数。
1)采用定时器0,方式1,定时50MS中断。
当1S 时间到后,使P1.0 闪亮。
一个机器周期为=(1/11.0592Mhz)*12us。
定时器0的定时初值=(65536-50000/(1/11.0592Mhz*12us))=(65536-46080)=19456=4C00H软件计数:计数器采用R2,计数20 次。
实验电路如图4-4所示:用导线将A2区的P10与D1区的LED1相连。
图4-4 定时器0实验接线图参考程序:ORG 8000HAJMP MAINORG 800BHAJMP T0SMAIN:MOV SP,#60HMOV TMOD,#01HMOV TH0,#4CHMOV TL0,#00HMOV R2,#00HMOV IE,#10000010BSETB TR0CLR P1.0SJMP $T0S: MOV TH0,#4CHMOV TL0,#00HINC R2CJNE R2,#20,NEXTCPL P1.0MOV R2,#00HNEXT:RETIEND定时器0定时,软件计数:定时50ms,发生溢出,产生中断;R2控制循环次数,R2=#20,即循环20次,定时时间间隔为:50×20=1000ms=1S.2)采用定时器0,方式1,定时50MS,查询方式,当1S 时间到后,使P1.0 闪亮。
用导线将A2区的P10与D1区的LED1相连。
参考程序:ORG 8000HAJMP MAINMAIN: MOV TMOD,#01H ;T/C0定时,方式1。
MOV TH0,#4CH ;T0 定时50MS。
MOV TL0,#00HMOV R2,#00H ;软件计数器初值SETB TR0LOOP:JBC TF0,T0SSJMP LOOPT0S: MOV TH0,#4CHMOV TL0,#00HINC R2CJNE R2,#20,NEXT ;1S使P1.0取反一次。
报告成绩:教师签字:批改日期:评语:学生实验报告课程名称单片机原理及接口技术姓名实验名称定时器/计数器、中断综合实验班级实验目的掌握51系列单片机中断系统及定时器的工作原理及使用技巧学号实验日期实验内容(1)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个. 方向循环点亮8只LED,每个LED点亮时间为50ms;(2)在以上基础上加外部中断内容,由外部中断请求时,8只LED全亮(3)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间改为2s实验地点实验组号实验设备计算机 wave6000程序 lab2000p试验箱同组人1.实验电路及连线本次试验不做要求2.程序流程图本次实验无3.源程序(1 ORG 0000H MOV TL0,#58HLJMP MAIN SETB EAORG 0003H SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EHMAIN: MOV A,#01H MOV TL0,#58HLOOP: MOV P1,A RL AMOV TMOD,#01H MOV P1,AMOV TH0,#9EH RETIEND(2ORG 0000H SER0:MOV TH0,#9EHLJMP MAIN MOV TL0,#58HORG 0003H RL ALJMP SER1 MOV P1,AORG 000BH RETILJMP SER0 SER1:PUSH ACCORG 1000H PUSH PSWMAIN: MOV A,#01H MOV A,#0FFH LOOP: MOV P1,A MOV P1,AMOV TMOD,#01H LCALL DELAY MOV TH0,#9EH POP PSWMOV TL0,#58H POP ACCSETB EA RETISETB ET0 DELAY:MOV R7,#0FFH SETB TR0 L1:MOV R6,#0FAH SETB EX0 DJNZ R6,$SETB IT0 DJNZ R7,L1SJMP $ RETEND(3 ORG 0000H SETB EALJMP MAIN SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EH MAIN: MOV A,#01H MOV TL0,#58H LOOP: MOV P1,A DJNZ R0,EXIT MOV R0,#28H MOV R0,#28HMOV TMOD,#01H RL AMOV TH0,#9EH MOV P1,AMOV TL0,#58H EXIT:RETIEND4.结果记录及分析(1)结果: P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间为50ms;分析:用定时器方式0,使用定时功能,定时器以中断方式工作。
定时器中断实验报告一、实验目的通过定时器中断实验,掌握定时器的基本原理和应用,了解中断的概念和实现,学习如何使用汇编和C语言编写中断服务程序。
二、实验原理1. 定时器的基本原理定时器是一种能够精确控制时间的功能模块,其主要功能是在一定的时间间隔内产生一次中断信号。
定时器一般由计数器和控制逻辑电路组成。
计数器向控制逻辑电路传递计数值,控制逻辑电路对计数器进行控制,当计数值达到设定值时,控制逻辑电路会产生中断信号。
2. 中断的概念和实现中断是指CPU在执行某个程序的过程中,由于某些特定事件的发生,需要立即停止正在执行的程序,转而去执行与特定事件相关的处理程序的过程。
中断信号通常是由外部设备产生的,例如定时器中断、串口中断等,也可以由软件产生。
中断的实现需要安装中断服务程序,中断服务程序是指与中断处理相关的程序段。
中断发生时,CPU会暂停当前的执行,转而执行中断服务程序。
中断服务程序完成处理后,CPU会返回到原来的执行状态。
中断服务程序通常由汇编或C语言编写,需要遵循一定的规则和约定。
三、实验材料1. STC89C52单片机板;2. 电脑、Keil μVision5软件;3. 串口调试助手软件。
四、实验过程1. 硬件连接将STC89C52单片机板上的P3口与LED灯连接,通过拨码开关设定定时器的时钟频率。
2. 编写程序在Keil μVision5软件中编写程序,在程序中设置定时器的时钟频率和中断周期。
在中断服务程序中控制LED灯的闪烁。
3. 烧录程序将编写好的程序烧录到STC89C52单片机板中。
4. 测试启动单片机板,观察LED灯是否按照预定的周期闪烁。
通过串口调试助手软件,可以实时观察定时器中断的触发情况。
五、实验结果经过测试,程序能够正常运行,LED灯按照预定的周期闪烁,定时器中断触发正常,符合预期要求。
六、实验总结通过本次实验,我掌握了定时器的基本原理和应用,了解了中断的概念和实现,学习了如何使用汇编和C语言编写中断服务程序。
实验三定时器中断一.实验目的1.掌握定时器典型应用方法,了解相应寄存器的作用和编程应用;2. 了解TMS320F2812的中断结构和对中断的处理流程。
二.实验设备1.PC机一台,操作系统为WindowsXP (或Windows98、Windows2000),安装了ccs3.1;2.TI 2000系列的TMS320F2812 eZdsp开发板一块;3.扩展实验箱一台。
三.实验原理1.TMS320F2812器件上有3个32位定时器(图3.1)(TIMER0/1/2)。
CPU定时器1和2预留给系统(如DSP-BIOS)使用,CPU定时器0可以在用户应用程序中使用。
在F2812芯片中,定时器中断信号(TINT0、TINT1、TINT2)的连接如图3.2。
图3.1 CPU定时器图3.2 CPU定时器中断信号和输出信号CPU 定时器的通常操作如下:定时器时钟经过预定标计数器(PSCH:PSC)递减计数,预定标计数器产生溢出后向定时器的32位计数器(TIMH:TIM)借位,定时器计数器产生溢出后使定时器向CPU发送中断。
每次预定标计数器产生溢出后使用分频寄存器(TDDRH:TDDR)中的值重新装载,32位周期寄存器(PRDH:PRD)为32位计数器提供重新装载值。
表3.1中列出的寄存器用于配置定时器。
表3.1 CPU 定时器0、1、2 配置和控制寄存器2.中断响应过程一般分为四步:a.接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
中断类别分为可屏蔽中断、不可屏蔽中断。
定时计数器和中断系统的综合应用实验报告收获与体会这是一个比较开放性的问题,我尝试给出一个比较全面的回答,希望能够帮到你。
一、实验目的通过对定时计数器和中断系统的综合应用实验,掌握以下技能:1. 掌握定时计数器和中断系统的原理及其在嵌入式系统中的应用。
2. 熟悉51单片机中定时器的使用方法。
3. 熟悉51单片机中中断系统的使用方法。
4. 熟悉C语言中的定时器和中断编程。
二、实验内容1. 实验原理定时计数器是嵌入式系统中非常重要的一个部分,它可以周期性的计时,通过计数值的比较输出指定的脉冲信号。
51单片机中的定时器有4个,分别为Timer0、Timer1、Timer2、Timer3。
不同的定时器有不同的计数器位数和工作模式,可以根据应用场景进行选择。
中断系统是嵌入式系统中另一个非常重要的部分,可以在特定的条件下自动触发,优先处理中断事件。
在51单片机中,中断分为外部中断和定时器中断。
通过中断系统,可以高效地实现对各种外部事件的实时响应。
2. 实验步骤本实验分为两个阶段,第一阶段设计一个定时计数器程序,通过P1口的LED灯输出定时器的计数值,第二阶段在第一阶段的基础上,结合中断系统,设计一个定时器中断程序,通过P0口的LED灯输出中断事件的计数值。
第一阶段:(1)配置定时器,设置定时器的工作模式和计数器初值。
(2)在定时器的中断处理函数中,实现计数器值的输出。
(3)通过P1口连接LED灯,输出计数器值。
第二阶段:(1)配置定时器和中断系统,设置定时器的工作模式和计数器初值,以及中断的优先级和中断处理函数。
(2)在中断处理函数中,实现计数器值的输出和中断事件计数值的计算。
(3)通过P0口连接LED灯,输出中断事件的计数值。
三、实验结果通过实验,我掌握了51单片机中定时计数器和中断系统的使用方法,熟悉了C语言中的定时器和中断编程。
在第一阶段的实验中,我成功地输出了定时器的计数值,通过LED灯显示在P1口。
实验2 定时器、中断综合实验
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用,时钟程序的设计与调试技巧。
二、实验内容
编写程序,用定时器中断现实LED跑马灯实验。
实验内容1:
1).用查表法实现LED跑马灯实验;
2).采用定时器控制跑马灯的变化速度。
三、流程框图
四、实验步骤及程序
ORG 0000H
LJMP MAIN
ORG 000BH ; T0 中断入口地址
MOV TH0,#0BH ; 62.5毫秒定时
MOV TL0,#0DCH
DJNZ R2,T0OUT ; 中断16次为1秒
MOV R2,#16
PUSH ACC ; 保存数据
MOVC A,@A+DPTR ; 查表法LED 左右移
MOV P0,A
POP ACC
INC A
CJNE A,#24,T0OUT ; 24种"花样"
CLR A
T0OUT: RETI
ORG 0050H
MAIN: MOV SP,#6FH ;
MOV R2,#16 ; 定时器中断次数,@12M
MOV A,#00H ; 查表起始值
MOV DPTR,#TABLE
MOV TMOD,#00000001B ; 定时器方式1
MOV TH0,#0BH ; 62.5MS
MOV TL0,#0DCH
SETB EA ; 中端总允许
SETB ET0 ; 允许T0 中断
SETB TR0 ; 启动定时
WAIT: SJMP $ ;原地等待中断
RET
TABLE:DB 0FEH,0FDH,0FBH,0F7H ;LED 左右移数据表,共有24种"花样"
DB 0EFH,0DFH,0BFH,07FH
DB 00H,55H,0AAH,00H
DB 7FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 00H,0AAH,55H,00H
END
思考:换用T1定时器,定时方式2。
用汇编语言编辑8个LED灯,实现第一秒只有L1不亮,其余七个全亮,第二个L2不亮,其余七个全亮
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
START:
MOV TMOD, #01H
MOV TH0, #3CH ; (65536 - 50000) / 256;
MOV TL0, #0B0H ; (65536 - 50000) % 256;
SETB TR0
SETB ET0
SETB EA
MOV A, #01H
MOV R2, #20
SJMP $
T0_INT:
MOV TH0, #3CH ; (65536 - 50000) / 256;
MOV TL0, #0B0H ; (65536 - 50000) % 256;
DJNZ R2, T0_END
MOV R2, #20
MOV P0, A
RL A
T0_END:
RETI
END
实验内容2:
设计一个实时时钟,用42H显示秒单元,用41H显示分单元,用40H显示时单元。
要求每满1秒,秒单元内容加1;秒满60,分单元加1,分满60,时单元加1。
时满24 ,时分秒全部清0。
从秒到分,从分到时,通过软件累加现实。
P115。
ORG 0000H
LJMP MAIN ;上电,跳向主程序
ORG 000BH ;T0的中断入口
LJMP IT0P
ORG 1000H
MAIN: MOV TMOD,#01H ;设T0为方式1
MOV 20H,#0AH ;装入中断次数
CLR A
MOV 40H,A ;“时”单元清“0”
MOV 41H,A ;“分”单元清“0”
MOV 42H,A ;“秒”单元清“0”
SETB ET0 ;允许T0申请中断
SETB EA ;总中断允许
MOV TH0,#3CH ;给T0装入计数初值
MOV TL0,#0B0H
SETB TR0 ;启动T0
HERE: SJMP HERE ;等中断(也可调用显示子程序)
IT0P: PUSH PSW ;T0中断子程序入口,保护现场
PUSH Acc
MOV TH0,#3CH ;重新装入初值
MOV TL0,#0B0H
DJNZ 20H,RETURN ;1秒时间未到,返回
MOV 20H,#0AH ;重置中断次数
MOV A,#01H ;“秒”单元增1
ADD A,42H
DA A ;“秒”单元十进制调整
MOV 42H,A ;“秒”的BCD码存回“秒”单元
CJNE A,#60H,RETURN ;是否到60秒,未到则返回
MOV 42H,#00H ;计满60秒,“秒”单元清“0”
MOV A,#01H ;“分”单元增1
ADD A,41H
DA A ;“分”单元十进制调整
MOV 41H,A ;“分”的BCD码存回“分”单元
CJNE A,#60H,RETURN ;是否到60分,未到则返回
MOV 41H,#00H ;计满60分,“分”单元清“0”
MOV A,#01H ;“时”单元增1
ADD A,40H
DA A ;“时”单元十进制调整
MOV 40H,A
CJNE A,#24H,RETURN ;是否到24小时,未到则返回
MOV 40H,#00H ;到24小时,“时”单元清“0”RETURN: POP Acc ;恢复现场
POP PSW
RETI ;中断返回
END
思考:如何修改成时、分、秒单元可以人工修改?。