在proteus仿真中,开关是软中断还是硬中断

在proteus仿真中,开关是软中断还是硬中断,第1张

IT0是用来控制外部中断0的触发方式的寄存器中的一个位,将其置1或者置0不会表现为某个引脚是高电平或者低电平,和P0、P1这些不是一个道理;T0是定时器0的输入输出引脚,与IT0没有任何关系。

1、打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUPA51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。

2、导入51单片机的头文件,否则后续使用的端口都会出现未定义的情况,然后在主函数中,使得EA=1,即总中断允许,打开中断的总开关。

3、分别打开外部中断0和外部中断1的分开关,即EX0=1和EX1=1,同时设置中断的触发方式为跳沿触发,可以避免增加额外的电路。

4、如果不添加别的代码的话,此时这两个中断的优先级是外部中断0>外部中断1,如果一个中断正在执行来了另外一个中断是不会打断前一个中断的执行过程的,这里需要为中断设置优先级。

5、编写完主函数后,我们要为两个中断分别编写对应的中断服务函数,才能在中断发生后产生相应的响应,注意外部中断0和外部中断1的中断号分别是0和2。

6、然后到Project菜单中的output项目中勾选Create Hex  File,OK后点击编译按钮,如果没有错误,即可生成可以烧录或者仿真的hex文件。

7、最后把生成出的hex烧入进51单片机进行运行或者装载入Proteus仿真系统进行仿真。

与定时器中断不同,外部中断会立即响应,不需要定时时间到才响应,所以外部中断的优先级是最高的。中断是可以2级嵌套,比如:定时器0正在中断,突然外部中断0触发了,那么会打断定时器0,先执行外部中断0,再去执行定时器0中断,而定时器1中断却不能打断定时器0中断单片机的外部中断触发方法有2种——下降沿触发和低电平触发,通过IT0和IT1寄存器控制(ITx=0,低电平触发;ITx=1,下降沿触发)。外部中断0和1输入引脚为P32和P33,所以要触发外部中断,需要将外部信号连接到P32/P33引脚。

画第一根线,复从引脚出发,到达一定长度后双击鼠标完成,之后每一根线的画制法只需要在引脚端点百双击即可!!! 2、画完线后,先点击连线标号模式,然后在英文输入模式,点击键盘A,再度输入“net=P#”,确定后在每根线上点一下就可以知了,只能点一下。取消放置标注需要重新按A然后按“道取消”。proteus仿真过程中的错误分析:

当在proteus中出现division by zero时该如何修改 uchar uint只针对整型,但是我程序里面出现了小数,所以报错

关于中断函数:开关控制

这个必须是在INT0或INT1位置上的开关,外部中断必须是针对这两个口上的,别的地方的开关中断是没资格使用interrupt0的,直接if判断即可,但是INT0,INT1这两个口上的时可用interrupt0 再进行判断的,当初烧了程序,按开关一直没反应,原来压根不是INT0,INT1对应的管脚的开关Proteus中的虚拟终端和串口调试助手作用相同,但只是串口助手,真正的串口还得要用COMPIM 所以实验采用2个通信串口,实验原理非常简单,只要熟悉第三次实验的过程,就非常容易,只是在上节的基础上建立通信串口和通信串口中断,在通信中断中加入按键的软件中断,从而控制流水灯的启动和停止。(启动还是实验一的流水灯工作方式,停止则为保持现有状态)过程非常简单,只需几分钟搞懂。所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。stm32的中断简言之就是,出现某次事件产生中断,暂停正在执行的主程序,去执行目标程序,执行完毕后返回主程序,继续执行。通过TIM2定时器中断控制LED流水灯的闪烁时间,并且增加两个按键PA1、PA2,其中PA1控制LED流水灯的启动,8个灯先依次闪烁,时间间隔1s,然后8个灯同时闪烁且时间间隔1s,PA2控制停止,使定时器不工作,将灯保持现在状态,过程非常简单,只需几分钟搞懂。(附加上两次实验链接: 实验一中keil和Proteus所有工程文件,百度网盘链接提取码:wig1 实验1:Proteus仿真STM32流水灯实验例程、详细步骤 实验2:Proteus仿真STM32外部EXTI中断、按键中断控制led流水灯的亮灭

proteus中这两个叫什么

一个是逻辑电平输入,按红点,可设置= 1/0 电平;

当=1时,我有时候还把他当做电源用,=0时,有时候还把他当做接地用;

一个是逻辑电平状态显示,只用于状态变化周期低于1秒的信号显示;

在元件库中 Debugging Tools 里的 logic元件,有几个,你都可以选出来看看效果;

(protues仿真是不用加晶振的)看下调制信息,如果hex文件没问题的话就是楼主电路图或者元器件问题,还有就是,单片机仿真真的没一点用,要实验就在开发板上面实验,过来人给你的建议,最后一句,单片机仿真真的没一点用!

效果是一样的,不过你好像写错了吧,应该是INT0和INT1吧?

INT0优先级更高,INT0是除了复位之外优先级最高的中断了。

低电平触发就是只要中断输入引脚为低电平,那么程序就一直停留在中断程序里,直到检测到高电平。

上升沿和下降沿触发的话,分别是在低电平变高电平和高电平变低电平的一瞬间执行一次,执行完中断程序之后会自动退出中断程序,回到主程序。

1、设置TI=1,是人为的设置了串行发送请求完毕的中断请求标志。但是你并没有致能(es=1)串口中断。实际上你的interrupt5的处理程序也没有写,是空的。(注意这点)

2、你既然没有设置it0=1(跳变触发中断),那么就是IT0=0(低电平触发)。

3、当一个低电平来的时候,就进入你的interrupt0处理程序。并且硬件自动清标记位置。执行完毕 beer=1。

4、这个时候还有一个中断请求标志IT=1,于是产生了中断嵌套。执行完高级中断后,进入低级中断interrupt5。之后是空白。。。。

5、结果就是你描述的:蜂鸣器一直响,数码管停止显示。

不知道我这样描述,你能不能理解。呵呵

void main()

{

EA=1; //开总中断

EX1=1; //开外部中断1

// IT1=0; //设置外部中断1为低电平触发

IT1=1; //设置外部中断1为下降沿触发

while(1)

{

}

}

void exter1() interrupt 2

{

LED = ~LED;

}

以上就是关于一个程序放入proteus中为什么IT0一直不能用全部的内容,包括:一个程序放入proteus中为什么IT0一直不能用、MCS-51单片机外部中断的触发方式如何设定和选择、在proteus仿真中,开关是软中断还是硬中断等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8821931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存