首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C51程序设计技巧-4

C51程序设计技巧-4

  C51编译器支持在C源程序中直接开发中断过程,因此减轻了使用汇编语言的繁琐工作,提高了开发效率。中断服务函数的完整语法如下:



    Void 函数名(Void)[模式]

    [再入]Interrupt N [Using R]



    其中N(0~31)代表中断号。C51编译器允许32个中断,具体使用哪个中断由80C51系列的芯片决定。R(0~3)代表第R组寄存器。在调用中断函数时,要求中断过程调用的函数所使用的寄存器组必须与其相同。"再入"用于说明中断处理函数有无"再入"能力。C51编译器及其对C语言的扩充允许编程者对中断所有方面的控制和寄存器组的使用。这种支持能使编程者创建高效的中断服务程序,用户只须在C语言下关心中断和必要的寄存器组切换操作。



    例3 设单片机的Fosc=12MHz,要求用T0的方式1编程,在P1.0脚输出周期为2ms的方波。



    用C语言编写的中断服务程序如下:
































































#Include



Sbit P1_0=P1^0;



Void Timer0(Void)Interrupt 1 Using 1 {



     /*T0中断服务程序入口*/



P1_0=!P1_0;



TH0=-(1000/256);      /*计数初值重装*/



TL0=-(1000%256);



}



Void Main(Void)



{



TMOD=0x01;     /*T0工作在定时器方式1*/



P1_0=0;



TH0=-(1000/256);     /*预置计数初值*/



TL0=-(1000%256);



EA=1;            /*CPU开中断*/



ET0=1;           /*T0开中断*/



TR0=1;           /*启动T0*/



Do{}While(1);



}




  在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。



4 结论



    C51编译器不但可以缩短单片机控制系统的开发周期,而且易于调试和维护。此外,C51语言还有许多强大的功能,如提供丰富的库函数供用户直接调用,完整的编译控制指令为程序调试提供必要的符号信息等等。总之,C51语言是广大单片机开发人员的强有力的工具。



返回列表