单片机开发 定时器中断实验
c51定时中断实验报告

竭诚为您提供优质文档/双击可除c51定时中断实验报告篇一:51单片机定时器实验报告51单片机定时器实验实验内容:实验内容:(1)编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
c语言程序#include#defineuintunsignedint#defineucahrunsignedcharsbitFm=p0^0;voidmain(){TmoD=0x01;Th0=(65535-50000)/256;Th0=(65535-50000)%256;eA=1;//开总中断eT0=1;//开定时器0中断TR0=1;while(1);}voidT0_time()interrupt1{}汇编程序oRg0000hJAmpmAInoRg000bhTh0=(65535-50000)/256;Th0=( 65535-50000)%256;Fm=~Fm;LJmpInT0_InToRg0100hmIAn:seTbeAseTbeT0AJmp$InT0_InT:moVR2,#0FAhmoVR3,#0c8hDJnZR3,$DJnZR2,InT0_InTReTI(2)编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
#include#defineuintunsignedint#defineucahrunsignedcharuintnum,num1;sbitFm=p0^7;intshi,ge,a;voiddelay(uint);voidshumaguan();unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0 x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管0-F编码表voidmain(){TmoD=0x01;Th0=(65535-50000)/256;Th0=(65535-50000)%256;eA=1;//开总中断eT0=1;//开定时器0中断TR0=1;while(1)}voidT0_time()interrupt1{}voidshumaguan(){p3=0x01;p2=table[shi];delay(5);p3=0x02;p2=table[ge];delay(5);Th0=(65535-50000)/256;Th0=(65535-50000)%25 6;num1++;if(num1==10){}num1=0;num++;shi=num/10;ge=n um%10;if(num==100){num=0;}{}shumaguan();voidzuoyi(){}voiddelay(uintx){}(3)编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
实验4 定时中断实验

实验四定时中断实验一、实验目的1.掌握51单片机定时中断的应用。
2.掌握定时器初值的计算方法。
3. 掌握定时中断和延时函数的区别。
二、实验内容1.用定时器T0的方式1实现定时。
2.用定时器T1的方式2控制两个LED以不同周期闪烁。
三、电路图四、实验步骤说明1. 用定时器T0的方式1实现定时。
使用定时器T0的方式1来控制P0.0引脚的LED的闪烁,要求闪烁周期2s,即亮1s,灭1s。
2. 用定时器T1的方式2控制两个LED以不同周期闪烁。
使用定时器T1的方式2来控制P0.0、P0.1引脚的两个LED分别以1s和2s的周期闪烁。
实验报告格式实验四定时中断实验学院:专业:年级:实验时间:姓名:学号:指导教师:一、实验目的1.掌握51单片机定时中断的应用。
2.掌握定时器初值的计算方法。
3. 掌握定时中断和延时函数的区别。
二、实验内容1.用定时器T0的方式1实现定时。
2.用定时器T1的方式2控制两个LED以不同周期闪烁。
三、电路图(贴Proteus仿真图)四、程序与注释1)程序1(调试下列程序,在错误行后面注明错误及改正方法)#include <reg51.h>;#define uchar unsigned char//sbit P0_0=P0^0;unchar a;void main(){EA=1;TMOD=0x10;TH0=(65536-50000)/256;TL0=(65536-50000)%256;a=0;while(1)}void t0() interrupt 0{a++;if(a==10){P0_0=~P0_0;}TH0=(65536-50000)/256;TL0=(65536-50000)%256;}2)程序2(调试下列程序,在错误行后面注明错误及改正方法)#include <reg51.h>#define uchar unsigned char;sbit D0=P0^0;sbit D1=P0^1;uchar a,b;void main(){EA=1;ET1=1;TMOD=0x20;TL1=6;TR0=1;a=0;b=0;while(1);}void t1() interrupt 1{a++;b++;if(a=1000){D0=~D0a=0;}if(b=4000){D1=~D1;b=0;}六、简答题用T1,工作方式1实现1s的延时函数,晶振频率为12MHz。
单片机实验三_中断与定时器实验

a b c d e f g 实验三 中断、定时器实验信息学院 10通信A 柳东旭 1015231030一、实验目的1. 学习外部中断和定时器的工作原理及使用方法。
2. 学习外部中断和定时器的初始化程序、应用程序的编写和调试。
二、实验仪器和设备PC 机、W A VE 软件、仿真器+仿真头、实验板、电源等。
三、实验说明本实验1通过开关向单片机提出中断请求,单片机响应中断进行计数,并通过LED 数码管指示出计数值,从而观察中断的请求、响应的过程。
实验2通过单片机的定时器产生延时,模拟交通灯控制的方法。
通过本实验学生可以掌握单片机中断和定时器的工作原理及使用方法以及中断和定时器的初始化程序、应用程序的编写和调试。
四、实验内容1、开关S0—S1连接P3口做输入,P0输出接LED 数码管,通过S2产生外部中断请求(/INT0)信号,在中断服务程序中完成十进制递增计数,并将计数值显示在LED 数码管上,要求分别采用电平触发和边沿触发。
按上述要求完成S3产生外部中断请求。
编写初始化程序和中断服务程序。
(注意开关抖动处理)2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,要求发光二极管(LED )按亮0.5秒、暗0.5秒闪烁,LED 亮的同时,从P2.0送出1kHz 的音频信号到音频驱动电路发声(持续0.5秒),将开关编号(0—7)显示在LED 数码管上。
要求延时采用内部定时器T0,音频的产生采用内部定时器T1。
编写初始化程序和中断服务程序。
五、实验电路连线P0.0 ---- LED0P3.2(/INT0)----- S2 P0.1 ---- LED1P3.3(/INT1)----- S3 P0.2 ---- LED2P0.3 ---- LED3P0.4 ---- LED4P0.5 ---- LED5P0.6 ---- LED6P0.7 ---- LED7LED 连接 外部中断请求输入a b c d e f g h(dp)P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7LED数码管各段与I/O的连接六、程序框图1、中断实验中断实验程序ORG 0000H;SJMP START;ORG 0003H; //外部中断0程序入口地址SJMP IN0;START : SETB EA ; //开总中断SETB EX0; //外部中断0允许SETB IT0; //下降沿触发MOV IP,#01H; //最高优先MOV DPTR,#TABLE; //表格地址MOV P2,#0FFH; //清零LL1 : MOV A,#00H;MOVC A,@A+DPTR; //输入表格第一个数CJNE A,#1BH,LL2; //是否结束字符,不是则到LL2MOV DPTR,#TABLE; //是,则重新输入LJMP LL1; //跳转到LL1LL2 : MOV P2,A; //输出数据LJMP LL1;IN0 : CLR EX0; //关中断LCALL DELAY; //延时MOV A,P3;CJNE A,#0FBH,LL3; //对比是否低电平.真的有中断PUSH PSW; //入栈PUSH ACC;INC DPTR; //表格地址加一POP ACC;POP PSW; // 出栈SETB EX0; //开中断RETI; //返回LL3 :SETB EX0;RETI;DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#50;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETTABLE : DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 1BHEND2、定时器实验框图定时器实验程序ORG 0000H;AJMP START;ORG 000BH; //定时器0入口AJMP ITT0;ORG 001BH; //定时器1入口LJMP ITT1;START : SETB EA; //开总中断MOV IP,#08H; //设置优先级MOV TMOD,#11H; //设置方式1MOV TH0,#3CH; //置定时器0初值MOV TL0,#0B0H;SETB ET0; //允许T0中断MOV TH1,#0FEH; //定时器1初值MOV TL1,#0CH;SETB ET1; //开启定时器1SETB TR1;BEEP BIT P3.7; //蜂鸣器设置SETB BEEP;MOV R0,#00H; //初始化MOV R1,#00H;MOV P2,#0FFH;MOV P0,#0FFH;MOV P1,#0FFH; //p1口初始化给ffh值L2 : MOV DPTR,#TABLE; //表地址存入DPTRMOV 50H,#0FEH; //比较初值载入地址50hL0 : MOV A,P1; //按键消抖CJNE A,#0FFH,L1;AJMP L0;L1 : LCALL DELAY ; //延时再判断MOV A,P1;CJNE A,#0FFH,LL1;AJMP L0;LL1 : CJNE A,50H,LL2; //是否与地址50h中数据相等MOV R0,A; //按键值载入R0,R3MOV R3,A;SETB TR0; //开定时器0MOV A,#00H;MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管LJMP L2; //返回程序开头LL2 : XCH A,50H; //交换数据RL A; //左移XCH A,50H; //再次交换,此时地址50h中数据左移一位INC DPTR; //表格数据地址加一LJMP LL1; //返回继续比较ITT0 : MOV TH0,#3CH; //定时器0中断程序重装计数值MOV TL0,#0B0H;CLR TR0; //关中断INC R1; //加一CJNE R1,#0AH,LL3; //是否为10,即中断了500ms 不是跳转到LL3MOV R1,#00H; //是,清零计数值MOV A,R0;MOV P0,A; //输出led控制值XRL A,R3; //异或求反让灯下次输出相反CPL A;MOV R0,A;LL3 : SETB TR0; //开定时中段0RETI; //返回ITT1 : CLR TR1; //定时中断1程序关中断MOV TH1,#0FEH;MOV TL1,#0CH;CJNE R0,#0FFH,LL4; //判断R0是否为0ffh 即灯是否为灭是则转移到LL4 :CPL BEEP; //蜂鸣器求反响LL4 : SETB TR1; //开定时器中断1RETI; //放回DELAY : MOV R7,#01; //延时程序DE1 : MOV R6,#40;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETTABLE : DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;;//DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据END六、思考题1、外部中断采用电平触发和边沿触发处理方法上又何不同?答:选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。
c51定时中断实验报告

c51定时中断实验报告本文介绍的是C51定时中断实验,利用这个实验可以更好地理解C51的定时器与中断模块,进一步熟悉C语言的使用。
一、实验目的1.掌握C51单片机的定时器模块和中断模块。
2.熟悉定时器与中断的工作原理。
3.掌握利用中断实现定时功能的方法。
4.掌握如何调试程序,发现和解决程序问题。
二、实验装置硬件:STC89C52微控制器、电源、电路板、电路元件等。
软件:Keil C51集成开发环境。
三、实验原理1.定时器模块C51单片机中的定时器模块包含了3种不同的工作方式:工作模式0、模式1和模式2。
这些工作模式拥有不同的计数器范围和计数方式。
在本实验中,将使用工作模式1,因为它适用于大多数定时需求,并且易于编写程序。
工作模式1基本特点如下:(1)Timer1用两个8位计数器(TH1和TL1)组成,当一个计数器溢出时(从FFH计数到00H),计数值自动重装,同时中断请求位TF1被设置。
(2)计数器TH1可以初始值,TL1需要重新初始计数。
(3)Timer1的计数时钟来源可以是外部时钟源或内部时钟源,一般选择内部时钟源。
(4)TH开头的寄存器和TL开头的寄存器合起来组成16位的Timer1计数器,这个计数器的数值大小为TH1-TH1。
(5)x表示H或L。
用C语言对Timer1进行编程,首先需要完成以下配置:TMOD |= 0x10; // 定时器模式选择,使用模式1,TH0和TL0为一组计数器TH1 = (65536 - 50000) / 256; // 定时器初值设置ET1 = 1; // 打开定时器中断其中,TMOD是用来选择定时器工作模式,可以用对应的数值进行配置;TH1和TL1需要根据需要设置计数器初始值,该初值的计算公式为:计数初值 = (65536 - 计数时间/12)。
ET1为定时器1允许中断的位,EA为总中断允许位,TR1为定时器1工作使能位。
2.中断模块中断是一种实时响应外部事件处理的技术手段,当特定的硬件事件发生时,CPU自动调出相应的中断处理程序来响应事件,处理程序完成任务后返回继续程序运行,从而提高了CPU的效率。
中断及定时器实验报告

一、实验目的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灯闪烁频率。
单片机定时器及外部中断实验

单片机实验报告实验名称:定时器及外部中断实验*名:***学号:*********班级:通信3班时间:2014.5南京理工大学紫金学院电光系一、实验目的1、理解定时/计数器的工作原理;2、掌握外部中断的基本处理方法;3、学习中断处理程序的编程方法;二、实验原理1、P1口为计数值输出口,利用定时器实现1秒定时,计数初值为0,每隔1秒加1;另外,外部中断0引脚外接键盘BUTTON,按键使得显示数值加1。
电路原理图如图:2、系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。
把“单片机系统”A2区的INT0端口用导线连接到D1区的KEY1端口上。
3、程序设计流程三、 实验内容1、代码:#include<reg51.h>#define uchar unsigned charsbit p32=P3^2;sbit p33=P3^3;uchar num,a;uchar b;void main(){ (b)定时器中断流程图(c)外部中断流程 (a )主流程图TMOD=0x01;TH0=(65536-46082)/256; TL0=(65536-46082)%256; EA=1;ET0=1;TR0=1;TF0=0;EX0=1;IT0=0;EX1=1;IT1=0;P1=0xff;a=0;while(1){b=a+(a/10*6);P1=b;if(b==160){a=0;}}}void T0_time()interrupt 1 {TH0=(65536-46082)/256; TL0=(65536-46082)%256; num++;if(num==20){num=0;a++;}}void X0()interrupt 0{a++;while(!p32);}void X1()interrupt 2{a=0;while(!p33);}2、电路图:四、小结与体会通过此次实验,我更深地理解了定时/计数器的工作原理,掌握了外部中断的基本处理方法以及在学习中断处理程序的编程方法。
单片机实验电子钟报告
实验四 电子钟(定时器、中断综合实验)一、实验目的熟悉MCS51类CPU 的定时器、中断系统编程方法, 了解定时器的应用、实时程序的设计和调试技巧。
二、实验内容编写一个时钟程序, 产生一个50ms 的定时中断, 对定时中断计数, 将时、分、秒显示在数码管上。
三、程序框图主程序中断处理电子钟程序框图四、实验步骤 1.连线说明: E5 区A0 ←→ A3 区A0 E5 区CS ←→ A3 区CS5 E5 区CLK ←→ B2 区2MHzE5 区A.B.C.D ←→ G5 区A.B.C.D (排线每个8 位, 注意高低位一致) 2.时间显示在数码管上五、程序清单 ms50 DATA 31H ;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分hour DATA 34H ;时buffer DATA 35H ;显示缓冲区EXTRN CODE(Display8)ORG 0000HLJMP STARORG 000BH ;定时器T0中断处理入口地址LJMP INT_Timer0ORG 0100HSTAR: MOV SP,#60H ;堆栈MOV ms50,A ;清零ms50MOV hour,#12 ;设定初值: 12:59:50MOV min,#59MOV sec,#50MOV TH0,#60 ;定时中断计数器初值MOV TL0,#176 ;定时50msMOV TMOD,#1 ;定时器0: 方式一MOV IE,#82H ;允许定时器0中断SETB TR0 ;开定时器T0STAR1: LCALL Display ;调用显示JNB F0,$CLR F0SJMP STAR1 ;需要重新显示时间;中断服务程序INT_Timer0: MOV TL0,#176-5MOV TH0,#60PUSH 01HMOV R1,#ms50INC @R1 ;50ms单元加1CJNE @R1,#20,ExitIntMOV @R1,#0 ;恢复初值INC R1INC @R1 ;秒加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;分加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;时加1CJNE @R1,#24,ExitInt1MOV @R1,#0ExitInt1: SETB F0ExitInt: POP 01HRETIHexToBCD: MOV B,#10DIV ABMOV @R0,BINC R0MOV @R0,AINC R0RETDisplay: MOV R0,#bufferMOV A,secACALL HexToBCDMOV @R0,#10H ;第三位不显示INC R0MOV A,minACALL HexToBCDMOV @R0,#10H ;第六位不显示INC R0MOV A,hourACALL HexToBCDMOV R0,#bufferLCALL Display8RETENDEXTRN CODE (Display8)BUFFER DA TA 60HORG 0000HAJMP MAINORG 000BHAJMP IT0PMAIN: MOV TMOD,#01HMOV 20H,#20HCLR AMOV 52H,A ;计数和显示MOV 51H,A ;空间清零MOV 50H,#50HMOV 40H,AMOV 41H,AMOV 43H,AMOV 44H,AMOV 46H,AMOV 47H,ASETB ET0SETB EAMOV TH0,#9EH ;计数器赋初值MOV TL0,#58HSETB TR0MOV 45H,#11HMOV 42H,#11HMOV R0,#BUFFERLCALL Display8HERE: AJMP HEREIT0P: PUSH PSWPUSH ACCMOV TH0,#9EH ;重新转入计数值MOV TL0,#58HDJNZ 20H,RETURN ;计数不满20返回MOV 20H,#20H ;重置中断次数MOV A,#01H ;秒加1ADD A,50HDA A ;秒单元十进制调制PUSH ACCCJNE A,#60H,SWS ;是否到60秒, 否则返回MOV A,#00HSWS: MOV R5,ASW AP AANL A,#0FHMOV 41H,AMOV A,R5ANL A,#0FHMOV 40H,A ;满60秒, 秒单元清零LCALL AAAPOP ACCMOV 50H,ACJNE A,#60H,RETURNMOV 50H,#00HMOV A,#01H ;分单元加1ADD A,51H ;分单元十进制调整DA APUSH ACCCJNE A,#60H,SWS1;是否到60分, 否则返回MOV A,#00HSWS1: MOV R5,A·SW AP AANL A,#0FHMOV 44H,AMOV A,R5ANL A,#0FHMOV 43H,ALCALL AAAPOP ACCMOV 51H,ACJNE A,#60H,RETURNMOV 51H,#00H ;满60分, 分单元清零MOV A,#01H ;时单元加1ADD A,52HDA APUSH ACCCJNE A,#24H,SWS2 ;是否到24小时, 否则返回MOV A,#00HSWS2: MOV R5,ASW AP AANL A,#0FHMOV 47H,AMOV A,R5ANL A,#0FHMOV 46H,ALCALL AAAPOP ACCMOV 52H,ACJNE A,#24H,RETURNMOV 52H,#00H ;满24小时, 时单元清零RETURN:POP PSWPOP ACCRETIAAA: MOV R0,#40H ;计数器的值赋MOV R1,#60H ;给显示空间MOV R5,#08HABC: MOV A,@R0MOV @R1,AINC R1INC R0DJNZ R5,ABCMOV R0,#BUFFERLCALL Display8RETEND六、思考题1.电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?2、使用定时器方式二, 重新编写程序。
实现中断功能_实验报告(3篇)
第1篇一、实验目的1. 理解中断的概念和作用。
2. 掌握单片机中断系统的基本原理和配置方法。
3. 学会编写中断服务程序,实现外部中断和定时器中断的应用。
4. 通过实验加深对中断系统在实际应用中的理解。
二、实验原理中断是计算机系统中一种重要的机制,它允许CPU在执行程序过程中,响应某些外部或内部事件,从而暂停当前程序的执行,转而处理这些事件。
单片机的中断系统主要包括外部中断和定时器中断两种类型。
三、实验环境1. 单片机:80C512. 开发环境:Keil for 80513. 仿真软件:Proteus4. 实验电路:外部按钮电路、LED灯电路、定时器电路四、实验内容1. 外部中断实验(1)实验目的:学习外部中断的工作原理,掌握外部中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置外部中断源,设置中断优先级。
c. 编写外部中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:当按下按钮时,LED灯闪烁,松开按钮后LED灯熄灭。
2. 定时器中断实验(1)实验目的:学习定时器中断的工作原理,掌握定时器中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置定时器工作模式,设置定时时间。
c. 编写定时器中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:定时器中断触发后,LED灯闪烁,达到设定时间后停止闪烁。
五、实验分析1. 外部中断实验分析通过外部中断实验,我们了解了外部中断的工作原理和配置方法。
在实验中,我们设置了外部中断源,并编写了中断服务程序,实现了LED灯的闪烁。
这表明外部中断可以有效地响应外部事件,并执行相应的操作。
2. 定时器中断实验分析通过定时器中断实验,我们掌握了定时器中断的配置和编程方法。
定时器中断程序设计实验
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载定时器中断程序设计实验地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容实验一定时器/中断程序设计实验一、实验目的1、掌握定时器/中断的工作原理。
2、学习单片机定时器/中断的应用设计和调试二、实验仪器和设备1、普中科技单片机开发板 HC6800-EM3V3.0;2、Keil uVision4 程序开发平台;3、PZ-ISP 普中自动下载软件。
三、实验原理805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。
8052 单片机内除了 T0 和 T1 之外,还有第三个 16 位的定时器/计数器,记为 T2。
它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。
定时器 T0 由特殊功能寄存器 TL0 和 TH0 组成,定时器 Tl 由特殊功能寄存器 TLl 和 TH1 组成。
定时器的工作方式由特殊功能寄存器 TMOD 编程决定,定时器的运行控制由特殊功能寄存器 TCON 编程控制。
T0、T1 在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU 转向中断处理程序,从而完成某种定时控制功能。
T0、T1 用作计数器使用时也可以申请中断。
作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由 P3 口的 P3.4(或 P3.5)即 T0(或 T1)引脚输入。
方式控制寄存器 TMOD 的控制字格式如下:低 4 位为 T0 的控制字,高 4 位为 T1 的控制字。
GATE 为门控位,对定时器/计数器的启动起辅助控制作用。
GATE=l 时,定时器/计数器的计数受外部引脚输入电平的控制。
由由运行控制位 TRX (X=0,1)=1 和外中断引脚(0INT 或 1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。
单片机定时器中断实验内容
定时器中断实验内容:(第6章中断系统.doc和第7章定时器、计数器.doc)1.基础实验5(定时器输出PWM)2.定时器中断函数实验:要求:每一次按键(查询方式),同时要求改变LED1~LED8循环点亮(定时中断)的方式。
1)初始状态或按下KEY1键(松开后保持),只点亮一只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED8…………………………LED1LED82)按下KEY2键(松开后保持),同时点亮相邻的两只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED83)按下KEY3键(松开后保持),同时点亮间隔的两只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED84)按下KEY键(松开后保持),点亮一只LED灯,每隔1秒(定时)多点亮一只LED灯(中断),直到LED灯全亮,然后回到一只LED点亮状态循环。
LED1LED8LED1LED8…………………………LED1LED85)按下KEY键(松开后保持),同时点亮相邻的两只LED灯,隔1秒(定时)后再次增加点亮相邻的两只LED灯,直到全亮后再隔1秒点亮123456,后又1234,直到全灭后重新循环。
LED1LED8LED1LED8…………………………LED1LED8…………………………LED1LED86)按下KEY键(松开后保持),开始点亮LED1灯,隔1秒(定时)后点亮23,再隔1秒点亮345,隔1秒后5678,隔1秒后8,隔1秒后76 ,隔1秒后654,隔1秒后4321,隔1秒后1重复。
LED1LED8LED1LED8LED1LED8…………………………LED1LED87)按下KEY键(松开后保持),开始点亮LED1、LED8灯,隔1秒(定时)后点亮12、78,再隔1秒点亮123、678,直到全亮后再隔1秒点亮123、678,后又12、78,直到点亮LED1、LED8灯后重新循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(5)编写定时器中断服务函数 interrupt void TIM0_IRQn(void) {
......功能程序 }
3.硬件设计
本实验使用到硬件资源如下: (1)D1、D2指示灯 (2)定时器0
4.软件设计
本章所要实现的功能是:通过Timer0中断控制 D2 指示灯闪烁,主 函数控制 D1 指示灯闪烁提示系统运行状态。程序框架如下: (1)初始化定时器0,并使能相应中断 (2)编写定时器0中断函数 (3)编写主函数
(3)定时器的设置 TI提供的库函数“DSP2833x_CpuTimers.c”内已经有函数实现 void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) (4)开启定时器中断功能,并使能定时器 //设置定时器0的中断入口地址为中断向量表的INT0 EALLOW; PieVectTable.TINT0 = &TIM0_IRQn; EDIS; //开始定时器功能 CpuTimer0Regs.TCR.bit.TSS=0; //开启CPU第一组中断并使能第一组中断的第7个小中断,即定时器0 IER |= M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //使能总中断 EINT; ERTM;
定时器中断实验
本讲主要内容
1.定时器介绍 2.定时器配置步骤 3.硬件设计 4.软件设计
1.定时器介绍
1.1 定时器工作原理 TMS320F28335的CPU Time有三个,分别为Timer0,Timer1,
Timer2,其中Timer2是为操作系统DSP/BIOS保留的,当未移植操作 系统时,可用来做普通的定时器。这三个定时器的中断信号分别为 TINT0, TINT1, TINT2,分别对应于中断向量INT1,INT13,INT14 。
(2)初始化定时器参数,包括制定定时器寄存器地址、周期寄存器值、预定标计数器值等 //指向定时器0的寄存器地址 CpuTimer0.RegsAddr = &CpuTimer0Regs; //设置定时器0的周期寄存器值 CpuTimer0Regs.PRD.all = 0xFFFFFFFF; //设置定时器预定标计数器值为0 CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPRH.all = 0; //确保定时器0为停止状态 CpuTimer0Regs.TCR.bit.TSS = 1; //重载使能 CpuTimer0Regs.TCR.bit.TRB = 1; // Reset interrupt counters: CpuTimer0.InterruptCount = 0;
1.2 Байду номын сангаас时器相关寄存器
(1)定时器控制寄存器TIMERxTCR
2.定时器配置步骤
定时器相关库函数在DSP2833x_CpuTimers.c文件中 (1)使能定时器时钟 EALLOW; SysCtrlRegs.PCLKCR3.bit.CPUTIMER0ENCLK = 1; // CPU Timer 0 EDIS;