+++ /dev/null
-_led_init: CODE, 1847 0 11
-_pwm_set: CODE, 1858 0 11
-_pic_init: CODE, 1837 0 10
-_delay: CODE, 1912 0 28
-_led_set: CODE, 1869 0 16
-_main: CODE, 1940 0 108
-_pwm_init: CODE, 1885 0 27
-Total: 211
\ No newline at end of file
#include <pic16f1827.h>
#define RUNAT32MHZ /* else 16 MHz */
-#define BRIGHT_STEP 16 /* starts at 0 */
-#define BRIGHT_STEPS 16 /* includes 0 */
#define LEDBIT 0x01 /* PORTB.3 */
#if defined(RUNAT32MHZ)
TRISB &= ~LEDBIT;
}
-void led_set(unsigned short led)
+void led_set(unsigned char led)
{
if (led)
PORTB |= LEDBIT;
PORTB &= ~LEDBIT;
}
-void pwm_set(unsigned short step)
+void pwm_set(unsigned char step)
{
- CCPR1L = step * BRIGHT_STEP;
+ CCPR1L = step;
}
void delay()
{
- for (unsigned counter = 0; counter < 50000; counter++);
+ for (unsigned counter = 0; counter < 10000; counter++);
}
int main(void)
{
- unsigned short fwd = 1;
- short int step = 0;
- short int led = 0;
+ unsigned char fwd = 1;
+ unsigned char step = 0;
pic_init();
led_init();
pwm_init();
while (1) {
- led = 1 - led;
- led_set(led);
pwm_set(step);
if (fwd == 0) {
step--;
- if (step == -1) {
+ if (step == 0xff) { /* rollover */
+ led_set(0);
fwd = 1;
- step++;
+ step = 0;
}
} else /* fwd == 1 */ {
step++;
- if (step == BRIGHT_STEPS) {
+ if (step == 0) { /* rollover */
+ led_set(1);
fwd = 0;
- step--;
+ step = 0xff;
}
}
- delay(); delay();
+ delay();
}
return 0;
}