4310|0

280

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

C51中断处理过程 [复制链接]

说明:由于转发的帖子是在很久前浏览网页的时候收藏下来的,作者与源地址已经无从考究,请作者见谅!
C51中断处理过程
       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的方波。


            例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);
            }
            在编写中断服务程序时必须注意不能进行参数传递,不能有返回值。
此帖出自51单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表