嵌入式开发中的中断介绍
时间:01-18 15:07 阅读:702次
*温馨提示:点击图片可以放大观看高清大图
简介:今天从同事手里接过了一个51的程序,发现写的不太好,正好今天比较烦,不想干活,就总结一下我自己在使用51进行开发的时候,如何处理中断
1、中断都是分优先级的,一定要根据具体的项目,分配合理的优先级;
2、51中,优先级和优先顺序是不同的概念,一般初学者分不清。
3、中断响应函数尽量短小,不要进行数据处理和函数调用;
4、51的串口发送数据、接收数据都调用同一个中断,但是一般的程序中,为了提高系统的实时性,接收数据采用中断方式。因为在发送数据的时候,发送的时刻、发送数据的长度都是已知的,没有必要调用中断。我在串口中断响应函数中先判断是接收中断还是发送中断。如果是发送中断,直接挑出,不进行任何处理;如果是接收中断,进行相应的处理;
5、串口中断只负责接收数据,并将数据存入缓存,不要进行数据。在中断中,将数据保存在“环“的数据结构中。环只要设置两个指针“头”“尾”,我一般将环的长度设为255,这样,“头”“尾”两者指针都可以是Unsigned Char,指针只要进行自加操作,就可以实现计数的自动循环,就是指针加到255后,自动回到0;不做这么过有一个前提条件,就是程序读“环”中数据的速度要大于串口中断响应函数中向“环”写数据的速度,避免数据覆盖;
6、有时候系统的状态会随着中断的到来改变,这是,我是通过全局变量检测状态的变化,在中断里面给全局变量赋值,主程序中检测变量的值,进行相应的操作,操作完成之后,将全局变量赋初值,等待下一次中断;
7、使用定时器中断的时候要注意,必要的时候停止定时器,可能会给开发带来想不到的好处。
总体来说,单片机的资源有限,如果系统没有什么算法的话,底层开发不难,重要的是系统程序的结构要合理,思路要清晰。