定时器中断综合实验

合集下载

定时器中断方式实验报告

定时器中断方式实验报告
定时器中断方式实验报告
通信 0203 班 王建超 02211272
一.中断初始化及服务程序的编写
5402DSP 中断有两大类,一类是可屏蔽中断:可以用软件来屏蔽或开放的硬件和软件中断。在 5402
中有 INT3 ~INT0(外部中断),BRINT0,BXINT0(缓冲串行口中断),TRINT,TXINTW(时分多路串行口
void interrupt_init(void)
{
IFR|=0x0ffff;
//清中断标识寄存器
IMR|=0x0002;
//开放外部中断 1
asm(" RSBX INTM ");
//开放所有可屏蔽中断
} C54X 处理中断分为 3 个阶段: 第一阶段:接受终端请求,IFR 中相应的中断标志位置 1 第二阶段:对于软件中断和非屏蔽中断,CPU 立即响应。对于可屏蔽中断,只有满足几 个条件后才能响应:
void set_clock(u16 plldiv); void set_wait_states(void); void init_io_reg(void);
//set system clock mode //set wait state register //initialize CPLD I/O control register
转指令转到相应的中断服务程序,其余的空位用 NOP 填充;未使用的向量直接用 RETE 中
断返回指令返回,是为了防止意外进入未用中断,同样其余的空位用 NOP 填充。
在中断向量表中.sect ".vectors" ;定义的中断向量段,中断向量表即放在此段当中
.ref _c_int00 ;定义 C 语言的初始化入口地址

定时器中断实验报告

定时器中断实验报告

实验三运用定时中断方法控制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预置循环次数,显得尤为重要。

实验四定时器中断实验

实验四定时器中断实验

定时中断周期=CLKOUT×(TDDR+1)×(PRD+1)
四、实验步骤 (1)使用定时器首先要对它初始化,基本步骤如下: 1、关掉中断 2、停止定时器运行。 3、设定时器的定时长度 4、允许定时器中断 5、运行定时器 6、打开中断 本实验的部分程序代码如下: #include "vc5416.h" #include "usr.h" //载入头文件 unsigned int count=0,temp=0; main() { system_init(); //系统初始化 timer0_init(); //定时器0初始化,使定时器每 10ms中断一次 while(1) { if(count==0x0064) { ST1=sbit_reverse(ST1,b13_msk); //改变XF引脚的状态, 使指示灯闪烁 count=0x0000; //对计数值清0 } } } /*interrupt serve program*/ void interrupt tint0() //中断服务程序,每次中断到来 时对计数值加一 { count++; } /*定时器0初始化*/
from one nmi NOP NOP NOP ; software interrupts sint17 .space 4*16 ;软件中断使用较少,简单起见用0填 充 sint18 .space 4*16 sint19 .space 4*16 sint20 .space 4*16 sint21 .space 4*16 sint22 .space 4*16 sint23 .space 4*16 sint24 .space 4*16 sint25 .space 4*16 sint26 .space 4*16 sint27 .space 4*16 sint28 .space 4*16 sint29 .space 4*16 sint30 .space 4*16 int0: RETE ;外部中断0 NOP NOP NOP int1: RETE ;外部中断1 NOP NOP NOP int2: RETE ;外部中断2 NOP NOP NOP tint0: bd _tintபைடு நூலகம் ;定时器0中断 NOP NOP rint0: RETE ;mcbsp0接收中断 NOP

实验三 中断及定时器实验

实验三 中断及定时器实验

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

实验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
思考:如何修改成时、分、秒单元可以人工修改?。

相关文档
最新文档