1、在中断服务程序里,关闭中断允许标志当然可以(只是这个中断暂时被关闭了,如果在其他程序中没有开启中断,则这个中断服务程序不会再被执行),同样也可以启停定时器。
看了你的追问,我觉得你的要求完全可以实现,只是在编程的时候,要细致一些,把逻辑理清楚就可以了。
我以前做过一个出租车计价器,里程数据也是从外部中断进来,但在空车(也就是没有乘客的时候),我就把这个中断给关了,虽然里程数据通过传感器还在不断到达中断口,系统不会做任何反应。
2、声音定位从理论上说是很简单的,两线一点的定位方式。利用一个减速步进电机(带咪头),然后先旋转,利用一个锁相环,比如LM567,当接收到信号后,输出一个脉冲。此时步进电机停住,测出旋转角度(也就是说明,声音在那条直线上),然后走过一段路程,再测一次,又获得一根直线,则两根直线的交点就是声音源,跟早年无线电定位,现在微信定位一个道理。
CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将相应的中断入口地址送入PC,PC是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。这些工作都是由硬件来完成的,不必我们去考虑。这里还有个问题,大家是否注意到,每个中断向量地址只间隔了8个单元,如0003-000B,在如此少的空间中如何完成中断程序呢?很简单,你在中断处安排一个LJMP指令,不就可以把中断程序跳转到任何地方了吗?
一个完整的主程序看起来应该是这样的:
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0 ;转外中断0
ORG 000BH
RETI ;没有用定时器0中断,在此放一条RETI,万一 “不小心“产生了中断,也不会有太大的后果。 资料来源:吴鉴鹰吧
中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。注意:CPU所做的保护工作是很有限的,只保护了一个地址,而其它的所有东西都不保护,所以如果你在主程序中用到了如A、PSW等,在中断程序中又要用它们,还要保证回到主程序后这里面的数据还是没执行中断以前的数据,就得自己保护起来。
外部中断0 :P32口有低电平(IT0=0)/ 下降沿(IT0=1)。
外部中断1 :P33口有低电平(IT1=0)/ 下降沿(IT1=1)。
定时器0中断:当定时器0计数到FFFF溢出时
定时器1中断:当定时器1计数到FFFF溢出时
串口中断:串口接收到一帧。或发送完一帧数据都会产生中断。
你网上找一下TCON和SCON。什么条件让中断标志位的值改变。 那么就会进入中断服务程序去。
1,cpu运行,和定时器是并行进行的
2,cpu在工作中,得到了定时中断,那么它停止手头的工作去中断请求中服务,完成服务,返回原来的断点位置继续工作,
3,如果在中断服务中,定时器不关,那么在cpu执行服务时,定时器是工作的一般建议关掉,执行完再打开
因对51单片机的具体端口定义及你的硬件电路图不太明确,仅给出以下建议:(1)确定一下你所用单片机的P32端口是不是外部中断0; (2)重点检查你的中断处理子程序“void exter0() interrupt 0 //中断程序”,这其中只有一条语句d1=0,也即P10=0,对整个程序有什么功能?; (3)即使不考虑中断子程序的功能,主程序肯定一直在运行,因为其中的while(1) { }就是无限循环的。不知这样回答是否能对你有所帮助。另建议:如想真正掌握单片机的开发应用,个人认为还是从汇编学起更好,学习并掌握一个基于定时器中断的最简单分时调度OS,如能再包含键盘监控(包含短按长按的不同处理)、显示(LED & LCD)、通讯(各种主要串行总线)等的程序编写就最好了。
新手常见错误两个程序都会产生中断
第一种在中断程序中判断tt保证了及时性,每次进入中断程序都会判断一次tt
第二种在for()语句执行完后才会判断一次tt,无法保证及时性,只有在for()循环结束时tt正好为20才能进入if(tt==20)程序
看图应该能理解清楚大概
首先你这问题不难,现在回答你这问题的难点在于你妹给出电路图。
在此给出你程序的大体思路,
1、写两个子函数,一个是实现8个LED顺序点亮的函数1,俗称的流水灯,另一个是数码管显示“sos”的函数2
2、在主程序中去调用函数1,完了跟着检测按键是否按下,检测到按键后,调用函数1,完了多循环几次函数2的调用来实现你的“显示一段时间后返回LED顺序点亮”
注意:按键检测需要考虑去抖动的问题,写的高大上一点,可以加入定时器,实现你的点亮一段时间。
望采纳,有问题在追加,还不会写可以发电路图出来再说
以上就是关于在用51编程时,可不可以在中断函数里关掉当前中断并且打开或关上定时器全部的内容,包括:在用51编程时,可不可以在中断函数里关掉当前中断并且打开或关上定时器、51单片机中断响应过程举例、51单片机的五个中断分别在什么时候(什么情况)执行里面的程序!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)