NY8A051F例程Timer Interrupt

编程入门 行业动态 更新时间:2024-10-08 18:37:01

NY8A051F<a href=https://www.elefans.com/category/jswz/34/1769196.html style=例程Timer Interrupt"/>

NY8A051F例程Timer Interrupt

 

NY8A051F例程Timer Interrupt_WDT Interrupt

使用单片机内核:NY8A051F SOP-8

*项目:定时器中断和WDT中断

*文件:main.c

*描述:设置定时器0、定时器1、WDT中断

*1.FINST=4MHz/4T(I_HRC)

*2.定时器0溢出中断标志位将每2048us设置一次,然后切换PB0输出状态(2048us=1us*256*8)

*3.定时器1下溢中断标志位将每1024us设置一次,然后切换PB1输出状态(1024us=1us*256*4)

*4.WDT超时中断标志位将每3.5ms设置一次,然后切换PB2输出状态

*4.1设置项目选项:WDT时基=3.5ms

#include <ny8.h>
#include "ny8_constant.h"
#define UPDATE_REG(x)	__asm__("MOVR _" #x ",F")//! interrupt service routine
void isr(void) __interrupt(0)
{if(INTFbits.T1IF){ PORTB ^= (1<<1);					// PB1 ToggleINTF= (unsigned char)~(C_INT_TMR1);	// Clear T1IF flag bit	}if(INTFbits.T0IF){ PORTB ^= 1;							// PB0 ToggleINTF= (unsigned char)~(C_INT_TMR0);	// Clear T0IF flag bit		}if(INTFbits.WDTIF){ PORTB ^= (1<<2);					// PB2 ToggleINTF= (unsigned char)~(C_INT_WDT);	// Clear WDTIF flag bit		}	}void main(void)
{
unsigned char R_shift_regl = 0xFF;
//;Initial GPIO     IOSTB =  C_PB5_Input | C_PB4_Input | C_PB3_Input;     // Set PB0 & PB1 to input mode,others set to output modePORTB = 0x07;                           // PB0、PB1 & PB2 are output HighDISI();
//;Initial Timer0PCON1 = C_TMR0_Dis;						// Disable Timer0TMR0 = 0;								// Load 0x00 to TMR0 (Initial Timer0 register)T0MD = C_PS0_TMR0 | C_PS0_Div8 ;		// Prescaler0 is assigned to Timer0, Prescaler0 dividing rate = 1:8,clock source is instruction clock//;--Initial WDT (if WDT needs prescaler0 dividing rate )--------------------------------------------------		                               
//	T0MD = C_PS0_WDT						// Prescaler0 is assigned to WDT, Prescaler0 dividing rate = 1:2 (WDT select interrupt)
//;--------------------------------------------------------------------------------------------------------		//;Initial Timer1	TMR1 = 0xFF;							// Load 0xFF to TMR1 (Initial Timer1 register)T1CR1 = C_TMR1_Reload | C_TMR1_En;      // Enable Timer1, Initial value reloaded from TMR1, Non-stop mode T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div4;	// Enable Prescaler1, Prescaler1 dividing rate = 1:4, Timer1 clock source is instruction clock//;Setting Interrupt Enable Register	INTE = C_INT_WDT | C_INT_TMR1 | C_INT_TMR0;	// Enable Timer0、Timer1、WDT overflow interrupt//;Initial Power control registerPCON = C_WDT_En | C_LVR_En;				// Enable WDT ,  Enable LVR//;Enable Timer0 & Global interrupt bit PCON1 = C_TMR0_En;						// Enable Timer0ENI();									// Enable all unmasked interrupts			while(1);
}

更多关于NY8A051F的例程,请留言联系!

更多推荐

NY8A051F例程Timer Interrupt

本文发布于:2024-02-13 07:00:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757771.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:例程   NY8A051F   Interrupt   Timer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!