Antes que nada amigos, gracias por ineresarse y aportar, voy a ir respondiendo por partes aca cada uno de Uds.:
unsigned int espera;
Probé de esa manera y el problema persiste.
Si ese if está copiado textualmente del código original, pués ni debería compilar
if((espera - 0x09)> 0x05 )
le falta un paréntesis
Corregí el tema de los parentesis!! Y el problema persiste aún!!
La precedencia de los operadores es algo que he visto en muchos lenguajes de programación.
primero se ejecuta lo que está encerrado entre-paréntesis
pero no se si es un error de tipeo de maritov.
Corregí el tema de los parentesis!!!
Hola.
La variable espera deberia declararse como signed int.
PD// Ojo con los rangos de las variables.
Saludos
Probé con signed int espera; .....y el problema persiste!!!!

¿Pero por lo que entiendo signed en 8 bits no va desde -128 a 127??
Hola, el problema es como toma el compilador el default del char, que puede ser asgineado o signeado, aca es claro que lo toma como asigneado, ya que 8-9 = -1 o 0xFF y por ende mayor que 5, seguramente el compilador te permita cambiar esto o sino hace como te indica MLO.
Saludos !
Coincido con vos!! Ahora, ¿habrá alguna manera que 0xff NO sea -1?
A modo de conclusión yo veo que una variable int (o int8, ya no uso mas char para evitar confusiones) está expresada en complemento a dos, o sea que un numero de 8 bits puede representar desde -128 a 127. Mi pregunta: ¿Habrá alguna manera de NO usar
complemento a doscomplemento a dos? Yo creí que usando unsigned lo lograba....pero no!.
Saludos
Toma ya "palabro1", no seria mejor decir: "lo toma con signo o sin signo", lo comento por que seguramente algún lector del hilo se quede con la boca abierta preguntándose que es eso de "signeado"
Un saludo
1- palabro: Palabra mal dicha o estrambótica. (tomado de la página de la RAE).
Si esto que dice jfh900 hace bien a la comunicación (y asi lo creo), bienvenido sea!!!
Saludos a todos