| 
				 
					///////////////////////////////////////////////////////// 
 
 '///  以下是timer0的输出比较中断程序             
       ///  
 
 '///  每过1ms中断一次,pina.1控制led闪烁             
   /// 
 
 '///////////////////////////////////////////////////////// 
 
 $Device= m16                 
        ' 定义器件 
 
 $Stack = 120                 
        ' 定义堆栈大小 
 
 $Clock = 8                 
          ' 定义时钟频率 
 
 $Def led=PORTA.0        ' 端口定义 
 
 $Timer0=Timer,Prescale=64,Compare= Reset,Clear  '定义timer0 
 
 Declare Interrupt Oc0() ' 定义oc0中断              
 
 DDRA.0=1                ' 定义io口 
 
 DDRA.1=0          
 
 PORTA.0=1 
 
 PORTA.1=1 
 
 Dim count0 As Byte      ' 定义变量 
 
 count0=0                ' 清零count0 
 
 Stop  Timer0            '
  timer0停止 
 
 ocr0=&h7d             
   ' 置ocr0初值 
 
 tcnt0=0             
     ' tcnt0清零 
 
 Enable Oc0              ' 打开oc0中断 
 
 Enable Interrupts       ' 打开全局中断 
 
 Do                   
                       
        ' 进入主程序 
 
 If PINA.1=1 Then        ' pina.1状态控制oc0中断 
 
 Start Timer0 
 
 Else 
 
 Set led             
     ' led和计数器还原为初始状态 
                
 
 Stop Timer0 
 
 count0=0 
 
 tcnt0=0 
 
 End If 
 
 Loop 
 
 End 
 
 Interrupt Oc0(),Save 1  ' oc0中断程序 
 
    Incr count0          ' count0加1 
 
    If count0>=250 Then 
 
    Toggle led:count0=0  ' led每过250ms变化一次 
          
 
    End If 
 
 End Interrupt           ' oc0中断结束
				 
			 |