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 …
administrator: přejmenováno z “PIC16F648A - tlacitko”
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
Tak jsem provedl mensi upravu zapojeni a osetril jsem pro Vas tu LEDku Zkousel jsem rozihani a shasinani LEDky a funguje, ale jakmile napisu tento kod:
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