background image

     

 –  

 

第七章

应用范例

中断程式

 
     本章介绍以 C  语言程式处理微控制器的中断事件.  

  

第四章 4.7  

  

中断服务函式 中说明

 

如何
     撰写中断服务函式以及注意事项.  

 

必须遵照下列的规则来定义中断服务函式

       

 

→ 函式的返回值型态必须是 void interrupt 

       

 

→ 函式不可有参数 (argument) 

       

 

→ 设定中断服务函式的中断向量 (interrupt vector) 

 

使用 @ 

 

指定中断向量

       

 

→ 最好不要从程式的其他地方呼叫中断服务函式

       

 

→ 不要在中断服务函式内做开启本中断功能 (interrupt reentrance) 相同的中断不要重

 

复进入
 
    

 

格式

   void interrupt ISR_Timer(void) @ 0x08 
   { 
  } 
   
// 

 

定义 : 返回值的型态,  没有参数,  

 

设定中断向量为 0x08 

 
    C 编译器会根据中断服务函式对暂存器的需要,  在进入中断服务函式后,  将这些暂存器

 

的内
    容储存. 等执行完中断服务函式的工作后,  再恢复先前所储存的暂存器内容.  最后回要

 

被中
    断的地方继续执行,  同时中断功能也打开,  允许中断产生.  如果为了节省程式编码的大
小,    

中断服务函式中也可不要保存某些暂存器,  

  

例如 BP, MP0, MP1.

 

可参考第四章的 4.9  节关

 


#pragma 的说明及使用.  在中断服务函式中不要将自身的中断功能再打开, 避免重复进入

 

同一
个中断服务函式.  但是可以打开其他的中断功能,  只是要特别注意两个中断服务函式有无

 

呼叫
到相同函式的状态,  以致发生变数共用造成资料错误的风险. 
 
7.1.  

 

用时钟控制 LED  

 

的亮与灭

 
    7.1.1  

 

目的

          

 

本范例是使用时钟控制 LED  亮与灭的时间.  亮灭的时间相同并且固定.  是以 C 语

 


          撰写中断服务函式. 
  

                                                

盛群半导体股份有限公司

HOLTEK SEMICONDUCTOR INC 
C50

        

微电脑工具事业处部 撰 写 人 :  

        

文 件 编 号 程式语言及应用范例(三)           

版 别

1.10 

     

日 期 2007/11/14