PIC16F648A-jednoduchý program, LED svítí při držení tlačítka

Zdravim Vas,

po delsi odmlce jsem si opet sedl k programovani MCU. Chtel jsem si udelat uplne jednoduchy priklad s PICem 16F648A a rozihani diody pomoci tlacitka. Mam naprogramovane toto:

#include <htc.h> 

#define _XTAL_FREQ 4000000 

#define b RB0 
#define o RB1 

// Fuse bity 
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & CP_OFF);

// inicializace 
void init() { 
   TRISB0 = 1; // vstup 
   TRISB1 = 0; // vystup 
   RB1 = 0; 
} 

// hlavni program 
void main() { 
   init(); // inicializace 

   while (1) { 
      if (b) { 
         o = 1;          
      } else { 
         o = 0; 
      } 
   } 
}

a schematem viz. obrazek. Problem je v tom, ze po zapojeni se mi hned od zacatku rosviti ledka, ktera se ma rozviti pouze kdyz drzim tlacitko, nevite v cem je hacek?

P.S.: Napajim to jednoclankvou Lipolkou …

:arrow_right: administrator: přejmenováno z “PIC16F648A - tlacitko”
schema.png

s jak máš nakonfigurovaný vstup reset ?

Cčko mi sice moc neřiká, ale skus zapnout PWRTE_ON a MCLRE_ON a na pin MCLR připoj 10k pullup a trochu možná poladit podmínku if, skus něco jako
if (b = 1)

a eště když koukám, ale to bude podle compileru, skus tam
#define b TRISB.RB0
#define o PORTB.RB1

a určitě odpor k LEDce

Tak jsem provedl mensi upravu zapojeni a osetril jsem pro Vas tu LEDku :wink: Zkousel jsem rozihani a shasinani LEDky a funguje, ale jakmile napisu tento kod:

#include <htc.h>

#define _XTAL_FREQ 4000000

// Fuse bity
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & CP_OFF);

// hlavni program
void main() {
	TRISB0 = 1;
	TRISB1 = 0;

	while (1) {

		if (RB0 == 1) {
			RB1 = 1;
		} else {
			RB1 = 0;
		}

	}

}

Tak LEDka hned od zacatku sviti a shasne jen na stisknuti tlacitka, coz je presne naopak nez potrebuji aby to fakalo :frowning:
schema.png

mas 4 moznosti:
1)ledku zapojis proti VDD
2)tlacitko spinat na VDD + pulldown
3)prepises si podminku if (!(RB0 == 1))
4)prepises si prikaz za podminkou

RB1 = 0; } else { RB1 = 1;

to MiloPS3: dekuji :wink:

Tak jsem to nakonec vyresil jinym zapojeni, aby program zustal zachovany.
schema.png