所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
CPU对中断处理过程包括中断初始化、中断响应、保护现场、中断服务程序处理、中断撤销和中断返回。
1.中断初始化
中断初始化设置,对中断的允许位和中断优先级设置,包括TCON、SCON、IE、IP与中断有关的功能位置进行设置,如3.3.3节所述。
2.中断响应
单片机一旦响应中断,首先设置响应的优先级,通过执行硬件程序调用把断点地址压入堆栈,并与各中断源对应的中断服务程序首地址送到程序计数器PC,同时清除中断请求标志(TI和RI除外),从而控制程序转移到中断服务程序,中断响应过程由中断系统自动完成。
3.保护现场
CPU在执行任务过程中由于中断响应执行中断事件,为了在执行完中断服务程序后,回头执行原先程序时,知道程序原来在何处打断,各有关寄存器的内容如何,必须在转入执行中断服务程序前,将当前状态内容进行备份以便保护好现场。一旦缺乏现场保护和恢复现场,程序运行混乱,单片机无法正常工作。所以在进入中断服务子程序后,一般都要保护现场,再执行中断服务程序,返回主程序前再恢复现场,用户在编制中断处理程序时必须要考虑上述问题。
4.中断服务程序处理
中断服务程序一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。C51编辑器支持在C语言程序中直接编写51单片机的中断服务程序,C51编译器对函数的定义进行了扩展,无需考虑堆栈出栈保护问题,增加了一个扩展关键字inter-rupt。关键字interrupt是函数定义时的一个选项,加上此选项可以对函数定义为中断服务函数。定义中断服务函数的格式如下:
函数类型 函数名(形式参数)[interrupt n][using n]
关键字interrupt中的n是中断号,n的取值为0~31单片机芯片型号不同n不同。
在C语言中定义中断服务函数:(www.chuimin.cn)
void intersvr0(void)interrupt 0 using 1//定义外部中断0,使用第一组寄存器。
5.中断请求撤销
CPU响应中断请求后,执行中断服务子程序,一旦中断任务执行完毕,必须清除中断请求标志,否则中断响应返回后将再次进入该中断,从而进入死循环。
中断撤销方式有4种方式:
1)对定时/计数器T0、T1中断,CPU响应中断时就用硬件自动清除相应的中断请求标志TF0或TF1。
2)对外部中断INT0、INT1,若采用边沿触发方式,CPU响应中断后,内部硬件自动复位中断标志IE0或IE1。
3)对串行中断,CPU响应中断后并不自动清除相应的中断标志位TI或RI,用户应在串行中断服务程序中用软件清除TI或RI。
4)若CPU对中断引脚的信号缺乏控制能力,可以利用单稳态触发器对中断信号进行整形,使其符合要求。
6.中断返回
中断任务处理完成后,CPU需要返回到中断的地方继续执行。同时需把保存现场内容从堆栈中弹出,恢复寄存器和存储单元的原有内容。正常中断响应时间至少为3~8个机器周期,如果有同级或高级中断服务,将延长中断响应时间。
以上为中断内容的详细描述,关于中断的实际应用在中断章节第8章单片机外部中断控制项目中重点介绍。
有关51单片机初级入门实战教程的文章
所谓的函数调用就是在一个函数体中引用另外一个已经定义的函数,前者为主调函数,后者为被调用函数。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值。因此在以后各主调函数中不用对ann和circle函数说明,可直接调用。......
2023-11-04
函数名由用户自定义,后面是空括号,代表没有函数参数,即代表无参函数,注意空括号不可以省略。函数被调用时,主调函数将通过实际参数,简称实参,传递实际的值给这些形参。3)函数定义时没有写明类型标识符,则默认为整型。......
2023-11-04
③if-else-if形式:当有多个分支选择时,采用if-else-if语句,形式为if语句1;else if语句2;else if语句3;…使用switch语句时注意以下几点:①case后的各常量表达式的值是不一样的,否则会出现错误。②在case后,允许出现多条语句,可以不用{}括起来。③各case和default语句位置的先后顺序可以改变,而不会影响程序执行结果。......
2023-11-04
引脚12:脉冲信号输出端,对应5脚信号输入端。单片机控制电动机正、反转电路采用ULN2003芯片驱动步进电动机,驱动电流放大,其中单片机的P2.0~P2.3口与ULN2003相连,ULN2003输出引脚16、15、14、13连接到步进电动机端,驱动电动机转动。图15-4 电动机正、反转硬件电路原理图......
2023-11-04
8051单片机全双工串行口具有4种工作方式,可通过软件编程选择。方式1为波特率可变的10位异步通信接口方式。在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,在移位脉冲作用下串行数据从TXD引脚输出。发送和接收的一帧信息为11位,即1个起始位,9个数据位和1个停止位。发送一帧信息后,置位中断标志TI,其过程与方式1相同。方式3为波特率可变的11位UART方式。......
2023-11-04
提供内部上电自动复位电路,当外加电源电压超过4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。1602LCD芯片逻辑工作电压4.5~5.5V,LCD驱动电压3~5V,最佳工作电压5.0V,显示容量16×2个字符;工作电流2.0mA;字符尺寸2.95×4.35(W×H)mm。表14-1 LCD1602引脚描述第1引脚:VSS为地电源。LCD1602基本操作时序见表14-2。......
2023-11-04
对于基本数据类型量,根据变量值在程序执行过程中是否发生变化,又可分为常量和变量两种。常量——与变量相对应,在程序执行的过程中,其值不能发生改变。习惯上用大写字母来表示符号常量的标识符,用小写字母表示变量标的识符。程序中使用变量须先用标识符作为变量名,并指出所用的数据类型和存储模式。各变量名之间用逗号间隔,类型说明符与变量名之间至少用一个空格间隔。......
2023-11-04
手机电池的使用寿命和单次使用时间以及充电过程密切相关。设计比较科学的充电器往往采用专用充电器控制芯片配合单片机控制的方式。例如在充电后增加及时关断电源、蜂鸣报警和液晶显示等功能。充电器种类繁多,但从严格意义上讲,只有单片机参与处理和控制的充电器才能称为智能充电器。在众多的51系列单片机中,AT89系列单片机在我国得到了极其广泛的应用。而51单片机在实现手机电池充电器方面的应用就更具有意义了。......
2023-11-04
相关推荐