t2_m0_c.a51

来自「This file is an example to use timer2 in」· A51 代码 · 共 56 行

A51
56
字号
#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 + =
减小字号Ctrl + -
显示快捷键?