找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1560|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机中断分析

[复制链接]
跳转到指定楼层
楼主
ID:166217 发表于 2017-2-23 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*   此程序为中断试验程序,主程序是数码管静态显示0~F。
     进入中断后d1(P1^0)为低电平,两秒后变为高电平。
     中断过程建议使用LED发光二极管实验效果较好  
整理  杨浩浩
*/   


/*程序实验现象:主程序运行时数码管动态显示,当P3^4
(中断标志位,就像你的手机),在该程序中,中断方式
为低电平触发,提供低电平的事d2也就是(P1^1),当把
P1^1与P3^4链接在一起时,就相当于给P3^4给了一个低电平
(此时就像你的手机响了,你要去接电话),触发中断,主程序停止运行
开始执行中断程序(也就是这个函数内的程序void exter0() interrupt 0)
即就是,d1(P1^0)为低电平2秒,为了验证这个这个两秒的过程,
我们把P1^0口接上一个发光二极管(要求该发光二极管,为共阳链接,此时单片机输出2秒的低电平
与发光二极管的阴极链接,才会发光2秒)发光两秒,更好地展现实验效果
*/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0;
sbit d2=P1^1;
char code table[]={
0x3F, 0x06, 0x5B, 0x4F,
0x66,        0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C,
0x39, 0x5E, 0x79, 0x71};
char num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);

}
void main()
{
IT0=0;        //低电平触发
EA=1;        //开总中断
EX0=1;        //打开中断0,允许
d2=0;

       
       
while(1)
{
  for(num=0;num<16;num++)
  {
   P0=table[num];
   delay(2000);
  }
}
}
void exter0() interrupt 0
{
d1=0;
delay(2000);
d1=1;
       
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表