has_post_thumbnail gives always TRUE

Then you’re using it outside of the loop, try this instead:

<?php
if (has_post_thumbnail( get_the_ID() )) {
    get_the_post_thumbnail( get_the_ID(), array(80,80) );
} else {
    ?>
    <img src="http://example.org/<?php the_title( get_the_ID() ); ?>" width="80px" height="80px" alt="<?php the_title( get_the_ID() ); ?>">
    <?php
} ?>

If you’re not inside of a WP_Query loop, then post-specific functions like has_post_thumbnail() the_title() won’t work unless you explicitly pass a the unique-id of a post/page to them.