Liviu M Postat Septembrie 10, 2016 Partajează Postat Septembrie 10, 2016 (editat) Eu m-am cam saturat sa repet: cand primiti erori de compilare, cele mai utile informatii care trebuie postate sunt erorile in sine. Editat Septembrie 10, 2016 de Liviu M Link spre comentariu
mars01 Postat Septembrie 10, 2016 Partajează Postat Septembrie 10, 2016 Ai doua erori: 1. Nu ai incheiat acolada finala pentru functia 3. Practic mai trebuie sa adaugi o acolada de inchidere chiar inainte sa inceapa functia 4 2. In functia 4, pe la mijlocul ei declari o variabila int j. Declaratia variabilelor se face intotdeauna la inceputul programului sau functiei. In cazul tau, mai concret, trebuie sa muti declaratia aceasta imediat dupa acolada de deschidere a functiei 4. Dupa aceste modificari, programul se compileaza fara erori. Link spre comentariu
The_Reaper Postat Septembrie 11, 2016 Partajează Postat Septembrie 11, 2016 Am facut modificarile, a functionat din prima, mars inca o data multumesc mult. Dupa ce testez jocul de lumini o sa postez proiectul pe forum. Link spre comentariu
The_Reaper Postat Septembrie 14, 2016 Partajează Postat Septembrie 14, 2016 Revin cu un update, am testat jocul de lumini si am observat o problema, jocul porneste pana nu apas butonul. Cum se poate rezolva?? Link spre comentariu
Elison Postat Septembrie 14, 2016 Partajează Postat Septembrie 14, 2016 Initializeaza varaiabila i cu valoarea 4. Link spre comentariu
The_Reaper Postat Septembrie 15, 2016 Partajează Postat Septembrie 15, 2016 (editat) Am modificat aici i=4 (sper ca este corect), dar nu mai porneste deloc jocul. Editat Septembrie 15, 2016 de The_Reaper Link spre comentariu
mars01 Postat Septembrie 15, 2016 Partajează Postat Septembrie 15, 2016 (editat) Salut, Elison se referea la urmatorul hack. Inlocuiesti linia: unsigned int i; care se vede mai jos, #define BUTON RA0_bit#define INPUT 1#define OUTPUT 0#define APASAT 0#define NR_JOCURI 4unsigned int i;//Timer0//Prescaler 1:4; TMR0 Preload = 6; Actual Interrupt Time : 1 msvoid InitTimer0(){ OPTION_REG = 0x81; TMR0 = 6; INTCON = 0xA0;}// restul de cod cu linia: unsigned int i = 4; Editat Septembrie 15, 2016 de mars01 Link spre comentariu
The_Reaper Postat Septembrie 15, 2016 Partajează Postat Septembrie 15, 2016 Am facut modificarea, acelasi rezultat, tot trebuie apasat sa porneasca Link spre comentariu
Elison Postat Septembrie 15, 2016 Partajează Postat Septembrie 15, 2016 (editat) Revin cu un update, am testat jocul de lumini si am observat o problema, jocul porneste pana nu apas butonul. Cum se poate rezolva?? Exprimarea ta nu este clara. Daca vrei sa porneasca un joc de lumini cand alimentezi circuitul, trebuie sa initializezi variabila i , asa cum foarte clar ti-a explicat @mars01, cu o constanta corespunzatoare jocului pe care il doresti. Daca vrei sa porneasca doar cand apesi butonul, pui i=4 Editat Septembrie 15, 2016 de Elison Link spre comentariu
The_Reaper Postat Septembrie 16, 2016 Partajează Postat Septembrie 16, 2016 Gata, am rezolvat , jocul porneste la alimentarea circuitului. https://youtu.be/jkg0h7ehbIQ Multumiri pentru ajutor lui mars01 si Elison. Link spre comentariu
iuli09 Postat Martie 28, 2017 Partajează Postat Martie 28, 2017 Nu inteleg cum functioneaza operatorul "%" https://download.mikroe.com/documents/compilers/mikroc/pic/help/arithmetic_operators.htm Citesc despre el ca ar trebui sa returneze restul impartirii a doua numere intregi ; si avem ca exemplu : /* for example: */ 9 % 3; /* equals 0 */ 7 % 3; /* equals 1 */ -7 % 3; /* equals -1 */ ... cu precizarea : "Remainder operand % works only with integers; the sign of result is equal to the sign of the first operand:" 9%3 e in regula : restul e 0 dar de ce la 7%3 rezultatul e 1 ? M-am lovit de acest obstacol incercand sa inteleg programul urmator : // LCD module connections sbit LCD_RS at RB2_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB2_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connections int t; char a; char lcd[] = "000 Degree"; void main() { ADCON1 = 0x04; Lcd_Init(); Lcd_Cmd(_LCD_CURSOR_OFF); do { Lcd_Cmd(_LCD_CLEAR); Lcd_out(1,1, "Temperature:"); t = ADC_Read(0); t = t * 0.4887; a = t%10; lcd[2] = a + '0'; t = t/10; a = t%10; lcd[1] = a + '0'; t = t/10; a = t%10; lcd[0] = a + '0'; Lcd_out(2,1,lcd); Delay_ms(100); }while(1); } Link spre comentariu
Elison Postat Martie 28, 2017 Partajează Postat Martie 28, 2017 Pentru ca se retine doar restul impartirii a doi intregi. Cand se imparte 9 la 3,rezultatul impartirii este 0, iar restul este 0, cand se imparte 7 la 3 rezultatul impartirii este 2, iar restul este 1. Semnul rezultatului are semnul primului operand. Link spre comentariu
iuli09 Postat Martie 28, 2017 Partajează Postat Martie 28, 2017 (editat) Nu sunt sigur ca am inteles . Restul poate fi doar 0 sau 1 ? 0 daca restul este 0 si 1 daca restul este diferit de 0 ? Pentru ca in cazul 7 impartit la 3 restul ar fi 33 (sau 0.33) ... si atunci de unde 1 ? Editat Martie 28, 2017 de iuli09 Link spre comentariu
rlodina Postat Martie 28, 2017 Partajează Postat Martie 28, 2017 (editat) Operatorul modulo este un pic mai pacatos : R = A % B se calculeaza cu relatia : R = A – B * (A / B) Eu i-l folosesc aproape exclusiv cand ret. zero - ex: daca intr-o bucla din 33 in 33 de iteratii trebuie sa fac ceva: for(int i=0; i< 10000; i++){ //code if (i %33 == 0) logEvents(); } In exemplu t%10 obtine ultima cifra din t. Editat Martie 28, 2017 de rlodina Link spre comentariu
Liviu M Postat Martie 28, 2017 Partajează Postat Martie 28, 2017 7 : 1 = 7 rest 0 7 : 2 = 3 rest 1 7 : 3 = 2 rest 1 7 : 4 = 1 rest 3 7 : 5 = 1 rest 2 7 : 6 = 1 rest 1 7 : 7 = 1 rest 0 LE Restul NU e partea "de dupa virgula" a unei impartiri ci, asa cum ii zice numele, e ce ramane "neimpartit". https://ro.wikipedia.org/wiki/Rest_(matematic%C4%83) Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum