📄 t2_m0_c.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 + -