STC12C54XX外部中断INT0-INT1 例程
单片机外部中断实验报告
实验三外部中断实验报告班级:学号:姓名:教师:一、实验目的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管D1~D8。
每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3口是8位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0请求输入线P3.3 INT1 外部中断1请求输入线P3.4 T0定时器/计数器T0外部计数器脉冲输入线P3.5 T1定时器/计数器T1外部计数器脉冲输入线P3.6 WR外部数据存贮器写脉冲输出线P3.7 RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断0 03H定时器/计数器T1溢出中断0BH外部中断1 13H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EA ES ET1 EX1 ET0 EX0(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。
(2)CPU开中断(EA=1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCON:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0是选择文字则外部中断0请求(INT0)边沿触发方式或电平触发方式的控制位。
前一方式IT0=1,后一方式IT0=0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式IT1=0。
当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
51单片机每个外部中断和定时器中断 应用模版
第一步,中断配置/************************************************************函数名:INT0_Config功能:配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。
输入参数:输出参数:************************************************************/void INT0_Config(void){IT0=1; //中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变);EX0=1; //外部中断0的中断开关,每个中断源都有自己的中断开关。
EA=1; //打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。
}第二步,中断服务,也就是cpu被中断后所要做的事。
/************************************************************函数名:Isr_INT0功能:中断服务输入参数:输出参数:************************************************************/void Isr_INT0() interrupt 0 //interrupt表明该函数是中断函数,后面的标号表示是哪个中断源产生的中断。
{ //(INT0)为0, Timer0为1,INT1为2,Timer3,串口中断为4。
// Add your code here //自己想要中断后发生的程序}第三部主函数/************************************************************函数名:main功能:主函数输入参数:输出参数:************************************************************/void main(){INT0_Config();//调用这个函数来配置外部中断while(1){//Add your code here//CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,//执行完成后,返回从断点处继续往下执行原来的代码。
宏晶科技STC12C5410AD系列单片机器件手册说明书
STC12C5410AD系列单片机器件手册 --- 1个时钟/机器周期8051 ---无法解密 ---低功耗,超低价 ---高速,高可靠 ---强抗静电,强抗干扰STC12C5412, STC12C5412ADSTC12C5410, STC12C5410ADSTC12C5408, STC12C5408ADSTC12C5406, STC12C5406ADSTC12C5404, STC12C5404ADSTC12C5402, STC12C5402ADSTC12LE5412,STC12LE5412ADSTC12LE5410,STC12LE5410ADSTC12LE5408,STC12LE5408ADSTC12LE5406,STC12LE5406ADSTC12LE5404,STC12LE5404ADSTC12LE5402,STC12LE5402AD技术支援:宏晶科技(深圳) www.MCU-Memory.com support@MCU-Memory.comUpdate date: 2006-4-15 (请随时注意更新)宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C5410AD系列 1T 8051单片机中文指南2领导业界革命 覆盖市场需求宏晶科技是新一代增强型8051单片机标准的制定者,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆盖全国。
在保证质量的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。
在广受欢迎的STC89C51全系列单片机的基础上,现全力推出“1个时钟/机器周期”的单片机,全面提升8051单片机性能。
欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。
STC 12C5410AD系列 1T 8051 单片机 新客户请直接联系深圳以获得更好的技术支持和服务 欢迎海内外厂家前来洽谈合作 传真至深圳申请STC单片机 样片及ISP下载线/编程工具●高速:1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍●宽电压:5.5~3.4V,2.0~3.8V(STC12LE5410AD系列)●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)●工作频率:0~35MHz,相当于普通8051:0~420MHz ---实际可到48MHz,相当于8051: 0~576MHz●时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置●12K/10K/8K/6K/4K/2K字节片内Flash程序存储器,擦写次数10万次以上●512字节片内RAM数据存储器●芯片内E2PROM功能●ISP / IAP,在系统可编程/在应用可编程,无需仿真器●10位ADC,8通道,STC12C2052AD系列为8位ADC●4通道捕获/比较单元(PWM/PCA/CCU),STC12C2052AD系列为2通道 ---也可用来再实现4个定时器或4个外部中断(支持上升沿/下降沿中断)●2个硬件16位定时器,兼容普通8051的定时器。
单片机外部中断
0003H 0013H来自五、外部中断应用实例例:利用外部中断INT0控制流水灯。具体 要求:单片机得电后,LED灯从左向右顺 序点亮;当产生外部中断后,全部LED灯 开始闪烁,闪烁3次后,中断停止,流水 灯继续流水。
(1)硬件接线图如下图所示:
VCC
R1
100
R2
100
R3
100
R4
100
R5
100
D2
D3
D4
D5
D6
D7
D8
18
XTAL2
9
RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51
K1
(2)参考程序如下:
ORG 0000H ; 复位入口 LJMP QQ ;转到初始化程序 ORG 0003H ;外部中断1入口地址 LJMP EXT0 ; 转移到中断处理程序 QQ:MOV A,#0FEH ;把数据11111110送进累加器A HH: SETB IT0 ;外部中断触发方式选择 SETB EX0 ;允许外部中断 SETB EA ;允许总中断 MOV P0,A ;把A的数据送到P0口,点亮一个LED ACALL YY ;调用延时子程序 RR A ;A的数据左移一位 LJMP HH ;转移到HH
EXT0: MOV P0,#0FFH ACALL YY MOV P0,#00H ACALL YY MOV P0,#0FFH ACALL YY MOV P0,#00H ACALL YY MOV P0,#0FFH ACALL YY MOV P0,#00H ACALL YY RETI
外部中断0实验
实验三外部中断0实验一.实验目的1.学习8051单片机的中断原理及编程方法;2.掌握中断处理程序的编程方法和调试方法。
二.实验说明中断服务程序入口地址两相邻中断服务程序起始地址之间只相距8 个字节,而一般序长度会超过8 个字节,为了避免和下一个中断地址相冲突,常用一条跳转指令,将程序转外的某一区间。
三.实验原理:MCS-51中断系统有5个中断请求源:① /INT0----外部中断0请求,低电平有效。
通过P3.2引脚输入。
② /INT1 ----外部中断1请求,低电平有效。
通过P3.3引脚输入。
③ T0 ----定时器/计数器0溢出中断请求。
④ T1 ----定时器/计数器1溢出中断请求。
⑤ TX/RX ----串行口中断请求。
当串行口完成一帧数据的发送或接收时,便请求中断。
四.实验电路图及参数对照表中断允许寄存器IE:中断优先级寄存器IP:中断入口地址表:P1口接发光二极管,外部中断INT0(P3.2)接拨动开关K01。
如果是下载式实验仪,在程序装载前,必须使P3.2口的拨动开关处于高电平状态。
六.实验流程:七、实验电路图循环左移一次外部中断0入口保护现场恢复现场中断返回开始开外部中断点亮所有发光二级管设置初始状态设置中断控制寄存器中断允许将实验程序打入KEIL软件,然后编译连接九.进行仿真,仿真结果如下图;十:实验源程序ORG 0000HAJMP MAINORG 0003H址AJMP IINT0处ORG 0030HMAIN: MOV IE,#10000001BCLR IT0LOOP: MOV P1,#00HAJMP LOOPIINT0: MOV R0,#08HMOV A,#0FFHCLR CIINT01: RLC AMOV P1,ACALL DELAYDJNZ R0,IINT01RETI;********************************************************************** *******; /*延时子程序*/;********************************************************************** *******DELAY: MOV R5,#10sDELAY1: MOV R6,#50DELAY2: MOV R7,#250sDJNZ R7,$DJNZ R6,DELAY2sDJNZ R5,DELAY1sRET ;END十一.实验总结在本实验中,我深入了解了中断的工作原理,及其作用,中断对于单片机的实时控制,软/硬件错误检查等有着重大的意义。
51单片机0号与1号外部中断实例
51单⽚机0号与1号外部中断实例中断的概念CPU在处理某⼀事件A时,发⽣了另⼀事件B请求CPU迅速去处理(中断发⽣); CPU暂时中断当前的⼯作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地⽅继续处理事件A(中断返回),这⼀过程称为中断。
我第⼀眼看见这东西,感觉跟函数嵌套调⽤的过程特别像。
中断允许控制CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的EX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位;EX1(IE.2),外部中断1允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(IE.4),串⾏⼝中断允许位;EA (IE.7), CPU中断允许(总允许)位中断请求标志IT0(TCON.0),外部中断0触发⽅式控制位。
当IT0=0时,为电平触发⽅式。
当IT0=1时,为边沿触发⽅式(下降沿有效)。
IE0(TCON.1),外部中断0中断请求标志位。
IT1(TCON.2),外部中断1触发⽅式控制位。
IE1(TCON.3),外部中断1中断请求标志位。
TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
中断优先级原则CPU同时接收到⼏个中断时,⾸先响应优先级别最⾼的中断请求。
正在进⾏的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进⾏的低优先级中断服务,能被⾼优先级中断请求所中断中断响应条件中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。
以上三条同时满⾜时,CPU才有可能响应中断以外部中断0为例主程序中需要有以下代码:EA=1;//打开总中断开关EX0=1;//开外部中断0IT0=0/1;//设置外部中断的触发⽅式( 0为低电平, 1为下降沿 )接下来。
我们⽤K3独⽴按键,控制led的状态翻转#include <reg52.h>/************ 0号中断控制led灯状态翻转 ***********/sbit LED = P0^0;sbit k3 = P3^2; //0号中断typedef unsigned int u16;typedef unsigned char u8;void delay( u16 i ){while( i-- );}void int0_init(){ //开启0号外部中断的条件EA = 1; //总中断开关EX0 = 1; //允许外部中断0IT0 = 1; //外部中断0的触发⽅式}void trigger_int0() interrupt 0{delay( 1100 );if( k3 == 0 ) { //k3按下LED = ~LED;}}void main(){int0_init();while( 1 );}接线:⽤杜邦线连接K3与P3的2脚。
用按键(采用外部中断0或1的方式)控制彩灯的运行
实验一标志寄存器实验目的:用按键(采用外部中断0或1的方式)控制彩灯的运行。
实验方法:1、通过在在中断过程中,设置标志变量flag(取值为0表示左移,1表示右移,2自定义)来判断按键被按下,每次按下切换一种显示方式。
2、当flag>2,则被清零,主程序按照flag的取值,分别执行不同的显示方式。
3、为了确保外部中断信号可靠,可对按键采取软件消抖处理。
实验程序编写:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint flag=0;uchar a[]={0xe7,0xdb,0xbd,0x7e};uchar LED=0xfe;uint i;void delay(unsigned int x) //定义延时函数{uchar i;while(x--){for(i=0;i<125;i++) //通过循环实现延迟功能{;}}}void intersvr0(void) interrupt 0 using 1 //INTO中断服务程序{flag=flag+1;if (flag>=3)flag=0;}void main(void){P0=0x00; //初始化p0口保持LED全亮EA=1; //开启中断总控制位IT0=1; //开启外部中断0控制位,采用边沿触发EX0=1; //允许中断0中断while(1){if (flag==0){P0=0x01;{LED=_crol_(LED,1);P0=LED;delay(500);}}if (flag==1){P0=0x80;{LED=_cror_(LED,1); P0=LED;delay(500);}}if (flag==2){{for (i=0;i<3;i++){LED=a[i];P0=LED;delay(500);P0=0xff;}}}}; //判断是否有按键按下,若有按键按下执行中断服务程序}实验结果:当运行后,通过按动一个键,彩灯在左移,右移和自定义花样(查表法)三种闪亮方式之间顺序切换。
单片机C语言外中断程序
现在我们写一个单片机的外中断程序在写中断程序之前,先要了解一下单片机中的中断寄存器。
在单片机的256B的片机RAM中,其高128位中分布着很多的特殊功能寄存器我们用中断允许寄存器IE来控制单片机的中断程序其中的位有其不同的意义:EA:中断总允许位,当EA为0时,中断是不允许的,当EA为1时,中断总允许。
EX0(EX1):外部中断允许位当EX0=0时,外部中断禁止;当EX0=1时,外部中断开启。
ET0(EX1):定时/计数中断允许控制位当ET0(ET1)=0 禁止定时(或计数)中断当ET0(ET1)=1 允许定时(或计数)中断ES:串行中断允许控制位当ES=0时,串行中断禁止当ES=1时,串行中断开启ET2:定时器2中断允许寄存位IP中断优先级控制寄存器寄存器地址B8H,位寻址BFH~B8H。
PT2:定时器2优先级设定位PS:串行中断优先级设定位PT1:定时中断1优先级设定位PT2:定时中断2优先级设定位PX1:外中断1优先级设定位PX2:外中断2优先级设定位TCON定时器控制寄存器:TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。
TR0(TR1)——定时器运行控制位当TR0(TR1)=0 停止定时器/计数器工作当TR0(TR1)=1 启动定时器/计数器工作IE0(IE1)——外中断请求标志位当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。
在中断响应完成后转向中断服务时,再由硬件自动清0。
IT0(IT1)——外中断请求信号方式控制位当IT0(IT1)=1 脉冲方式(后沿负跳有效)所谓负跳变,即从高电平跳到低电平。
当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。
外部中断操作(1)IE寄存器中的EA=1时,中断总允许打开(2)IE寄存器的EX0=1,打开外中断0允许。
(3)查询TCON的IE0,如果该位为1,那么说明有外中断请求下面写一个简单的中断程序:经测试,上述代码没有问题。
用按键(采用外部中断0或1的方式)控制彩灯的运行
实验一标志寄存器实验目的:用按键(采用外部中断0或1的方式)控制彩灯的运行。
实验方法:一、通过在在中断过程中,设置标志变量flag(取值为0表示左移,1表示右移,2自定义)来判断按键被按下,每次按下切换一种显示方式。
二、当flag>2,则被清零,主程序按照flag的取值,分别执行不同的显示方式。
三、为了确保外部中断信号可靠,可对按键采取软件消抖处理。
实验程序编写:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint flag=0;uchar a[]={0xe7,0xdb,0xbd,0x7e};uchar LED=0xfe;void delay(unsigned int x) //定义延时函数{uchar i;while(x--){for(i=0;i<125;i++) //通过循环实现延迟功能{;}}}void intersvr0(void) interrupt 0 using 1 //INTO中断服务程序{flag=flag+1;if (flag>=3)flag=0;void main(void){P0=0x00; //初始化p0口保持LED全亮EA=1; //开启中断总控制位IT0=1; //开启外部中断0控制位,采用边沿触发EX0=1; //允许中断0中断while(1){if (flag==0){P0=0x01;{LED=_crol_(LED,1);P0=LED;delay(500);}}if (flag==1){P0=0x80;{LED=_cror_(LED,1); P0=LED;delay(500);}}if (flag==2){{for (i=0;i<3;i++) {LED=a[i];P0=LED;delay(500);P0=0xff;}}}}; //判断是否有按键按下,若有按键按下执行中断服务程序}实验结果:当运行后,通过按动一个键,彩灯在左移,右移和自定义花样(查表法)三种闪亮方式之间顺序切换。
51单片机中断实验连接图及程序
实验五、中断实验
1、实验目的:了解单片机的中断系统,学习汇编语言中断程序的编程方法与调试技巧。
2、实验内容:单片机的INT0和INT1分别接了两个外部中断,当INT0引脚有中断时,点亮发光二极管D1,当INT1引脚有中断时,点亮发光二极管D2。
3、实验程序框图
4、实验电路图
5、实验步骤:SW1从高电平变为低电平时,点亮发光二极管D1;SW2从高电平变为低电
平时,点亮发光二极管D2。
调试程序,并运行。
观察发光二极管点亮情况。
6、思考:程序中的外部中断的触发方式是哪一种?修改程序使外部中断的触发方式改变。
7、程序清单:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP SERVE
ORG 0013H
AJMP SERVE1
MAIN: ORL P1 , #0FFH ;;灯全灭,准备读入SETB IT0; ;选择边沿触发方式
SETB EX0; ;允许INT0中断
SETB IT1; ;选择边沿触发方式SETB EX1; ;允许INT0中断
SETB EA ;;CPU开中断
AJMP $ ;;等待中断
;中断服务子程序为:
SERVE: MOV A,#0F7H
MOV P1,A
RETI
SERVE1: MOV A,#0EFH
MOV P1,A
RETI。
中断INT0
1、外部中断利用中断INT0计数,并显示计数值,INT0为P3.2口,中断的接线图参考下图:外部中断有INT0和INT1两个,CPU通过INT0引脚(12脚,即P3.2口)及INT1引脚(即13脚,即P3.3口)即可接受外部中断的请求。
外部中断信号的采样方式可分电平触发(低电平触发)及边缘触发(负边缘触发)两种。
通过TCON寄存来控制(见第二点)。
(1)中断允许中断启用寄存器IE,可看作开闭中断功能的开关,各个位的功能见下图:(3)中断向量表中断编号中断源名称中断向量地址- 系统复位0x000 第一个外部中断INT0 0x031 第一个定时器/计数器中断TF0 0x0B2 第二个外部中断INT0 0x133 第二个定时器/计数器中断TF1 0x1B4 串行口中断RI/TI 0x235 第三个定时器/计数器(8052)TF2/EXF2 0x02B上表所示为8051/8052的中断向量。
当发生中断时,程序员将跳至其对应的中断向量地址,执行该位置上的程序。
对于C语言程序,可心不必知道其真实地址,程序设计者只要知道发生中断时,将会执行其中断程序即可。
当然,在中断也程序的定义上,必须明确定义该中断子程序属于哪个中断的中断也程序。
(4)中断子程序格式void 中断子程序名称(void)interrupt中断编号using 寄存器组如:void my_INT0 interrupt 1{}#include <AT89X52.H>unsigned char code table[]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff}; unsigned char count;unsigned int f,e;void delay10ms(void){unsigned char i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}//***显示子程序**///void disp_count(){ e=count;f=e%10; //个位P0 =table[f];P2 = 0x7f;delay10ms();f=e/10; //十位P0 =table[f];P2 = 0xbf;delay10ms() ;}void main(void){ // IT0=0; //低电平触发IT0=1; //下降沿触发EA=1; ///允许中断EX0=1; ///开外部中部INT0while(1){ disp_count();}}/********************************************************* INT0中断函数*********************************************************/void counter(void) interrupt 0{char x;EX0=0;count++;disp_count();EX0=1;}/********************************************************/练习:1.中断前,程序执行P1口的灯从L1~L8灯顺序点亮,如此不断循环。
浅谈51单片机2个外部中断的应用案例
浅谈51单片机2个外部中断的应用案例51单片机是一种常见的微控制器,具有丰富的外部中断功能。
在本文中,将浅谈51单片机中两个外部中断的应用案例,旨在帮助读者更好地理解和应用该功能。
外部中断是指通过外部信号触发单片机的中断执行程序。
51单片机具有2个外部中断引脚,分别是INT0和INT1,它们可以用于各种不同的应用。
下面将介绍两个典型的外部中断的应用案例。
1.停车场车位计数器停车场车位计数器可以利用51单片机的外部中断功能来实现。
假设停车场有3个车位,当车辆入场时,外部中断INT0触发,计数器加1;当车辆出场时,外部中断INT1触发,计数器减1、通过读取计数器的值,可以实时查看停车场内的剩余车位。
具体实现的步骤如下:1)初始化外部中断INT0和INT1,设置为下降沿触发。
2)将车位计数器初始化为0。
3)当接收到INT0中断信号时,车位计数器加14)当接收到INT1中断信号时,车位计数器减15)在主循环中,可以通过查询车位计数器的值来实时显示剩余车位数。
这个应用案例使得车辆管理变得更加智能化和便捷,方便停车场管理员实时了解停车位的使用情况。
2.控制智能家居设备智能家居设备的控制可以利用51单片机的外部中断功能来实现。
例如,当外部中断INT0触发时,可以控制家居设备的开关状态,比如打开或关闭灯光、电器等。
具体实现的步骤如下:1)初始化外部中断INT0,设置为下降沿触发。
2)在INT0中断服务程序中,判断当前设备的开关状态。
如果是关闭状态,则打开设备;如果是打开状态,则关闭设备。
3)在主循环中,可以通过查询当前设备的开关状态来实时显示设备状态。
这个应用案例使得智能家居设备的控制更加智能化和灵活,用户可以通过触发外部中断来实现对设备的远程控制。
总结:以上是两个常见的51单片机外部中断的应用案例。
通过合理应用外部中断功能,能够实现更多智能化、便捷化的功能,提高系统的可靠性和实用性。
希望本文能够对读者有所帮助,并激发更多的创意和思考。
第十九课外部中断0的使用
RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行 帧,由硬件置位 RI。同样,RI 必须由软件清除。
- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 3页
外部中断 0 的使用
电子园
TI(SCON.1),串行口发送中断标志位。当 CPU 将一个发送数据写入串行口发送缓冲 器时,就启动了发送过程。每发送完一个串行帧,由硬件置位 TI。CPU 响应中断时,不能 自动清除 TI,TI 必须由软件清除。
void Int0_Init(void);
//外部中断 0 初始化
void Delayms(unsigned char ucDelay); //延时
- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 5页
外部中断 0 的使用
电子园
//主函数 void main(void) {
2、 电子园分站点
电子园论坛
电子园百科
电子园商城
电子园家园
电子园网址
3、 电子园子站点
外部中断 0 的使用
电子园
51 单片机进阶篇
---外部中断 0 的使用
本文作者:Cepark 更新时间:2010/08/16 作者博客:
- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 1页
外部中断 0 的使用
电子园
中断系统是单片机中一个非常重要的概念,所有的单片机系统中对事件的实时处理都是 通过中断来完成的。中断可以随时停止 CPU 正在处理的工作,转而去处理中断服务程序, 中断服务程序完成以后,再返回原来断点处继续执行。
要了解单片机的中断系统,首先要了解中断源。
外部中断实验
外部中断实验一、实验目的1. 掌握51单片机外部中断的应用。
2. 掌握中断函数的写法。
3. 掌握XL400实验板的使用。
二、实验内容1. 用外部中断改变流水灯的方式。
2. 用外部中断0测量负跳变信号的累计数,同时在八位LED数码管上显示出来。
三、实验步骤说明参考实验指导书第一部分实验工具简介中,XL400实验板的使用。
着重掌握外部中断0和外部中断1,本此实验使用外部中断0。
外部中断0请求,由P3.2管脚输入,通过IT0位来决定是低电平有效还是下降沿有效。
一旦输入信号有效,即向CPU申请中断,并建立IE0中断标志。
以外部中断0为例,开放中断源采用以下语句:EA=1; //开放中断总允许位EX0=1; //开放外部中断0允许位IT0=1; //置外部中断为边沿(下边沿)触发方式中断函数结构如下:void int_0() interrupt 0 // interrupt 0表示该函数为中断类型号0的中断函数{}1. 用外部中断改变流水灯的方式。
中断前:实验板上P20~P27的8个显示灯全亮。
外部中断0:实验板上P20~P27的左右4个显示灯闪烁循环8次。
外部中断1:实验板上P20~P27的8个显示灯依次循环点亮。
中断的方式:用导线或者金属触碰AT89S52芯片P3.2管脚。
改变中断优先级和保护现场,观察运行结果2. 用外部中断0测量负跳变信号的累计数,同时在八位LED数码管上显示出来。
跳变信号由P3.0给出(提示:P3_0=1;延时;P3_0=0),跳变信号加之管脚P3.2。
实验时,可用导线或者导电金属将AT89S52芯片P3.0和P3.2管脚相连即可。
实验板XL400的8位数码管:0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff为0,1,2,3,4,5,6,7,8,9,关显示,数码管码表。
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe 为8位数码管位选码。
最新外部中断0和1控制双向流水灯设计
外部中断0和1控制双向流水灯设计外部中断0和1控制双向流水灯设计一.外部中断的基本知识中断是为单片机具有对外部或内部的事件实时处理而设置的,中断功能是单片机最重要的功能之一。
51打片机内部共有5个中断源,外部中断0,外部中断1,定时器/计数器0中断,定时器/计数器1中断,串行口中断。
例:EX0为外部中断0允许位,EX0=1,打开外部中断0中断;EX0=0,关闭外部中断0中断。
IT0为外部中断0触发方式选择位,IT0=0,为电平触发方式,每个机器周期的S5P2采样INT0引脚,若INT0为低电平,则置1,否则清0;IT0=1,为跳变沿触发方式,当一个机器周期采样到INT0为低电平时,则IE1置1.IE1=1,表示外部中断正在向CPU申请中断。
当CPU响应中断,转向中断服务程序时,该位由硬件清0。
二.双向流水灯程序设计#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar led1=0xfe;uchar led2=0x7f;void delay(uint x) //延时子程序{uint i,j;for(i=x;i>0;i--)for(j=120;j>0;j--);}void main() //main主程序{EA=1; //开总中断EX0=1; //开外部中断0EX1=1;IT0=0;IT1=0; //外部中断1的处罚方式为电平触发方式while(1);}void int0()interrupt 0{uint a;for(a=0;a<8;a++){P1=led1;delay(500);led1=_crol_(led1,1); //左移库函数P1=0xff;}}void int1()interrupt 2{uint a;for(a=0;a<8;a++){P1=led2;delay(500);led2=_cror_(led2,1); //左移库函数}P1=0xff;}三.工程及模拟仿真截图四.心得体会学习,我注重的是过程,当然,我也相信,在学习的过程中只要脚踏实地的去做,就会有收获。
51单片机曼彻斯特码译码源程序
C51 Manchester译码源程序C51曼彻斯特码译码源程序2009-04-30 11:14/*manchester编码方式:0为10 1为01,如果与其相反则需要做相应的修改。
适用于125KHz非接触式ID卡,EM4100兼容格式ID卡(64bits, Manchester编码)MCU:stc12c54xxcrystal:11.0592M使用资源:外部中断0(INT0)+PCA0*/#include <stc12c5410ad.h>#include <stdio.h>#include<intrins.h>#define Channe256uS_H 0x00 //模块60mS 定时常数高位#define Channe256uS_L 0xEC //模块60mS 定时常数低位#define uint8 unsigned charsbit RFID_DATA = P3^2; //外部中断口接收数据/*/函数申明 */void start_Read() ;void Data_reveice() ;void Lmove_bite() ;uint8 find_head() ;uint8 Data_L_check() ;uint8 Data_R_check() ;void get_data();uint8 Data_Sever() ;void Get_EffectData(uint8 edata) ;void Init_PCA0();void DAT_Change(uint8 dat[]);void init_dev(void);uint8 tcount ;// 定时中断计数uint8 count ;//接收数据位数计数uint8 t_count ;//获得数据及校验变量。
uint8 temp ;// 临时变量uint8 temp_buf[16] ;//128个Machester位 55个数据位缓冲区。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;---------------|-------|---------------|--------------
delay_10ms: ; 按键去干扰延时过程
MOV R7, #200
delay_10ms_LP:
DJNZ R6, delay_10ms_LP
DJNZ R7, delay_10ms_LP
RET
; ####################################################
END
; 特殊功能寄存器地址定义
;
;---------------|-------|---------------|--------------
ORG 0000H ; 系统复位地址
JMP start
ORG 0003H ; INT0服务入口地址
JMP INT0_SVR ; INT0中断服务程序
; 引脚电平高(松开按键)执行中断服务指令
;
CPL P3.7 ; 通过接在P3.7引脚上的LED测试中的响应否
INT1_SVR_END:
RETI ; 中断返回
; *****************************************************
; 10ms延时:系统时钟5Mhz时,每个时钟周期0.2uS,需要50000个时钟
; 适用于按键的中断例程:用延时消除按键抖动,
; 查询引脚电平,松开按键后再执行中断服务指令,避免重复进入中断
;---------------|-------|---------------|--------------
INT0_SVR:
CALL delay_10ms ; 延时10ms,屏蔽按键抖动
ORG 0013H ; INT1服务入口地址
JMP INT1_SVR ; INT1中断服务程序
ORG 40H ; 程序指令开始地址
; *****************************************************
;---------------|-------|---------------|--------------
; 外部中断INT1服务
;---------------|-------|---------------|--------------
INT1_SVR:
CALL delay_10ms ; 延时10ms,屏蔽按键抖动
JNB P3.3, INT1_SVR ; 引脚低电平,循环等待变高
; STC12C54XX外部中断INT0/INT1 例程
; 外部中断引脚/地址:
; INT0<-->P3.2 / 中断地址=03H
; INT1<-->P3.3 / 中断地址=13H
;
; ####################################################
JNB Байду номын сангаас3.2, INT0_SVR ; 引脚低电平,循环等待变高
; 引脚电平高(松开按键)执行中断服务指令
;
CPL P3.7 ; 通过接在P3.7引脚上的LED测试中的响应否
INT0_SVR_END:
RETI ; 中断返回
; *****************************************************
MAIN_TEST:
NOP
JMP MAIN_TEST
; *****************************************************
;---------------|-------|---------------|--------------
; 外部中断INT0服务
start:
SETB EX0 ; 允许INT0中断
SETB EX1 ; 允许INT1中断
SETB EA ; 全局中断允许
; *****************************************************
;---------------|-------|---------------|--------------