c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的?
例如程序:
#include<reg52.h>
void main(void)
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
P0=0xff; //关闭所有P0口的LED灯
while(1); //无限循环,
}
void it0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
}
当有中断时,这个程序的执行过程是怎样的???
A1:从main开始,开放总中断,允许使用外中断,选择负跳变来触发外中断,到这时负跳变没来没就一直while(1),等待。来了后执行
void it0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P0=~P0; //每产生一次中断请求,P0取反一次。
}
A2:有中断时直接跑到中断服务去
|
A3:CPU会一直在检测是否有中断请求的。当收到中断请求EX 时,进行软件设置,开启总中断EA ,再设置中断的触发方式IT。 |
转载自:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=220199
外部中断定时器c语言程序详解
利用外部中断0,定时器0从数码管到流水灯显示
#include "reg52.h"//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include "intrins.h"

#define uint unsigned int
#define uchar unsigned char

uchar led,n,i,count=0;
uchar smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
uchar sm[]={0x00,0x01};//数码管扫描
uchar str[2];//显示两位数码管

/******************************************************************/
/* 延时函数声明 */
/******************************************************************/
/*void mdelay(uint t)
{
uchar n;
for(;t>0;t--)
for(n=0;n<125;n++)
{;}
}*/
/*大约一毫秒的延时函数*/
void mdelay(uint t)
{
uchar n;
while(t--)
{
for(n=0;n<123;n++)
{;}
}
}

/******************************************************************/
/* 主函数 1 */
/******************************************************************/
void main()
{
EA=1;//开总中断开关
EX0=1;//打开外部中断0
INT0=1;//触发方式为下降沿触发
TH0=0x3c;//设置初值
TL0=0xb0;
ET0=1;//打开定时器中断
TR0=1;//启动定时器
TMOD=0x01;//设置定时器0为工作方式1

while(1)
{
for(i=0;i<2;i++)//数码管显示数据
{
P1=0xff;
P2=sm[i];
P0=smg[str[i]];
mdelay(5);
}
}
}

void int0() interrupt 0
{
uchar c;
led=0xfe;
P2=0x00;
for(c=0;c<8;c++)//流水灯循环一次
{
P1=led;
led=_crol_(led,1);//左移函数
mdelay(1000);
}
}

void time0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
count++;
if(count==20)//延时一秒0-60显示
{
count=0;
str[0]=n/10;
str[1]=n%10;
n++;
if(n==60)
{
n=0;
}
}
}
- 10
本经验只供参考,如有不足,还请见谅。。。
转载自:https://jingyan.baidu.com/article/870c6fc304cff6b03ee4be45.html
c语言编写51单片机中断程序,执行过程是怎样的?的更多相关文章
- 51单片机中断interrupt……using……
51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using ...
- C语言编写的bmp读写程序
C语言编写的bmp读写程序 建议先把bmp的数据存储格式了解下 <span style="font-size:16px;">#include "Windows ...
- Windows程序执行过程
Windows应用程序: WinMain函数(入口函数): 1. 设计窗体类,注冊窗体类.WNDCLASS 2. 创建窗体,显示及更新窗体. 3. 消息循环. 窗体过程函数(回调函数):WindowP ...
- MFC程序执行过程剖析
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- MFC程序执行过程剖析(转)
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- Java程序执行过程及内存机制
本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和 ...
- ET 与RETI 基于51单片机中断跳出指令“RETI”浅议
最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”.在有过单片机中断编程经历者都知道当EA=1,ET0=1的 ...
- Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架
转自:https://toutiao.io/posts/0l7l7n/preview Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏 ...
- 【C语言】关于单片机中断详解
什么是中断?就是打断当前要做的事,转而去执行别的事情.比如小七我现在正在电脑前写帖子,突然老妈叫我帮她下楼拿点东西,于是我就收到了老妈给我的一个中断(可以叫做外部中断),当我去拿东西时,突然尿急(内部 ...
随机推荐
- 【Ajax】PHP中ajax的基本知识点
Ajax常用属性和方法: 属性: readyState: 0(开始创建ajax对象)1(调用open方法)2(调用send方法)3(正在返回数据)4(返回数据结束) responseText/resp ...
- 微信小程序开发教程(三)项目目录及文件构成
第二章我们已经创建了一个Hello WXapplet示例小程序.我们从文件目录结构来了解Hello WXapplet项目的构成. 目录结构显示,在小程序项目的根目录下面包含3个app开头的文件(app ...
- TZOJ 删除前导多余的*号
描述 规定输入的字符串中只包含字母和*号,编写程序使字符串中前导的*号不得多于n个:若多于n个,则删除多余的*号:若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除. 输入 输入数据包括一串 ...
- 微信小程序API·目录
网络 媒体 文件 数据缓存 位置 设备 界面 第三方平台 开放接口 数据 更新 多线程 监控 调试接口 日志
- yum出现的“UnicodeDecodeError: 'ascii' codec”问题解决
新装了CentOS 6.5系统,打算使用yum安装程序是出现了如下错误: Loading mirror speeds from cached hostfile Traceback (most rece ...
- Mysql 按条件排序查询一条记录 top 1 对应Mysql的LIMIT 关键字
项目中需要每次查询一个表中的最新的一条记录,表结构里面有日期字段.只需要显示一条记录. Mysql帮助文档里面的解释 3.6.2. 拥有某个列的最大值的行 任务:找出最贵物品的编号.销售商和价格. 这 ...
- spring融合activitymq-all启动报错的解决办法
报错信息: nested exception is java.lang.NoSuchMethodError: org.springframework.core.annotation.Annotated ...
- https://v2ex.com/t/170386
https://v2ex.com/t/170386 https://cnodejs.org/topic/5566952ad4ca459f5267ac59 https://segmentfault.co ...
- 子系统设计和FishiGUI的子系统设计
目的和问题: 除了依赖关系.还要规范操作系统适配层的全部接口.仅仅要操作系统适配层的接口在移植过程中始终保持稳定.框架层的设计和实现就不会收到影响.可是为了实现同一接口的目标,为了保证相同的功能接口能 ...
- docker实战——Docker本地私有镜像仓库Harbor搭建及配置
Harbor介绍 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registr ...
步骤阅读