Jeg er ved at lave en opgave, men har et lille problem
Jeg skal sammenligne 2 tal, det går også fint, men hvis det ene tal er 3 cifre og det andet er 2 cifre, så sammenlignes kun de 2 sidste cifre. Her er min kode
Det er ikke når den kommer til 127, det er lige så snart den skifter fra 99 til 100. DVS. i intervallet 0-39 og igen 99-127 (humidity bliver shiftet en, så dette er maks) kommer jeg i denne løkke: if(humidity<min_hum) alarm |= 0b00000100; else alarm &= 0b11111011;
i intervallet 80-99 kommer jeg i intervallet: if(humidity>max_hum) alarm |= 0b00001000; else alarm &= 0b11110111;
Det kunne jeg også godt tænke mig at komme i intervallet 100-127
jeg har prøvet at ændre alle variablerne til int, det løser ikke problemet
Med mindre enten compileren eller CPUen laver en fejl, så har du en fejl et andet sted i din kode. Jeg ved godt hvilken at de to forklaringer jeg satser på;)
Prøv at gøre min_hum og max_hum const. Hvis koden bagefter stadig kan kompilere, så er humidity ikke 100 når du tror den er 100. Har du en mulighed for at udskrive dens værdi?
Du skriver at humidity bliver shiften en plads. Prøv at inkludere noget af den kode, som skriver og modificerer humidity, i din næste kommentar.
Jeg er ret sikker på at du har ret i at det ikke er CPU eller compiler der laver fejl;-) Jeg koder i CodeVisionAVR, jeg kan ikke lave dem const. Jeg har lavet dem static, så kan de kun ses i denne funktion, men det hjælper ikke. Jeg udskriver værdierne på et display. så jeg er ret sikker på at den er over 100.
jeg har indsat de to funktioner, hvor jeg genere humidity. hum_get_hum henter en en værdi på en analog indgang. con_unpack_hum sammenligner med min max og min værdier.
Det blev jeg desværre ikke meget klogere af. Jeg tror ikke jeg kan hjælpe dig. Held og lykke
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.