Algo asi seria con banderas,
[code#include <16f877.h>
#fuses hs,nowdt,put,nowrt,nolvp,noprotect
#use delay(clock=20000000)
#use fast_io(b)
#include <lcd.c>
int8 dato=0x00;
int1 bandera=0x00;
#int_ext
ext_isr()
{
bit_set(bandera,0);
}
void main()
{
set_tris_b(0x03);
output_low(PIN_B7);
output_low(PIN_B6);
port_b_pullups(TRUE);
lcd_init();
enable_interrupts(int_ext);
ext_int_edge(l_to_h);
enable_interrupts(global);
while(bandera==1)
{
delay_us(498);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,0);}
else{
bit_clear(dato,0);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,1);}
else{
bit_clear(dato,1);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,2);}
else{
bit_clear(dato,2);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,3);}
else{
bit_clear(dato,3);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,4);}
else{
bit_clear(dato,4);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,5);}
else{
bit_clear(dato,5);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,6);}
else{
bit_clear(dato,6);}
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1){
bit_set(dato,7);}
else{
bit_clear(dato,7);}
bit_clear(bandera,0);
printf(lcd_putc,"\ndato= %u",dato);
delay_ms(50);
}
}
]
Tengo una duda, que hace el while si no se cumple la condicion q esta dentro?
Este programa no me funciona.