Saludos.Hola D@rkbytes. ¿Esto es para MicroCode, verdad ?
¿Se puede adaptar bien en Proton IDE?
También he subido ejemplos en C y ensamblador.
Y por supuesto que de PICBasic con MCS se puede migrar fácilmente a PICBasic de Proton IDE.
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Saludos.Hola D@rkbytes. ¿Esto es para MicroCode, verdad ?
¿Se puede adaptar bien en Proton IDE?
La frecuencia del simulador la tienes en 1 MHz, debes establecerla a 4 MHz, que es la frecuencia por defecto cuando no se declara en el compilador.
Declare Onboard_USB No
Config_Start
FOSC = INTOSC_EC, PBADEN = OFF, ICPRT = On
MCLRE = OFF, FCMEN = OFF, IESO = On, PWRT = On, WDT = OFF, LVP = OFF
Config_End
;*******************************************************************************
OSCTUNE = %100000
OSCCON = %01000111 ; Frecuencia 1MHz del reloj interno.
;*******************************************************************************
All_Digital = On
ADCON1 = 0x0F
Declare LCD_Type 0
Declare LCD_DTPin PORTB.4
Declare LCD_DTPort PORTB
Declare LCD_ENPin PORTB.2
Declare LCD_RSPin PORTB.1
Declare LCD_Interface 4
Declare LCD_Lines 2
; Declaración de variables
Dim Ocupado As Byte
Dim TempX As Word
Dim Temp1 As Word
Dim Temp2 As Word
Symbol DQ = PORTE.2 ; Pin del DS18B20 DQ One-Wire
Symbol DQ_DIR = TRISE.2 ; Puerto E2 ds 18B20
Inicio:
Cls ; Inicializar el LCD (También lo borra)
Print At 1,1,"Inicializando..."
DelayMS 1000
Print At 1,1," Temperatura "
Print At 2,5,"000.0",0xDF," C"
; Enviar ceros para estabilizar el puerto
;HSerOut [0]
DelayMS 100
Programa:
GoSub Leer_DS18B20
Print At 1,1," Temperatura "
If TempX.11 = 1 Then ; Si el bit 11 de "TempX" está en 1, entonces la temperatura es negativa.
Temp1 = (~TempX >> 4)
Temp2 = (16-(TempX.LowByte & 0x0F)) * 625
Temp2 = Temp2 / 20
Print At 2,1," -",Dec Temp1,".",Dec2 Temp2, " ",0xDF,"C "
; Enviar la lectura por el módulo USART
;HSerOut ["-",Dec Temp1,".",Dec2 Temp2]
Else 'Si el bit11 es 0 la temperatura es positiva
Temp1 = (TempX >> 4)
Temp2 = (TempX.LowByte & 0x0F) * 625
Temp2 = Temp2 / 20
Print At 2,1," ",Dec Temp1,".",Dec2 Temp2, " ",0xDF,"C "
;HSerOut [Dec Temp1,".",Dec2 Temp2]
End If
DelayMS 500
GoTo Programa
; Rutina para leer el DS18B20
Leer_DS18B20:
DQ_DIR = 0
DQ = 0
DelayUS 500
DQ_DIR = 1
DelayUS 100
; Verificar si el sensor está conectado.
If DQ = 1 Then
Print At 1,2,"SENSOR DS18B20"
Print At 2,3,"NO CONECTADO "
DelayMS 1000
GoTo Leer_DS18B20
End If
OWrite DQ,1,[0xCC,0x44] ; Indicar conversión.
No_Listo:
ORead DQ,4,[Ocupado] ; Verificar si el sensor está ocupado.
If Ocupado = 0 Then No_Listo ; Si está ocupado, regresar a "No_Listo"
OWrite DQ,1,[0xCC,0xBE] ; Indicar leer la temperatura.
; Guardar los datos de la lectura.
ORead DQ,2,[TempX.LowByte,TempX.HighByte]
Return
End
Eso es debido a una mala configuración del registro OSCCON.La frecuencia la configuro a 1 MHz porque si no, corre muy rápido el micro en tiempo real.
Nuevamente adjunto el programa con los cambios necesarios y para Fosc = 4 MHz.Corregí todos esos errores pero el me dice que el sensor no está conectado. "SENSOR DS18B20 NO CONECTADO"
char timeout; // counter
void main(void) {
CMCON = 7; // disable comparators (all digital)
// PORTA: all outputs except RA5,6,7 (_MCLR and ext_osc pins)
PORTA = 0; // leds off
TRISA = 0b11100000;
// Rx_Led0..3 = RA0..RA3 (1 lit, LED anodes)
// PORTB default: all inputs (internal pullups), nor used
//TRISB = 0xFF;
NOT_RBPU_bit = 0; // pullups on to avoid floating inputs
Delay_100ms(); // library function
UART1_Init(1200); //
Delay_100ms();
while(1) { // infinite loop
do { // wait for a char received via RF (TTL level RS232)
Delay_1ms(); // library function
} while (!UART1_Data_Ready());
if (UART1_Read() != 0xAA) // read the received data (ident char?)
continue;
// wait with appr 20 ms timeout for the next (LED control) char:
timeout = 20;
do {
if (UART1_Data_Ready()) {
PORTA = UART1_Read(); // set LED port
break;
}
Delay_1ms();
} while (--timeout, !Z_bit); // until !timeout
} // infinite loop
} // end of main()
// ----- end of RX program (4 ram, 101 code)
Eso no es un proyecto, ese es el código.Este mi proyecto sobre UART en MikroC
Tiene que ser problema de hardware.También ya probé su interfaz VB6 y su estudio de microcódigo de PBP en hardware real, pero no trabajo.
Nos hace falta ver la palabra de configuración.0). de desarrollo Junta PIC16F628A, con resonador cerámico oscilador 4 Mhz.
Con un solo adaptador de USB a TTL RS-232 es suficiente.1). Desde la interfaz de PC Visual Basic 6, establecer el puerto de remito en el puerto del convertidor del USB (Aten).
2). esta placa de Desarrollo Conecte con USB convertidor Db9 (Aten), ves mi foto.
3). de este convertidor del USB (db9), conecté a dB9 a RS232 serial TTL.
4). este DB9 a RS232 TTL, el RX y TX conecté a Junta de desarrollo del PIC16F628A.
Por eso insisto que necesitamos ver la palabra de configuración.Estoy seguro de que la configuración es correcta, he probado la simulación y está funcionando bien, pero cuando traigo a hardware real, no trabaja.
PORTA = UART1_Read(); // set LED port