51单片机外部中断实验
用51单片机的外部中断来测频率

}
}
void main(void)
{
TCCR1B=0x42; //初始化T/C1,1/8分频,上升沿触发捕捉
TIMSK=0x24; //允许T/C1溢出和捕捉中断
表5-1 T/C0计时精度和时宽(系统时钟4MHz)
分频系数 计时频率 最高计时精度(TCNT0=255) 最宽时宽(TCNT0=0)
1 4MHz 0.25us 64us
8 500KHz 2us 512us
unsigned int dis[6];
uchar con[]={0xfe,0xfd,0xfb,0xf7,0xef}; //共阳型数码管控制端
init();
delay(uvoid main()
{guandz();
uchar counter1;
sbit duan=P2^6; //74HC573的LE端 U5 LED的段选端
sbit wei=P2^7; //74HC573的LE端 U4 LED的位选端
unsigned int counter2,tmp;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阳型数码管0—9显示
}
else
display();
}
/计数器(Timer/counter)是单片机芯片中最基本的外围接口,它的用途非常广泛,常用于测量时间、速度、频率、脉宽、提供定时脉冲信号等。相对于一般8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,功能非常强大。ATmega128一共配置了2个8位和2个16位,共4个定时/计数器,本小节重点对它的一些增强功能的应用做基本的介绍。
用51单片机的外部中断来测频率

用51单片机的外部中断来测频率//晶振:12M//实验方法:首先要把51hei单片机开发板上的ne555的方波输出信号J7的第一脚用杜邦线//引入P3.2口,数码管即可显示ne555震荡电路当前的频率值,旋动PR1电位器可//发现数字有变化.//原理:1秒钟内计数外部脉冲个数,如计数1000次,则表示频率为1000Hz//1秒钟定时采用51单片机定时器0实现,外部脉冲由外部中断0引脚接入#includereg51.h#include51hei.h#define uchar unsigned charuchar counter1;sbit duan=P2 ;//74HC573的LE端U5 LED的段选端sbit wei=P2 ;//74HC573的LE端U4 LED的位选端unsigned int counter2,tmp; uchar table[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阳型数码管09显示unsigned int dis[6]; uchar con[]={0xfe,0xfd,0xfb,0xf7,0xef}; //共阳型数码管控制端init();delay(uchar);display(); jishu(); void main(){guandz();init();while(1){ jishu(); } }//定时器0和外部中断0的初始化init(){ EA=1;EX0=1;ET0=1;IT0=1; TMOD=0x01;TH0=0x3c;TL0=0xaf;TR0=1;} //延时程序delay(uchar x){uchar a,b;for(a=x;a0;a--) for(b=20;b0;b--);}//外部中断0中断程序void external0() interrupt 0{ tmp++; } //定时器0中断程序void timer0() interrupt 1{ TH0=0x3c;TL0=0xaf;counter1++; } //显示程序display(){uchar i; dis[0]=counter2/10000; //获取计数值的万位dis[5] =counter2%10000;dis[1]=dis[5]/1000; // 获取计数值的千位dis[5]=dis[5]% 1000;dis[2]=dis[5]/100; // 获取计数值的百位dis[5]=dis[5]%100;dis[3]=dis[5]/10; // 获取计数值的十位dis[4]=dis[5]%10; // 获取计数值的个位for(i=0;i5;i++) //依次显示万、千、百、十、个位,动态显示{ // P0=0xff; P0=con[i]; wei=1; wei=0; P0=table[dis[i]]; duan=1; duan=0; delay(1); P0=0; duan=1; duan=0; } }。
单片机外部中断实验报告

单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。
前一方式IT0二1,后一方式IT0二0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式ITl=0o当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
汇编外部中断及NE555计数实验实验报告

外部中断及NE555计数实验11103070315 李青【实验内容】1、利用外部按键中断计数并用数码管显示计数值2、用51单片机T0、T1定时计数器对NE555产生的脉冲信号进行频率计数,频率送LCD显示(或数码管显示)【需要了解的知识】1、GPIO设定2、LCD显示原理,输入与输出及其原理3、定时计数器工作原理及频率测量4、NE555工作原理【实验预习】预读实验指导电子文档的实验十六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一外部中断实验任务:利用单片机的外部中断功能进行计数,然后将计数值输出到数码管上显示。
K5键—计数值加1(外部中断0)K6键—计数值加1(外部中断1)3位数码管显示,最大计数值255实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。
输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL 的AT89S52的CPU。
选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。
接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。
单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file (*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。
51单片机外部中断

单片机技术与应用实验报告实验名称:外部中断(交通灯与急救车)姓名:学号:班级:指导老师:完成时间:2012年5月5日一.实验要求以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理,并允许急救车优先通过的要求。
有急救车到达时,两向交通信号为全红,以便让急救车通过。
假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。
本实验以按键为中断申请,表示有急救车通过。
二.实验目的1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
三.实验框图四.实验程序Green_NB0 BIT P1.0Green_DX0 BIT P1.1Green_DX1 BIT P1.2Green_NB1 BIT P1.3Red_NB0 BIT P1.4Red_DX0 BIT P1.5Red_DX1 BIT P1.6Red_NB1 BIT P1.7Scd EQU 30H ;秒ORG 0000HJMP STARTORG 0003HJMP INIT0ORG 000BHJMP TIME0START:MOV Scd, #00HMOV 31H, #00HMOV DPTR, #0F200H ;MOV P1, #69H ;初始亮灯情况:东西绿灯,南北红灯MOV A,P1MOVX @DPTR,ACLR 00HCLR F0MOV TMOD, #01H ;设定定时器1MOV IE, #83H ;设定中断使能定时器中断0、外部中断0和1MOV SP, #60HMOV TH0, #30HMOV TL0, #0B0HSETB TR0LOOP:JNB F0,N0 ;F0用户标志位,此处用作东西绿灯闪烁标识,1为绿灯闪烁CPL Green_DX0 ;绿灯闪三秒CPL Green_DX1MOV A,P1MOVX @DPTR,ACALL DELAY500MSJMP N1N0:JNB 00H,N1 ;00H,值为1时,南北绿灯闪烁CPL Green_NB0 ;绿灯闪三秒CPL Green_NB1MOV A,P1MOVX @DPTR,ACALL DELAY500MSN1:JMP LOOPDELLAY10S:MOV R4,#0BFHD1:MOV R6,#0BDHD0:MOV R5,#89HDJNZ R5,$DJNZ R6,D0DJNZ R4,D1NOPRETDELAY500MS:MOV 57H,#17HDL1:MOV 56H,#98HDL0:MOV 55H,#46HDJNZ 55H,$DJNZ 56H,DL0DJNZ 57H,DL1RETTIME0:MOV TH0,#3CHMOV TL0,#0B0HINC 31HMOV A,31HN: CJNE A,#20,EXIT ;判断是否到一秒MOV 31H,#0INC ScdMOV A,ScdCJNE A,#7,NEXT1 ;判断是否到东西绿灯闪烁时间SETB F0JMP EXITNEXT1: MOV A,ScdCJNE A,#10,NEXT2 ;闪烁3秒后,停止东西绿灯闪烁,开东西黄灯CLR F0MOV P1,#09H ;开东西黄灯MOV A,P1MOVX @DPTR,AJMP EXITNEXT2:MOV A,ScdCJNE A,#13,NEXT3MOV P1,#96H ;半个周期结束,变为:东西红,南北绿MOV A,P1MOVX @DPTR,ANEXT3:MOV A,ScdCJNE A,#20,NEXT4 ;判断是否到南北绿灯闪烁时间SETB 00HJMP EXITNEXT4: M OV A,ScdCJNE A,#23,NEXT5 ;闪烁3秒后,停止南北绿灯闪烁,开南北黄灯CLR 00HMOV P1,#06H ;开南北黄灯MOV A,P1MOVX @DPTR,AJMP EXITNEXT5: MOV A,ScdCJNE A,#26,EXITMOV P1,#69H ;一个周期结束,变为:东西绿,南北红MOV A,P1MOVX @DPTR,AMOV Scd,#0EXIT: RETIINIT0:PUSH PSWPUSH ACCCLR EAMOV R2,P1 ;保存数据MOV P1,#0FH ;ALL REDMOV A,P1MOVX @DPTR,ACALL DELLAY10SMOV P1,R2 ;恢复SETB EAPOP ACCPOP PSWRETIEND五.实验总结通过这次实验,理解了外部中断入口地址的选择及外部中断中断实现的方法。
实验四-MCS-51单片机外部中断实验

实验四-MCS-51单片机外部中断实验实验目的:1. 学习MCS-51单片机的外部中断原理和使用方法;2. 掌握如何通过硬件中断和软件中断实现MCS-51单片机的响应机制;3. 了解MCS-51单片机外部中断的实际应用。
实验器材:MCS-51单片机开发板、按键开关、调试器。
实验原理:MCS-51单片机通过INT0和INT1两个硬件中断引脚实现外部中断。
当INT0外部中断线检测到低电平信号时,中断向量为0x0003;当INT1外部中断线检测到低电平信号时,中断向量为0x0013。
通过配置中断控制寄存器IE和TCON,可以实现对外部中断的使能、触发方式和优先级等的控制。
MCS-51单片机还可以通过软件方式实现外部中断,即通过软件方式扫描外部信号,并在检测到信号发生变化时触发相应的中断处理程序。
实现软件中断的方法是使用定时器功能,通过定时器中断触发中断服务程序,该程序扫描外部信号,并根据需要触发软件中断。
实验步骤:1. 将开发板上的按键开关连接到开发板的P3.2引脚。
按键开关按下时,P3.2引脚被拉低,可以触发外部中断。
2. 打开Keil μVision5软件,新建工程,选择芯片型号为STC89C52,保存并命名为“Exp4”。
3. 在主函数中声明中断函数,并在中断函数中打印提示信息。
4. 在主函数中初始化中断控制寄存器IE和TCON,开启INT0外部中断,并将中断优先级设置为最高。
5. 在主函数中使用无限循环,来保持程序一直运行,并定时打印提示信息,以验证程序是否正常运行。
6. 烧录程序到开发板上,先在开发板上不按下按键,观察是否正常打印提示信息。
然后按下按键,观察是否触发外部中断,进入中断函数并打印提示信息。
实验代码:#include<STC89C52.h>#include<stdio.h>// 定义外部中断0的中断服务函数void Interrupt0() interrupt 0{printf("External interrupt 0 has occured!\n");}// 打印提示信息printf("Program is running...\n");while(1){// 定时打印提示信息printf("Hello!\n");delay_ms(1000);}}注意事项:1. 写中断程序时,一定要注意将中断函数的声明放在程序开头,否则可能会出现中断无法触发的情况;2. 在使用中断相关功能的时候,务必仔细阅读数据手册中的相关章节,以确保正确使用并且避免出现不必要的错误;3. 在进行外部中断实验的时候,可以使用按键开关、光敏电阻等外部器件来模拟外部信号的变化,以测试程序的正确性。
中断及定时器实验报告

一、实验目的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灯闪烁频率。
实验04:外部中断INT0、INT1控制流水灯左移、右移

实验四:外部中断系统实验一、实验目的1.结合理论教学,进一步熟悉外部中断INT0和INT1的基本概念和原理;2.理解掌握定时器控制寄存器TCON、中断允许控制寄存器IE、中断优先级别控制寄存器IP的功能和设置方法;3.了解并熟悉MCS-51单片机外部中断INT0和INT1的电路设计特点和应用特点;4.能够针对MCS-51单片机,进行外部中断INT0和INT1的初始化设置,能够完成简单中断服务程序的功能应用设计。
5.进一步熟悉、掌握MCS-51单片机指令系统和应用软件的编程方法和技巧。
二、实验设备、材料1.微型计算机(PⅣ以上);2.编程、汇编与模拟平台软件Keil uVision4;3.电子技术专业仿真软件protues运行平台;4.单片机实训开发电路板。
三、实验内容和实验步骤1.系统仿真电路参考原理图12.系统参考源程序1(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV P2,#0FEHMOV A,#0FEHSJMP $IN0:CLR EARL A //左移MOV P2,ASETB EARETIIN1:CLR EARR A //右移MOV P2,ASETB EARETIEND3.系统参考源程序1(用8位发光二极管代表8位二进制数,用INT0控制加1递增,用INT1控制减1递减)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV R0,#00HMOV A,#00HMOV P2,ASJMP $ IN0:INC R0MOV A,R0CPL AMOV P2,ARETIIN1:INC R0MOV A,R0CPL AMOV P2,ARETIEND4.系统参考源程序2(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址CLR F0RETIORG 0013H ;INT1中断入口地址SETB F0RETIORG 0030HMAIN:MOV P2,#0FFHMOV TCON,#05HMOV IE,#85HMOV A,#7FHRRR:JNB F0,LLLRR A //右移MOV P2,AACALL DELAYSJMP RRRLLL:JB F0,RRRRL A //左移MOV P2,AACALL DELAYSJMP LLLDELAY:MOV R7,#8FH ;延时程序DELAY1:MOV R6,#0FFHDELAY2:MOV R5,#02HDELAY3:DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6 外部中断实验
(仿真部分)
一、实验目的
1. 学习外部中断技术的基本使用方法。
2. 学习中断处理程序的编程方法。
二、实验内容
在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。
P1.0~ P1.3接LED灯,以显示计数信号。
三、实验说明
编写中断处理程序需要注意的问题是:
1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。
3.INT0和INT1分别接单次脉冲发生器。
P1.0~ P1.3接LED灯,以查看计数信号.
四、硬件设计
利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。
设计出如下的硬件电路。
晶振频率为12MHz。
五、参考程序框图
开始
设置有关中断控制寄存器
开外中断INT0、INT1
设置P1.0~ 3初始状态
显示循环等待中断
INT0中断入口
计数加一
保护现场
恢复现场
中断返回
主程序框图INT0中断处理程序框图
实验6 外部中断实验
(实验箱部分)
1.实验目的
认识中断的基本概念
学会外部中断的基本用法
学会asm和C51的中断编程方法
2.实验原理
图按键中断
【硬件接法】
P1.1控制LED,低电平点亮
P3.3/INT1接按键,按下时产生低电平
【运行效果】
程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。
8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。
/INT0和/INT1中断的入口地址分别是0003H和0013H。
TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。
实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。
在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。
如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。
下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平,这是一个重要的技巧。
3. 实验步骤
●参考实验例程,自己动手建立Keil C51工程。
注意选择CPU类型。
Philips半导体的
P89V51RB2。
●编辑源程序,编译生成HEX文件。
●ISP下载开关扳到“00”,用Flash Magic软件下载程序HEX文件到MCU BANK1,运行。
运行Flash Magic软件。
各步骤操作如下:
Step 1:
COM Port:选择实际使用的串行口,通常为COM1;
Baud Rate:波特率不可设置得过高,推荐用9600;
Device:请选择正确的型号89V51RB2;
Interface:选择None(ISP)。
Step 2:请勾中“Erase blocks used by Hex File”。
Step 3:装入你的程序文件,注意必须为HEX格式。
Step 4:
请勾中“Verify after programming”(编程后校验);
对其它几项如果不了解,请不要勾中。
Step 5:
请先给电路板上电,同时按住复位键不松手,然后点击Flash Magic软件的“Start”按钮。
当出现提示您复位的对话框时再松开复位键,ISP下载过程开始。
如果您的电路板没有设置复位键,可以先点击“Start”,然后给电路板上电。
Step 6:运行程序
ISP下载结束后,按一次复位键或者重新上电程序即开始运行。
运行程序,芯片工作于中断方式,按下按键K2(接P3.3/INT1管脚)后,LED点亮,1.5秒后自动熄灭。