欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > 单片机外部中断实验心得体会

单片机外部中断实验心得体会

时间:2017-01-02 01:17

51单片机外部中断实验程序

请问你这个触发中断是一个按键

你触发的方式是长时间按下还是瞬间按下

我觉得你应该是长时间按下的。

回到正题,你这个中断服务函数里只有一句代码,那么中断服务函数执行的速度会很快的,所以如果你只按了一下的话那么看起来就感觉没有执行一样,更重要的是你这个中断服务函数里没有对按键进行消抖,同时也没有关闭中断,这就可能会引起,当你瞬间按下中断按钮后,其实中断被执行了多次,而当你长时间按下中断按钮后,那么程序会不停的在main和中断服务函数之间快速不停的切换,这就导致了main函数断断续续的运行,看起来就像是main运行变慢了,其实是因为程序需要不停的进入中断服务函数,所以看起来就像运行变慢一样。

改进建议:在中断服务函数里加入按键消抖的语句,或是直接进入中断后关闭中断,处理完后再开启。

而且如果想明显的看到效果的话请在中断服务函数里加一些延时语句。

51单片机外部中断实验

实验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中断处理程序框图实验6外部中断实验(实验箱部分)1.实验目的认识中断的基本概念学会外部中断的基本用法学会asm和C51的中断编程方法2.实验原理图按键中断【硬件接法】P1.1控制LED,低电平点亮P3.3\\\/INT1接按键,按下时产生低电平【运行效果】程序工作于中断方式,按下按键K2后,LED点亮,1.5秒后自动熄灭。

8051单片机有\\\/INT0和\\\/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方

求大神帮忙解决下单片机外部中断实验的问题。

单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。

二、实验内容8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁(2)P3.2断开、P3.3合上时LED2闪烁(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁试编写C语言和汇编语言程序使用自然优先级就可以也可XO高级X1低级PX0=1PX1=0四、实验电路五、参考程序(自己完成)C程序:IncludeSbitP2_0=P2^0;SbitP2_1=P2^1;SbitP3_2=P3^2;SbitP3_3=P3^3;voiddelay02s(void)\\\/\\\/延时0.2秒子程序{unsignedchari,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}Voidmain{EA=1;EX0=1;EX1=1 ;ITO=1 ;IT1=1 ;PX0=1;PX1=0;While(1) ;}Voidint0(void)interrupt0{if(

P3_2){While(1){P2_0=1;delay02s();P2_0=0;delay02s();}}}Voidint1(void)interrupt2{if(

P3_3){While(1){P2_1=1;delay02s();P2_1=0;delay02s();}}}

c51单片机外部中断实验,,需要编写程序,,,急急急

具体的I\\\/O口你根据你的电路设置,数码管编码也是根据你自己的电路编码,我的学习板测试通过。

希望可以给你做个参考#include#define uint unsigned int #define uchar unsigned char uchar num1,num2,qian,bai,shi,ge;\\\/\\\/定义数据类型uint num;sbit k1=P3^2;\\\/\\\/外部中断按键sbit k2=P3^3;sbit LED1=P2^7;\\\/\\\/数码管第一位sbit LED2=P2^6;sbit LED3=P2^5;sbit LED4=P2^4;\\\/\\\/ 共阳数码管编码显示段码值0123456789ABCDEF- 这个根据电路实际情况编码 uchar code lednum[]={0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20, 0xA0,0x60,0x25,0x3C,0x23,0x34,0x74,0xF7,0xFF};void delay(uint);void display(uchar,uchar,uchar,uchar);void main(){ EA=1; \\\/\\\/开总中断 EX0 = 1; EX1 = 1; IT0 = 1; IT1 = 1; display(qian,bai,shi,ge); while(1) \\\/\\\/程序在这里不停的对数码管动态扫描同时等待中断发生 {display(qian,bai,shi,ge);\\\/\\\/调用数码管显示子函数 }}void display(uchar qian,uchar bai,uchar shi,uchar ge)\\\/\\\/显示子函数{ qian=num\\\/1000;\\\/\\\/千位分离 bai=num%1000\\\/100; \\\/\\\/百位分离 shi=num%100\\\/10;\\\/\\\/十位分离 ge=num%10;\\\/\\\/个位分离 P0 =lednum[qian]; \\\/\\\/取显示数据,段码十位 LED1=0; \\\/\\\/点亮LED1(第一位) delay(5); \\\/\\\/延时 LED1=1; \\\/\\\/熄灭LED1 P0=lednum[bai]; \\\/\\\/取显示数据,段码个位 LED2=0; \\\/\\\/点亮LED2(第二位) delay(5); \\\/\\\/延时 LED2=1; \\\/\\\/熄灭LED2 P0 =lednum[shi]; \\\/\\\/取显示数据,段码十位 LED3=0; \\\/\\\/点亮LED3(第三位) delay(5); \\\/\\\/延时 LED3=1; \\\/\\\/熄灭LED3 P0=lednum[ge]; \\\/\\\/取显示数据,段码个位 LED4=0; \\\/\\\/点亮LED4(第四位) delay(5); \\\/\\\/延时 LED4=1; \\\/\\\/熄灭LED4 }void delay(uint z) \\\/\\\/带参数延时子函数{ uint x,y; for(x=z;x>0;x--) \\\/\\\/z=200ms,即延时约200ms for(y=110;y>0;y--);}void X0_INT() interrupt 0\\\/\\\/外部中断0 { num++; \\\/\\\/按键key1按下时数码管计数器加1 } \\\/\\\/------------------------------------------void X1_INT() interrupt 2\\\/\\\/外部中断1{ num--; \\\/\\\/按键key2按下时数码管计数器减1}

单片机外部中断的问题

你在dingshizhongduan1 () interrupt 1 前面加一个 void 然后试一试,还有,你在主函数里面没有对THO和TLO初始化,最好和中断里面的初值一样,否则它无法计时的,希望这些可以帮到你,谢谢

单片机外部中断的问题

主程序、中断程序,都使用同一个延时子程序,互相干扰。

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片