历史上的今天
今天是:2025年07月12日(星期六)
2018年07月12日 | 51单片机中断和软件仿真
2018-07-12 来源:eefocus
12
从结构图可以看到,51单片机有有5个中断,分别是外部中断0(INT0),外部中断1(INT1),定时器中断0(T0),定时器中断1(T1)和串口中断(TX/RX)。有两个优先级,其中在一个中断组中优先级顺序从高到低是INT0、T0、INT1、T1、TX/RX。
部分中断寄存器12
1、中断允许控制寄存器(IE)
EX0:外部中断0允许位;
ET0:定时/计数器T0中断允许位;
EX1:外部中断1允许位;
ET1:定时/计数器T1中断允许位;
ES :串行口中断允许位;
EA :CPU中断允许(总允许)位。
以上都是1使能,0关闭。
2、定时器/控制器控制寄存器TCON
IT0:外部中断0触发方式控制位
当IT0=0时,为电平触发方式(低电平有效)
当IT0=1时,为边沿触发方式(下降沿有效)
IE0:外部中断0中断请求标志位 (硬件自动完成)
IT1:外部中断1触发方式控制位(同IT0)
IE1:外部中断1中断请求标志位 (同IE1)
TF0:定时/计数器T0溢出中断请求标志位
TF1:定时/计数器T1溢出中断请求标志位
3.中断优先级控制寄存器(IP)
PX0:外部中断0优先级设定位
PT0:定时/计数器T0优先级设定位
PX1:外部中断0优先级设定位
PT1:定时/计数器T1优先级设定位
PS :串行口优先级设定位
以上都是1为高优先级,0为低优先级。
4.定时器/计数器工作模式寄存器TMOD
GATE—门控制位。
GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制。
GATE=1,定时器计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来共同控制。
C/T—定时器和计数器模式选择位。
C/T=1,为计数器模式;C/T=0,为定时器模式。
M1M0—工作模式选择位。
使用中断前,要打开总中断,打开你使用的中断允许位,外部中断要设置中断触发方式,其他中断也要配置相应的寄存器,如果使用多个中断还要配置中断优先级。
中断服务函数的格式:
中断服务程序的写法
void 函数名() interrupt 中断号 [using 工作组]
{
中断服务程序内容
}
51单片机的中断基本就这些,下面举一个栗子。
用下降沿触发INT0(P3.2),然后让P1^0输出0 ;12
主程序
include "intrins.h"includesbit LED = P1^0 ;void Int0 (void) interrupt 0{ LED = 0 ; }void Init_INT(void) { EA = 1 ; //开总中断 EX0 = 1 ; //开外部中断0 IT0 = 1 ; // 为跳变沿触发}void main() { Init_INT() ; //中断初始化 while(1) { } }123456789101112131415161718192021222324252627
用信号函数仿真
signal void test(void)
{
while(1)
{
port3 = 0xff ;
swatch(0.02);
port3 = 0xfB ;
swatch(0.1) ;
port3 = 0xff ;
swatch(0.02);
_break_ = 1 ;
}
}1234567891011121314151617仿真波形如下,上面是外部中断信号,下面是P1^0输出信号。
史海拾趣
|
最近在做个项目,要用程序修改IP,SUBMASK,GATEWAY的地址,这个程序我作出来了,但是碰到一个问题,当我把静态的改回DHCP动态的时候发生了错误, 提示说是进行了一个非法操作,这是怎么回事呢?我在程序上是这样的一个思路,我先选择是静态的地址还是动态的 ...… 查看全部问答> |
|
如图所示为抗干扰声控开关电路。该电路由话筒S、选频放大器、单稳整形电路IC1、信号存储器IC2a与IC2b、可控硅交流开关SCR及脉冲清零电路IC4等组成。 电路中BG1为9014或3DG4M、3DG201、3DG401、3DG8A和3DG88等。BG2、BG3选用3DG12或3DG130。IC1、I ...… 查看全部问答> |
|
zinc6.1下,定义一个 zafstring *testString = new zafString();然后把testString 加到窗口中 ,在该 控件中输入数据,比如 12345,用程序获得该值 testString ->Text()为什么只能得到“1”,而不能得到整个字符串呢?有遇 ...… 查看全部问答> |
|
锂离子电池监控——需要冗余吗? 作者:Steven Boyle 简介 目前,混合动力汽车(HEV)、插电式混合动力汽车(PHEV)和纯电动汽车(EV)的开发工作与锂离子(Li-ion)电池的使用密不可分,许多OEM、电子设备供应商和电池制造商探讨的重点都集中在如何构建 ...… 查看全部问答> |
|
C2000 CPU,部分器件具有控制率加速器,它实际上相当于一个浮点CPU,运算能力超强。而C28是定点(或有浮点运算)处理器。 C28 CPU作主器件,CLA作从器件。CPU启动CLA时,不象CPU执行中断指令那样,需要十多个时钟周期后才可以执行中断功能的操作 ...… 查看全部问答> |




