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

合集下载

c51定时中断实验报告

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 定时中断实验

实验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定时中断实验,利用这个实验可以更好地理解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篇)

实现中断功能_实验报告(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. 实验器材单片机开发板烧录软件4. 实验步骤步骤1:引入头文件,在程序中引入相应的头文件,包括中断相关的头文件以及需要使用的外设相关的头文件。

cinclude <reg51.h> //单片机寄存器定义include <intrins.h> //特殊函数检测//其他头文件步骤2:初始化定时器在主函数中,初始化定时器,设定定时器的工作模式、计数值等参数。

cvoid InitTimer(){TMOD = 0x01; //定时器工作在模式1,16位定时器自动重装TH0 = 0xff; //定时器初值设定为0xffffTL0 = 0xff; //定时器初值设定为0xffffTR0 = 1; //启动定时器}步骤3:编写中断处理程序编写中断处理程序,即定时器中断的具体操作。

在本实验中,我们将在定时器中断发生时,通过P1口输出一个脉冲信号。

cvoid TimerInterrupt() interrupt 1{P1 ^= 0x01; //P1口取反,输出脉冲信号}步骤4:主程序在主程序中,调用初始化函数,然后进入一个无限循环,保持程序不退出。

cvoid mn(){InitTimer(); //初始化定时器while (1){//其他程序}}5. 实验结果与分析通过上述操作,定时器中断程序设计已经完成。

在本实验中,我们通过定时器中断触发P1口的脉冲信号输出,以验证中断程序的正确性。

6. 实验本实验通过设计一个定时器中断程序,实现了定时触发某个操作的功能。

单片机定时器中断实验

单片机定时器中断实验

实验3 定时器中断实验一、 实验目的掌握MCS-51定时器的使用方法二、 实验设备AT89c51基本实验单元、计算机设备系统三、 实验原理(一) 实验说明(1) 利用定时器中断方式,做一个显示0~9的秒钟。

(2) 利用定时器中断方式,做一个显示00~99的秒钟,每一秒增加1.(二) 程序流程图(i )(ii )(三) 参考程序内容(1):只需要将内容2的代码中十位显示那一部分删除,并令D24=0即可。

内容(2):#include<reg51.h>unsigned char sum1=0,sum2=0;sbit D24=P2^4;sbit D25=P2^5;static unsigned char t;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(unsigned int);void main(){TMOD=0x10;TL1=0xf0;TH1=0xd8;EA=1;ET1=1;TR1=1;while(1){P0=0xff;D24=1;D25=0;P0=table[sum2]; //十位delay(50);P0=0xff;D24=0;D25=1;P0=table[sum1]; //个位delay(50);}}void delay(unsigned int m){unsigned int i,j;for(i=0;i<m;i++)for(j=0;j<110;j++){;}}void timer0() interrupt 3{TL1=0xf0;TH1=0xd8;t++;if(t==100){t=0;sum1++;if(sum1>9){sum1=0;sum2++;if(sum2>9)sum2=0;}}}四、实验步骤:1.根据实验原理图编写程序,用“Keil uVision4”编译软件进行编译,如未通过,修改程序,直至通过。

单片机实验3 中断、定时器计数器实验

单片机实验3 中断、定时器计数器实验

西南科技大学实验报告课程名称:单片机原理及应用A实验名称:中断、定时器/计数器实验姓名:学号:班级:生医1401指导教师:雷华军西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、实验目的1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操作,会使用HEX文件进行单片机的仿真。

2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。

3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。

4、掌握利用单片机产生矩形方脉冲的相关原理。

二、实验原理1、定时器结构和原理图①上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。

反相器,或门,与门共同构成启/停控制信号。

TH 和TL为加1计数器,TF为中断标志。

每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。

计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。

2、定时器工作方式定时器共有四种工作方式分别为方式0——方式3。

方式0:13位计数器,最大计数值为213个脉冲。

方式1:16位计数器,最大计数值为216个脉冲。

方式2:8位自动重装计数器。

该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。

方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。

3、定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。

就可以实现一个占空比为50%的矩形脉冲输出。

对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。

4、利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。

定时器及中断实验报告

定时器及中断实验报告

定时器及中断实验报告定时器及中断实验报告引言在计算机科学领域,定时器和中断是非常重要的概念。

定时器可以用于测量时间、控制程序执行速度等,而中断则可以提高系统的响应能力和处理效率。

本实验旨在通过实际操作,加深对定时器和中断的理解,并验证其在实际应用中的作用和效果。

实验目的1. 理解定时器和中断的概念、原理以及作用。

2. 掌握定时器和中断的编程方法和技巧。

3. 通过实验验证定时器和中断在实际应用中的效果和作用。

实验器材1. 单片机开发板2. 电脑3. USB数据线实验步骤1. 连接单片机开发板和电脑,确保通信正常。

2. 打开开发板的开发环境,创建一个新的工程。

3. 在工程中添加定时器和中断相关的库文件。

4. 编写代码,在主函数中初始化定时器和中断,并设置相应的参数。

5. 编译并下载代码到开发板上。

6. 运行程序,观察定时器和中断的效果。

实验结果通过实验,我们成功实现了定时器和中断的功能,并观察到以下结果:1. 定时器可以精确地测量时间,实现定时功能。

2. 中断可以在特定条件满足时打断程序的执行,提高系统的响应能力。

3. 定时器和中断的结合使用,可以实现更复杂的功能,如周期性任务的执行等。

实验分析定时器和中断是计算机系统中常用的功能模块,其应用广泛。

通过本实验,我们深入理解了定时器和中断的概念和原理,并通过实际操作验证了其在实际应用中的作用和效果。

定时器和中断的结合使用,可以实现更复杂的功能,提高系统的响应能力和处理效率。

结论本实验通过实际操作,加深了对定时器和中断的理解,并验证了其在实际应用中的作用和效果。

定时器和中断是计算机系统中非常重要的功能模块,掌握其编程方法和技巧对于开发和优化系统具有重要意义。

通过进一步学习和实践,我们可以更好地应用定时器和中断,提高系统的性能和可靠性。

参考文献[1] 《嵌入式系统原理与实践》[2] 《单片机原理与应用》[3] 《计算机组成与设计:硬件/软件接口》。

单片机实验三 中断中断、定时器

单片机实验三  中断中断、定时器

实验三中断、定时器实验目的:掌握汇编语言综合编程方法,掌握并行I/O口、定时器、中断等功能部件的使用规则和应用方法,熟悉中断处理程序的安排。

实验环境:CodeWarrior IDE仿真调试软件+XDT512开发板套件;编程语言选择:汇编语言(Assembly);调试连接选择:Full Chip Simulation +P&E Multilink;工程目标选择:硬件连接调试(P&E Multilink);实验内容:1、外部中断IRQ触发的LED跑马灯。

核心板上4个LED已接B口高4位,B口位输出低电平时点亮,IRQ引脚下降沿引发中断。

使用导线连接核心板MCU的IRQ引脚(插口J1=J5=J6=J7的2号脚)和目标板上的按键PB1(USER I/O插口的PB1),按动PB1即能给IRQ引脚施加带有下降沿的低电平。

调试时,可在中断服务程序中设置断点,以方便观察是否进入中断。

在此程序正常运行的基础上再加入对核心板按键SW1(P口最低位,按下时接地)的检测,当其按下时取消跑马灯显示,IRQ再次按下时继续显示跑马灯。

LDS #__SEG_END_SSTACK ; initialize the stack pointerLDAA #$FFSTAA DDRBLDAA #$C0STAA IRQCRCLILDAA #$FFSTAA PORTBLDAA #$00STAA FLAGWAIT: CMPA FLAGBEQ WAITSECLDAA #$FESHIFT: STAA PORTBBSR DELAYROLABRCLR PTP,#$01,CANCELBRA SHIFTCANCEL: LDAA #$00STAA FLAGBRA WAITIRQ_ISR: LDAA #$FFSTAA FLAGRTIDELAY: PSHXPSHYLDX #200DL1: LDY #200DL2: NOPNOPDBNE Y,DL2DBNE X,DL1PULXPUL YRTS2、利用MCU的TIM定时器、中断功能部件,实现3s精确定时(2MHz总线频率),每定时时间到,使核心板上接B口高4位的最高位的LED亮灭一下,观察是否进入中断。

单片机 实验三中断及定时器实验

单片机  实验三中断及定时器实验

实验三:中断及定时器实验一、实验目的: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,#BMOV TH0,#03CH ;50毫秒中断时间常数MOV TL0,#0BHMOV IE,#B ;开放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)

单片机实验四-定时器和中断的应用实验(1)

实验四定时器和中断应用实验一、实验目的1. 学习定时器的编程和使用2.学习中断的使用方法二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。

三、实验内容及步骤1.使用单片机最小应用系统。

用八位数据线连接单片机P1口JD2F与八位逻辑电平显示模块JD3I,打开相关模块电源。

2.用串行数据通信线连接计算机与仿真器,把仿真器插到单片机最小系统的锁紧插座中,请注意仿真器的方向:缺口朝上。

打开单片机最小应用系统的电源开关。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,编制源程序,进行编译,直到编译无误。

4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。

5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。

实验1用导线分别把单片机最小应用系统的 P1.1接拨断开关K0,P1.0接发光二极管L0。

采用定时中断处理方式,通过拨断开关K0控制二个不同占空比的脉冲信号输出,即当K0=0时,从P1.0输出周期为1秒占空比为50%的方波、当K0=1时,从P1.0输出周期为1秒占空比为20%的方波。

实验2用导线将实验箱上的单次脉冲源的负脉冲信号接到单片机最小应用系统的INT0( P3.2)输入引脚,模拟中断请求脉冲输入信号,P1.0接发光二极管L0。

程序响应中断请求执行中断服务程序使发光二极管L0闪烁3次,这样每输入一个中断请求脉冲(即按下单次脉冲源按钮),使发光二极管L0闪烁3次要求同学自己思考:修改实验2程序,每输入一个中断请求脉冲(即按下单次脉冲源按钮),使P1口连接的8个发光二极管从右到左(L0到L7)循环点亮一次(每个发光二极管闪烁3次)。

再按下单次脉冲源按钮,重复上述过程。

实验3用导线将拨断开关K0接到单片机最小应用系统的INT1( P3.3)输入引脚,并将开关K0拨在低电平位置K0=0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;
相关文档
最新文档