Код: Выделить всё
#include <htc.h>
__CONFIG (MCLREN & XT & WDTDIS);
#include "bits_macros.h"
void main (void)
{
CMCON = 0x07;
TRISB = 4;
PORTB=1;
while(1)
{
if (BitIsClear(PORTB,2))
{
while(BitIsClear(PORTB,2));
InvBit(PORTB,3);
};
};
};вот еще один:
Код: Выделить всё
#include <htc.h>
#include "stdio.h"
#include "delay.h"
#include "lcd.h"
#define plus_f RB0
#define minus_f RB1
#define shag_p RB2
#define enable RA2
char lcd_buffer[8];
unsigned int freq;
unsigned char shag;
void spi (void)
{
switch (shag)
{
case 1: enable=1; break;
case 5: enable=0; break;
case 10: enable=1; break;
case 50: enable=0; break;
case 100: enable=1; break;
};
};
void vivod (void)
{
if (freq<1000)
{
sprintf(lcd_buffer," %u%u%ukHz",freq/100,(freq%100)/10,(freq%100)%10);
}
else
{
if (freq<10000)
{
sprintf(lcd_buffer," %u%u%u%ukHz",freq/1000,(freq%1000)/100,((freq%1000)%100)/10,((freq%1000)%100)%10);
}
else
{
sprintf(lcd_buffer,"%u%u%u%u%ukHz",freq/10000,(freq%10000)/1000,((freq%10000)%1000)/100,(((freq%10000)%1000)%100)/10,(((freq%10000)%1000)%100)%10);
};
};
lcd_goto(0x00);
lcd_puts(lcd_buffer);
if (shag<10)
{
sprintf(lcd_buffer," %ukHz",shag);
}
else
{
if (shag<100)
{
sprintf(lcd_buffer," %u%ukHz",shag/10,shag%10);
}
else
{
sprintf(lcd_buffer," %u%u%ukHz",shag/100,(shag%100)/10,(shag%100)%10);
};
};
lcd_goto(0x40);
lcd_puts(lcd_buffer);
spi();
};
void frequency (void)
{
if (minus_f==0)
{
freq=freq-shag;
if (freq<500){freq=30000;};
DelayMs(150);
vivod();
};
if (plus_f==0)
{
freq=freq+shag;
if (freq>30000){freq=500;};
DelayMs(150);
vivod();
};
};
void step (void)
{
if (shag_p==0)
{
while(shag_p==0);
switch (shag)
{
case 1: shag=5; break;
case 5: shag=10; break;
case 10: shag=50; break;
case 50: shag=100; break;
case 100: shag=1; break;
};
vivod();
};
};
void main (void)
{
freq=7000;
shag=1;
lcd_init();
vivod();
while(1)
{
frequency();
step();
};
};
контроллер - PIC16F628a