⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t2_m0_c.a51

📁 This file is an example to use timer2 in mode 0.
💻 A51
字号:
#define MSB_reload_value 0x36 /* msb reload value exemple */
#define LSB_reload_value 0x36 /* lsb reload value exemple */


$INCLUDE   (reg_c51.INC)

org 000h
ljmp begin

org 02Bh
ljmp it_timer2
;/**
; * FUNCTION_PURPOSE: This file set up timer 2 in mode 0 (16 bits auto-reload
; * up/down counter).
; * The 16-bits register consist of all 8 bits of TH2 and all 8 bits   
; * of TL2. The EXF2 bit toggles when timer2 overflow or underflow occurs.
; * EXF2 does not generate interrupt. This bit can be used to provide 17-bit resolution   
; * FUNCTION_INPUTS: P1.0(T2) must be controlled by an external clock 
; *                  P1.1(T2EX)=0 for down counting or 1 for up counting.
; * FUNCTION_OUTPUTS: void
; */
org 0100h

begin:
	ANL T2MOD,#0FCh; 				 /* T2OE=0;DCEN=1; */
	ORL T2MOD,#01h;
   CLR EXF2;                   /* reset flag */
   CLR TCLK;
   CLR RCLK;                   /* disable baud rate generator */

   CLR EXEN2;                  /* ignore events on T2EX */ 
   MOV TH2,MSB_reload_value;	 /* Init msb_value */
   MOV TL2,LSB_reload_value;	 /* Init lsb_value */
   MOV RCAP2H,MSB_reload_value;/* reload msb_value */
   MOV RCAP2L,LSB_reload_value;/* reload lsb_value */
   SETB C_T2;                  /* counter mode */
   CLR CP_RL2;                 /* reload mode */
   SETB EA;                    /* interupt enable */
   SETB ET2;                   /* enable timer2 interrupt */
   SETB TR2;                   /* timer2 run */

	JMP $;				          /* endless  */


;/**
; * FUNCTION_PURPOSE: timer2 interrupt
; * FUNCTION_INPUTS: void
; * FUNCTION_OUTPUTS: P1.2 toggle period = 2 * (65536-reload_value) * P1.0(T2) period 
; */
it_timer2:
	CLR TF2;						/* reset  interrupt flag */
	CPL P1.2;					/* P1.2 toggle when interrupt. */
   RETI

end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -