Aprendí un concepto de que al cambiar el valor de bit del pin de E / S PIC, la PC primero leería el valor del puerto de E / S, cambiaría el valor y escribiría el valor modificado en el registro.
Valido este argumento usando este circuito:
ElcódigoqueescribíenmikroCparaPIC:
voidmain(){TRISB=0;PORTB.F0=1;PORTB.F1=1;while(1);}
AprendíquedebidoaqueelLEDD1solonecesita0.7V,elvoltajedeRB0esaproximadamente0.7V.CuandomiprogramaestablecióRB1en1,elPICleyóprimeroelvalordelpuertoB,obtiene00000000.YcomoRB0es0.7V,seinterpretócomobajo.Entonces,despuésdecambiarelvalor(establecerprotBcomo00000010),soloD2estáactivado.
EntoncesconectoresistenciasentrelospinesLEDyIO,ycambiéelcódigo:
voidmain(){TRISB=0;PORTB.F0=1;Delay_ms(500);PORTB.F1=1;while(1);}
Alcomienzodelasimulación,elcircuitoactúacomoloesperaba,elvoltajedeRB0esde4.5V.
Sin embargo, después del retraso de 500 ms, solo D2 está activado. Me parece extraño, pensé que D1 y D2 estarían encendidos al mismo tiempo (la lectura debería obtener 0000 0001, así que después de cambiar, el puerto B debería ser 0000 0011)