沟里郭嘉 发表于 2019-6-14 22:53 第一个是INT0的地址,很多里面用的是sfr,第二个是INT0所作用的引脚 |
1 INT0头文件里有了,也就是库里已经给你写好了; 2 中断的开关,开的时候进中断(满足条件),关的时候不进中断(满足条件);中断里写了是因为不让程序在中断里的时候就再一次进中断; 用占空比会比较好一点;控制亮度比较得心应手。 |
1 INT0头文件里定义了,也就是库里有了; |
aiwenxue999 发表于 2019-6-14 08:39 求教一下,我发现reg51.h里面,写的是sbit INT0=0xB2,reg52.h里面,写的是sbit INT0=P3^2,这是什么意思? |
楼主对C语言和51单片机的理解还不够啊。INT0的概念纯粹是C语言的知识,是为了在程序中操纵P3.2管脚时,使用的别称。除了能控制管脚输出信号,还可以配合控制寄存器和控制位,做单片机的设置工作,就像楼上给的资料那样。比如控制这个管脚是在收到下降沿信号的时候产生中断,还是遇到低电平的时候产生中断。 EX0是替代51单片机中的中断控制器(寄存器地址:0xA8)中的控制外部中断0使能的一个控制位(位地址:0xA8),用来控制当外部中断信号产生的时候,系统是否还响应这个中断。EX=0,意味着即使外部已经产生了中断信号,但系统不响应,不会进到中断处理程序中去处理。 建议楼主有时间的话,多看看单片机原理的书。 |
典型的外部中断0按键处理程序: EX0=0 <>延时30毫秒 <>等待按键松开 EX0=1 就是说先关了外部中断0,等按键稳定后,再等按键松开 以防止按键按下时震动余波引起的误触发 你的程序没有考虑到按键震动的余波,所以会多次触发外部中断0。 但是这个半成品程序的外部中断0内容仅仅是不断将LED设置为点亮的状态,即使多次触发也不会影响,所以目前看不出来什么;如果想要在中断函数里面准确记录按键按下次数的话就会出问题的。 |
①、INT0是在<reg51.h>中定义了的,INT0上面的一杠代表:为低电平触发。 ②、看此链接:http://www.51hei.com/bbs/dpj-140317-1.html |
第一个问题:图一中的“INT0”是什么干用的,还有它是哪来的,这个程序并没有“sbit INT0=xxx”。 答:INT0的问题需要看硬件的设计目的。sbit INT0=xxx 是有的,只是你不知道,楼上的朋友告诉你了。 第二个问题:图二为什么在中断函数中要加上“EX=0 …… EX=1”?如果不加会怎么样? 答:都可以,需要根据整个系统的设计来决定,就目前你的水平,还不能理解这句话。慢慢来,功夫到了,你会应用自如的。这里提两个问题供你思考一下: 1、当你进入中断服务程序后,会发生其它中断? 2、你在执行中断服务程序时,怕不怕被其它中断打扰? 如果怕打扰,可以将可能打扰你的那个中断禁止,待你处理完成后,再开放它,是不是一个方法呢? “EX=0 …… EX=1” :常用来禁止某个中断,发生于某段程序运行的地方。 |
1、INT0 在头文件中定义了 2、就是初始化外部中断。默认并不触发外部中断。 3、实现变档,最好是使用PWM驱动。 |