维普资讯
手把手教你
◆ 吕超亚
C51编译器支持在 C语言源程序 器组保护到堆栈 中.指定的工作寄存器 不正确 的结果。如果定义中断函数时没
中直接编写80C51单片机的中断服务 内容不会改变 ,函数返 回之前将被保护 有使用using选项 ,则 由编译器选择一
函数程序 。以前菝们学习用汇编语言编 的工作寄存器蛆从堆栈 中恢复。 个寄存器组作绝对寄存器组访问。
写中断服务程序时.会对堆栈 出栈 的保 使用关键字using在函数 中确定 下面做一下有关中断的实验。
护 问题而觉得头痛 。为了能够在C语 一 个工作寄存器组时必须十分小心.要
言源程序 中直接编写中断服务函数 . 保证任何寄存器组的切换鄯只在控制 实验一
C51编译器对 函数的定义进行 了扩 的区域 内发生 。如果不做到这一点将产
展 .增加 了一个扩展关键字 interrupt。 生不正确 的函数结果 。 在 LED/162字符液晶试验板上
关键字 In1errupt是函数定义时的一个 另外.带 using属性的函数.原则 做一个键控计数的实验。采用中断方法
选项 .加上这个选项就可 以将一个 函数 上不能返 回bit类型的值。并且关键宇 实现.按动 7#、错 、 键中的任一个
定义成 中断服务函数。定义中断服务函 using不允许用于外部函数 .关键宇 时,触发外中断O,实现计数或停止。
数的一般形式为 interrupt也不允许用于外部函数 ,它对 在我的文档中建立一个文件 目录
中断函数 目标代码 的影响如下: fcs29).然后建立cs29uv2的工程项
中断潭 中断向量8n+3 在进入中断函数时.特殊功能寄存 目,最后建立源程序文件(cs29e】。
讣部 :扣断o cco3H 器 ACC、B、DPH、DPL、PSW将教保存 输入 下面的程序:
定时器 计数器0 000BH 八栈 。如果不使用寄存组切换.则将 中 #inculdefl序号 【下同】:1
外部 巾断 1 O013H 断函数中所用到的全部工作寄存器都 #defineucharunsignedchar //2
定时器,计数器 ’ 0018H
人栈 。函数返 回之前.所有 的寄存器 内 #d efineunitunsignedint 3
容 出栈。中断函数 由80C51单片机指 uohar code SEG7 【10】=
函数类型 函数名 (形式参数表) 令 RETI结束。 0『xcO.0xf9.0xa4.Oxb0.0x990姻2.0x82.0xf
i【n[erruptnJIusingnJ 值得注意的是 。编写 80C51单片 80xSO0xgO/;}批
关键 字 interrupt后面的 n是 中断 机 中断函数时应严格遵循以下规则: … 。。。… … … ’’5 …‘ … ’ ‘’’’。… 。
号.n的取值范 围为0~31 编译器从 1中断函数不能进行