Hola, mira, he estado simulando tu programa en el proteus y funciona perfectamente....no entiendo si es esto lo que tu realmente quieres.... si no es así, hazlo saber ....
Ahora mismo tu programa está bien, solo tienes que hacer unos pequeños cambios....
Codigo:
#include <16F877A.h> // DISPOSITIVO A PROGRAMAR
#include <stdlib.h>
/////////////////declaracion de variables y configuracion///////////////////////
#fuses HS,NOWDT,NOPROTECT // FUSIBLES DE CONFIGURACION
#use delay(clock=4000000) // XTAL OSCILADOR EXTERNO 4MHZ // DIRECION DE DE PORTC
#byte portb=6
#byte portc=7
#byte portd=8
signed int a,b,c;
/////////////////////////////// PROGRAMA PRINCIPAL//////////////////////////////
void main(void)
{
//port_b_pullups(true); // HABILITAMOS RESISTENCIAS PULL-UP //
set_tris_b(0b00001111); // 4pines de portb como entradas
set_tris_c(0b00000000); // portc todo salidas
set_tris_d(0b00001111); // 4pines de portd como entradas
///////////////////REALIZA LA RESTA DE a Y b////////////////////
while (true)
{
a=portb & 0x0F; // a= valor de portb
b=portd & 0x0F; // b=valor de portd
c=a-b; // c= a la resta de ay b
if (c<0) // si c es negativo
portc=abs(c);
//aqui podrias poner una asignacion a un pin libre
//para marcar el signo...
else
portc=c; // si no es negativo muestre el num
}
}
Ahora mismo este codigo hace una resta de la parte baja del puerto B con la parte baja del puerto d y lo representa en la parte baja del puerto C, lo único que te queda es hacer una asignación a un bit cualquiera de los que te sobren, para representar el signo.
Porque ahora mismo tanto si restas 9-6 ó 6-9 te representará el numero 3 (por poner un ejemplo de resta cualquiera).
Ayer lo lei mal y te pido disculpas por ello, yo pense que ibas a restar un numero del uno al 15 pero veo que solo quieres restar una cifra de un digito....se me fue la pelota....

pero mejor,así es más fácil...
Usas el proteus?, si quieres te envío la simulación..... para que lo compruebes..... (yo tengo la version 6.5)
Repito, si no es esto lo que quieres, o ves que todavia no te convence el programa, nos lo dices, a ver si podemos hacer algo...
Un saludo.