blob: dd1cd08db9728c53f9b34a70cf01e9c04d05e8fd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// Source code under CC0 1.0
#include <stdint.h>
#include "stm8.h"
#define PC GPIOC
#define PE GPIOE
unsigned int clock(void)
{
unsigned char h, l;
h = TIM1->cntrh;
l = TIM1->cntrl;
return((unsigned int)(h) << 8 | l);
}
void main(void)
{
CLK->ckdivr = 0x00; // Set the frequency to 16 MHz
CLK->pckenr2 |= 0x02; // Enable clock to timer
// Configure timer
// 1000 ticks per second
TIM1->pscrh = 0x3e;
TIM1->pscrl = 0x80;
// Enable timer
TIM1->cr1 = TIM_CR1_CEN;
// Configure pins
PE->ddr = 0x80;
PE->cr1 = 0x80;
PC->ddr = 0x80;
PC->cr1 = 0x80;
for(;;)
{
if (clock() % 1000 <= 500)
PE->odr |= 0x80;
else
PE->odr &= 0x7f;
if (clock() % 2000 <= 1000)
PC->odr |= 0x80;
else
PC->odr &= 0x7f;
}
}
|