t1_timer.c

来自「intel 196nt 例程」· C语言 代码 · 共 65 行

C
65
字号
/*
** t1_timer.c
**      Connect timer1 and timer2 together to make a
**      32 bit DOWN counter, and display some bits of this
**      counter on the LEDs.
*/

#include <stdio.h>

extern	void		enable_led( void );
extern	void		set_led( unsigned char );
extern	unsigned char	get_t1control( void );
extern	void		set_t1control( unsigned char );
extern	unsigned int	get_timer1( void );
extern	unsigned char	get_t2control( void );
extern	void		set_t2control( unsigned char );
extern	unsigned int	get_timer2( void );

void main(void)
{
    unsigned int	i;
    int			j;

    enable_led();
    /*
    ** Timer control bits:
    **  timer1:
    **   10000010
    **   ||||||||
    **   |||||+++-- 010= divide by 4
    **   |||||
    **   ||+++----- 000= take XTAL/4 clock,
    **   ||                use UD-bit for Up or Down
    **   |+-------- 0  = UD-bit: Down counting
    **   +--------- 1  = enable
    **  timer2:
    **   10110000
    **   ||||||||
    **   |||||+++-- 000= divide by 1
    **   |||||
    **   ||+++----- 110= take timer 1 overflow as clock,
    **   ||                Up or Down same as timer 1
    **   |+-------- 0  = UD-bit: Down counting (ignored in this case)
    **   +--------- 1  = enable
    */
    set_t2control( 0xB0 );
    set_t1control( 0x82 );

    /* Wait for timer 1 ms-bit set */
    while ( ((i = get_timer1()) & 0x8000) )
	;

    /* Wait for timer 1 ms-bit clear */
    while ( !((i = get_timer1()) & 0x8000) )
	;

    /* Wait for timer 1 ms-bit set */
    while ( ((i = get_timer1()) & 0x8000) )
	;

    /* Show some bits of timer2 */
    while ( ((i = get_timer2()) & 0x8000) )
	set_led( i>>3 );
}

⌨️ 快捷键说明

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