基于proteus的51单片机仿真实例五十五、外部中断1演示实例
来源:互联网 发布:php设置session有效期 编辑:程序博客网 时间:2024/06/15 23:02
1、本例使用外部中断1测量从P3.0引脚输出的负跳变信号累计数,并通过P1口的8位LED验证结果。
2、实现方法,要使用外中断,必须对总中断使能位,中断允许控制寄存器IE、中断源控制寄存器TCON进行相应设置,
而对于信号数的统计可利用中断函数进行处理,每进入一次中断函数,对计数变量进行累加即可。
3、关于电压的负跳变,低电压的说明
我们常说的低电平在电路中的表现形式为:低电平,在TLL中当电压低于0.8V以下就为低电平,在CMOS中当电压低于2V以下就为低电平.
负跳变,是指当电压从高电平向低电平变化的瞬间引起的变化,是脉冲。
相应地,也可以理解正跳变和高电平的异同。
4、在keil c51中新建工程ex43,编写如下程序代码,编译并生成ex43.hex文件
#include <reg51.h> //包含头文件
sbit KEY=P3^0; //端口位定义
unsigned char counter; //全局变量,存储负跳变累计次数
//
void delay(void)
{
unsigned char i,j;
for(i = 0;i < 100;i++)
{
for(j = 0;j < 100;j++);
}
}
void delay(void)
{
unsigned char i,j;
for(i = 0;i < 100;i++)
{
for(j = 0;j < 100;j++);
}
}
//主函数
void main(void)
{
unsigned char i;
void main(void)
{
unsigned char i;
EA = 1; //开总中断
EX1 = 1; //开外部中断1
IT1 = 1; //选择电平负跳变触发方式,
EX1 = 1; //开外部中断1
IT1 = 1; //选择电平负跳变触发方式,
counter = 0; //计数变量初值为0
for(i = 0;i < 100;i++)
{
KEY = 1; //P3.0输出高电平
delay();
KEY = 0; //
delay();
}
while(1)
{
for(i = 0;i < 100;i++)
{
KEY = 1; //P3.0输出高电平
delay();
KEY = 0; //
delay();
}
while(1)
{
}
}
}
//外部中断T1中断函数
void int1(void) interrupt 2 using 0
{
counter++; //每产生一次中断,计数值加1
P1 = counter; //计数结果送P1口显示
}
void int1(void) interrupt 2 using 0
{
counter++; //每产生一次中断,计数值加1
P1 = counter; //计数结果送P1口显示
}
5、在proteus中新建仿真文件ex43.dsn,电路原理图如下所示:
6、将ex43.hex文件载入at89c51中,启动仿真,观察程序运行结果,下图是程序最终停止时的电路状态。
0 0
- 基于proteus的51单片机仿真实例五十五、外部中断1演示实例
- 基于proteus的51单片机仿真实例五十四、中断的概念和外部中断实例1
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
- 基于proteus的51单片机仿真实例四十三、C语言的字符串数组演示实例
- 基于proteus的51单片机仿真实例四十四、C语言的结构体演示实例
- 基于proteus的51单片机仿真实例四十五、C语言的共用体演示实例
- 基于proteus的51单片机仿真实例四十六、C语言的枚举类型演示实例
- 基于proteus的51单片机仿真实例四十七、C语言的指针演示实例
- 基于proteus的51单片机仿真实例四十八、C语言的指针数组演示实例
- 基于proteus的51单片机仿真实例四十九、C语言数组的指针演示实例
- 基于proteus的51单片机仿真实例二十二、C51逗号运算符演示实例
- 基于proteus的51单片机仿真实例二十三、C51条件运算符演示实例
- 基于proteus的51单片机仿真实例二十四、C51中位运算符演示实例
- 基于proteus的51单片机仿真实例二、关于proteus
- 基于proteus的51单片机仿真实例五十六、定时器/计数器T0的外部计数实例
- 基于proteus的51单片机仿真实例四、第一个proteus仿真实例
- 基于proteus的51单片机仿真实例五、第一个proteus仿真实例(续)
- 深入理解JS原型链
- 阿姆达尔定律(Amdahl's law)
- [C++]STL中vector容器 begin()与end()函数、front()与back()的用法
- Java创建文件并向文件写入内容:I/0流简单操作
- jQuery总结3(事件)
- 基于proteus的51单片机仿真实例五十五、外部中断1演示实例
- linux上安装activeMQ(单节点)
- knockout click绑定使用事件源对象
- 震中距和方位角的求法
- Fortran添加多行注释
- Matlab 特殊符号(便于作图等)
- Ubuntu 14.10 utopic源…
- Ubuntu系统安装ghostscript
- 2017.5.8MFC学习笔记