Код:
bit oldstate, fl_in;
unsigned short count;
//************************************
void interrupt()
{ char i;
TMR0 = count;
PORTA.F1 = 1;
Delay_us(20);
for ( i = 0; i < 10; i++ ){ // здесь можно изменить длительность импульса
PORTA.F1 = 0; }
INTCON.T0IF=0;
}
//*********************************
void init(){
CMCON = 0x07;
TRISA = 0x01;
TRISB = 0;
OPTION_REG = 0x06; //
INTCON = 0xE0;//;разрешить прерывание TMR0
PORTA =0;
PORTB =0;
fl_in=0;
count=126;
oldstate=1;
}
//****************************************
void con()
{ if (fl_in==0){
count++;
PORTB = count; }
if (count==178){
fl_in=1; }
if (fl_in==1){
count--;
PORTB = count; }
if (count==126){
fl_in=0; }
}
//*****************************************
void main(){
unsigned short fl_inc,tmp;
init();
while(1) {
if (oldstate && Button(&PORTA, 0, 1, 0)) { // Detect one-to-zero transition
CON(); // inc count
DELAY_MS(100);
}
}
}
//**************************************
СПАСИБО ЗА УЧАСТИЕ! ЭТО МОЯ ПЕРВАЯ ПРОГА НА СИ.
Что эта прога делает? Меняет частоту импульсов от 60 - 100 гц, при нажатии кнопки частота увеличивается пока count не достиг значения 178 (100гц) после уменьшается
пока count не достиг значения 126 (60 гц) все.
( Вы серьезно настроены по ходу программы что-то писать в TMR0, чего настоятельно не рекомендуется делать (мнение не только мое и я с этим согласен) )
Не понял, а почему нельзя? Обьясните пожалуйста чем черевата запись в TMR0
зарание спасибо.