Programación del microcontrolador stm8
# incluir & ltIOs tm8 s 207s 8
# incluir & ltintrinsics.h & gt
typedef unsigned char U8 . >
p>
typedef unsigned int u 16;
typedef unsigned long U32
u 16 CNT = 0;
// - inicial gpio
void GPIO_init(void)
{
PE _ DDR = 0X07
PE _ Cr 1 = 0x 07; p>
p>
PE _ CR2 = 0X00
}
// - clk valor inicial
void CLK_init(void) p>
{
CLK _ ECKR | = 0x 1; //Activar reloj externo
Y (! (CLK ECKR & 0x 2)); para reloj externo rdy p>
CLK _ CKDIVR & = 0XF9 //CPU dividida por 2
CLK _ SWR = 0x B4 //Seleccione reloj externo
Y (!(SWCR CLK & 0x 8)); //Esperando aquí.
CLK_SWCR | = 0x 2; //Habilitar reloj externo
}
// - Inicialización del temporizador 2
void TIM2_init()
{
Tim 2 _ PSCR | = 0x 04; //div 16 1.333333 us->; oscilador de cristal externo 12mhz
Tim 2 _IER | 01; //UIE habilita interrupciones.
Tim 2 _ ARRH = 0x 1d;
Tim 2 _ ARRL = 0X4c
//Tim 2 _ EGR | Habilitar
Tim 2 _ Cr 1 | = 0x 85; //APPE, URS, CEN están habilitados
}
// - función
// -Dispositivo inicial
inicialización del dispositivo nulo (void)
{
CLK_initialization();
GPIO _ init ();
Tim 2 _ init();
}
void delay_nms (entero sin signo n)
{
Int sin signo I;
for(;n & gt0;n -)
{
for(I = 0 ;i<8000;i++) ;
}
}
// - interrupción
//# definetim2 _ ovr _ UIF _Vector 0x0F temporización 2 interrupción de desbordamiento 10 ms interrupción de desbordamiento
#Pragma vector = Tim 2 _ OVR _ UIF _ vector
_ _Interrupt void Tim 2 _ OVR _ Handel (void)
{ p>
Tim 2 _ Sr 1 & = ~ 0x 01 //Borrar marca
cnt++;
}
// - principal
Administrador general no válido (no válido)
{
_ _ desactivar _ interrupción()
Inicialización del dispositivo();
_ _ habilitar _ interrupción();
mientras(1)
{
si(cnt==100)
{
CNT = 0;
pe_odr^=0x01;
}
}
}