Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Eleкtro en 1 Marzo 2016, 11:10 AM
Efectivamente la utilización de la instrucción Goto es totalmente irrecomendable tanto por Microsoft en la MSDN así como de forma no-oficial en cualquier otro lenguaje que soporte Goto y por cualquier programador con los conocimientos suficientes para entender lo que su uso implica[...]
; ZONA DE DATOS *******************************************************
LIST P=16F887
INCLUDE <P16F887.INC>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
__IDLOCS 0x1234
CBLOCK 0x20
TeclaPulsada ; Va a guardar el contenido de la tecla pulsada.
MensajeApuntado ; Va a guarda la dirección del mensaje apuntado.
Relays ; Estado de los relays
Estado ; Estado general
ENDC
#DEFINE PEntradasB PORTB ; Define puerto de salidas.
#DEFINE EntradaR1B 0 ; Define dónde se sitúa cada salidas.
#DEFINE EntradaR2B 1
#DEFINE EntradaR3B 2
#DEFINE EntradaR4B 3
#DEFINE EntradaR5B 4
#DEFINE EntradaR6B 5
#DEFINE EntradaR7B 6
#DEFINE EntradaR8B 7
#DEFINE PSalidasD PORTD
#DEFINE SalidaR1D 0
#DEFINE SalidaR2D 1
#DEFINE SalidaR3D 2
#DEFINE SalidaR4D 3
#DEFINE SalidaR5D 4
#DEFINE SalidaR6D 5
#DEFINE SalidaR7D 6
#DEFINE SalidaR8D 7
TECLA_RELE_1_ON EQU 'q' ; Código de las teclas utilizadas.
TECLA_RELE_1_OFF EQU 'a'
TECLA_RELE_2_ON EQU 'w'
TECLA_RELE_2_OFF EQU 's'
TECLA_RELE_3_ON EQU 'e'
TECLA_RELE_3_OFF EQU 'd'
TECLA_RELE_4_ON EQU 'r'
TECLA_RELE_4_OFF EQU 'f'
TECLA_RELE_5_ON EQU 't'
TECLA_RELE_5_OFF EQU 'g'
TECLA_RELE_6_ON EQU 'y'
TECLA_RELE_6_OFF EQU 'h'
TECLA_RELE_7_ON EQU 'u'
TECLA_RELE_7_OFF EQU 'j'
TECLA_RELE_8_ON EQU 'i'
TECLA_RELE_8_OFF EQU 'k'
TECLA_INICIO EQU 'z'
TECLA_PARADA EQU ' ' ; Código de la tecla espaciadora, (hay un espacio,
; tened cuidado al teclear el programa).
TECLA_INFO EQU 'n'
ENTER EQU 0x0A ; Código de tecla "Enter" o "Retorno de Carro".
CAMBIO_LINEA EQU 0x0D ; Código para el cambio de línea.
ORG 0x2100 ; Corresponde a la dirección 0 de la zona EEPROM
; de datos.
DE 0x00,2,3
;****************************************************************************
;* ZONA DE CODIGOS *
;****************************************************************************
;****************************************************************************
;* Rutina Principal *
;****************************************************************************
ORG 0x00
goto Inicio
ORG 4 ; Aquí se sitúa el vector de interrupción para
goto LeeEntradasVisualiza ; atender las subrutinas de interrupción.
Inicio
call LCD_Inicializa ; Inicializa el display LCD
call RS232_Inicializa ; Inicializa RS232.
bsf PEntradasB,EntradaR1B
bsf PEntradasB,EntradaR2B
bsf PEntradasB,EntradaR3B
bsf PEntradasB,EntradaR4B
bsf PEntradasB,EntradaR5B
bsf PEntradasB,EntradaR6B
bsf PEntradasB,EntradaR7B
bsf PEntradasB,EntradaR8B
bcf PSalidasD,SalidaR1D
bcf PSalidasD,SalidaR2D
bcf PSalidasD,SalidaR3D
bcf PSalidasD,SalidaR4D
bcf PSalidasD,SalidaR5D
bcf PSalidasD,SalidaR6D
bcf PSalidasD,SalidaR7D
bcf PSalidasD,SalidaR8D
BANKSEL CM1CON0
movlw b'00000111'
movwf CM1CON0
movwf CM2CON0
movwf CM2CON1
BANKSEL ANSEL
clrf ANSEL
clrf ANSELH
BANKSEL TRISB
movlw b'11111111'
movwf TRISB
clrw
clrf TRISD
BANKSEL PORTD
call RS232_LineasBlanco ; Visualiza unas cuantas líneas en blanco
call RS232_LineasBlanco ; para limpiar la pantalla.
movlw b'10001000' ; Habilita la interrupción RBI y la general.
movwf INTCON
Principal ; apagadas.
sleep
goto Principal ; Loop Infinito
;****************************************************************************
;* Mensajes *
;****************************************************************************
Mensajes
addwf PCL,F
MensajeParado
DT "Sistema DESACTIVADO ", 0x00
Mensaje_Reles
DT " 1 2 3 4 5 6 7 8 RL ", 0x00
Mensaje_ON
DT " 1", 0x00
Mensaje_OFF
DT " O", 0x00
Mensaje_Cambiolinea
DT ENTER, CAMBIO_LINEA, 0x00
Mensaje_Mostrarlinea
DT "----------------", 0x00
Mensaje_Info
DT "n", 0x00
; DT "FirmWare v2.15 "
; DT ENTER, CAMBIO_LINEA
; call LCD_Linea2
; DT " PIC16F887 "
; DT ENTER, CAMBIO_LINEA
; call Retardo_2s
; call LCD_Linea1
; DT " metaconta "
; DT ENTER, CAMBIO_LINEA
; call LCD_Linea2
; DT " @gmail.com ", 0x00
; call Retardo_2s
Mensaje_Activar
DT " Todos ACTIVOS ", 0x00
Mensaje_IN
DT " IN", 0x00
Mensaje_OUT
DT " OUT", 0x00
Mensaje_Avisos
DT "*** ALARMA ***", 0x00
MensajeEntradas
DT ENTER, CAMBIO_LINEA
DT " 1 2 3 4 5 6 7 8 IN"
DT ENTER, CAMBIO_LINEA
DT "-------------------"
DT ENTER, CAMBIO_LINEA, 0x00
FinTablaASCII
;****************************************************************************
; Interrupción
;****************************************************************************
;****************************************************************************
; Subrutina
;****************************************************************************
; btfss PEntradasC,EntradaR1C ; ¿Bit 0 del PORTA es "1"?
; goto D1_OFF
; bsf PSalidasD,SalidaR1D
; goto Principal
;D1_OFF
; bcf PSalidasD,SalidaR1D
LeeEntradasVisualiza
call RS232_LineasBlanco
movlw MensajeEntradas ; Nombre de las entradas.
call RS232_Mensaje ; Lo visualiza en el ordenador.
LeeEntrada1
btfss PEntradasB,EntradaR1B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada1Cerrado ; No, está cerrada.
bsf PSalidasD,SalidaR1D
call VisualizaAbierto1
goto LeeEntrada2
Entrada1Cerrado
bcf PSalidasD,SalidaR1D
call VisualizaCerrado1
LeeEntrada2
btfss PEntradasB,EntradaR2B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada2Cerrado ; No, está cerrada.
call VisualizaAbierto2
goto LeeEntrada3
Entrada2Cerrado
call VisualizaCerrado2
LeeEntrada3
btfss PEntradasB,EntradaR3B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada3Cerrado ; No, está cerrada.
call VisualizaAbierto3
goto LeeEntrada4
Entrada3Cerrado
call VisualizaCerrado3
LeeEntrada4
btfss PEntradasB,EntradaR4B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada4Cerrado ; No, está cerrada.
call VisualizaAbierto4
goto LeeEntrada5
Entrada4Cerrado
call VisualizaCerrado4
LeeEntrada5
btfss PEntradasB,EntradaR5B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada5Cerrado ; No, está cerrada.
call VisualizaAbierto5
goto LeeEntrada6
Entrada5Cerrado
call VisualizaCerrado5
LeeEntrada6
btfss PEntradasB,EntradaR6B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada6Cerrado ; No, está cerrada.
call VisualizaAbierto6
goto LeeEntrada7
Entrada6Cerrado
call VisualizaCerrado6
LeeEntrada7
btfss PEntradasB,EntradaR7B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada7Cerrado ; No, está cerrada.
call VisualizaAbierto7
goto LeeEntrada8
Entrada7Cerrado
call VisualizaCerrado7
LeeEntrada8
btfss PEntradasB,EntradaR8B ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada8Cerrado ; No, está cerrada.
call VisualizaAbierto8
goto FinVisualiza
Entrada8Cerrado
call VisualizaCerrado8
FinVisualiza
call RS232_LineasBlanco
bcf INTCON,RBIF ; Limpia el flag de reconocimiento de la
retfie
;----------------------------------------------------------------------------------------
VisualizaAbierto1
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto2
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto3
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto4
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto5
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto6
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto7
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaAbierto8
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_ON ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado1
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado2
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado3
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado4
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado5
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado6
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado7
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado8
call LCD_Linea2 ; Seleccionar la línea 2.
movlw Mensaje_OFF ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return ; interrupción.
; ---------------------------------------------------------------------------
IF (FinTablaASCII>0xFF)
ERROR "¡CUIDADO!: La tabla ha superado el tamaño de los"
MESSG "primeros 256 bytes de memoria ROM. No funcionará correctamente."
ENDIF
INCLUDE <RS232.INC>
INCLUDE <RS232MEN.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <EEPROM.INC>
END
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Porcentaje_Barra_Consola_CS
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Estilo progressBar C#";
int Variar_este_valor = 0; // De 0 a 1023.
double Resultado_Porcentaje = 0;
double Resultado_Voltios = 0;
Console.WriteLine("Introduce el valor entre 0 al 1023.");
Variar_este_valor = Convert.ToInt32(Console.ReadLine());
Resultado_Porcentaje = Variar_este_valor * (100.00 / 1023.00);
Resultado_Voltios = Variar_este_valor * (5.00 / 1023.00);
Console.WriteLine("{0} % y {1} Voltios.", Resultado_Porcentaje, Resultado_Voltios);
Console.ReadLine();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
namespace Arduino_In_Analogico_prueba_01
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
// Al recibir datos.
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos = serialPort1.ReadLine();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Como variables de clase
private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
private List<string> Leo_Dato1 = new List<string>();
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
double Porcentaje = 0;
double Voltio = 0;
// En el evento
Leo_Dato1.Clear();
Leo_Dato1.AddRange(Recibidos.Split(Separador, StringSplitOptions.RemoveEmptyEntries));
label_Lectura_Potenciometro.Text = Leo_Dato1[0].ToString();
progressBar1.Value = Convert.ToInt32(Leo_Dato1[0].ToString());
Porcentaje = Leo_Dato1[0] * (100.00 / 1023.00); // Error aquí
Voltio = Leo_Dato1[0] * (5.00 / 1023.00); // y aquí.
label_Portentaje.Text = Porcentaje.ToString();
label_Voltio.Text = Voltio.ToString();
}
}
}
Porcentaje = Leo_Dato1[0] * (100.00 / 1023.00); // Error aquí
Voltio = Leo_Dato1[0] * (5.00 / 1023.00); // y aquí.
CitarGravedad Código Descripción Proyecto Archivo Línea
Error CS0019 El operador '*' no se puede aplicar a operandos del tipo 'string' y 'double' Arduino_In_Analogico_prueba_01 C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Arduino_In_Analogico_prueba_01\Arduino_In_Analogico_prueba_01\Form1.cs 75
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string cadena = "Ejemplo de como usar TimeSpan..." +
Environment.NewLine +
"... En lugar de usar Speep";
Mecanografiar(cadena);
}
public static void Mecanografiar(string Cadena)
{
foreach (char Letra in Cadena)
{
if ((Letra) == Convert.ToChar(ConsoleKey.Enter))
{
TimeSpan interval = new TimeSpan(0, 0, 0, 0, 500);
Thread.Sleep(interval);
System.Threading.Thread.Sleep(750);
//Espera 0.75 segundos antes de hacer el salto de línea
Console.Beep(600, 100);
// beep de salto de línea
}
else
{
TimeSpan interval = new TimeSpan(0, 0, 0, 0, 90);
Thread.Sleep(interval);
// System.Threading.Thread.Sleep(90);
Console.Write(Letra);
// Hacer sonido solo cuando el caracter sea distinto de espacio
if ((Letra) != Convert.ToChar(ConsoleKey.Spacebar))
{
Console.Beep(500, 9);
}
}
}
}
}
}
Cadena = string.Format("{0}{1}{0}{0}{2}{0}{3}{0}{4}", Environment.NewLine, "*** CÓDIGO DE ACCESO ACEPTADO ***", "████████████████████████████████████████", "█ BIENVENIDO DOCTOR FRANKESTEIN █", "████████████████████████████████████████");
Mecanografiar(Cadena);
// Como variables de clase
private string[] Separador = new string[] { ",", "\r", "\n", "/n" };
private List<string> Leodato1 = new List<string>();
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
// En el evento
Leodato1.Clear();
Leodato1.AddRange(Recibidos.Split(Separador,StringSplitOptions.RemoveEmptyEntries));
label_Lectura_Potenciometro.Text = Leodato1[0].ToString();
progressBar1.Value = Convert.ToInt32(Leodato1[0].ToString());
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
namespace Arduino_In_Analogico_prueba_01
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
int Porcentaje;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
// Al recibir datos.
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos = serialPort1.ReadLine();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Como variables de clase
private string[] separador = new string[] { ",", "\r", "\n", "/n" };
private List<string> leodato1 = new List<string>();
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
// En el evento
leodato1.Clear();
leodato1.AddRange(Recibidos.Split(separador,StringSplitOptions.RemoveEmptyEntries));
label_Lectura_Potenciometro.Text = leodato1[0].ToString();
progressBar1.Value = Convert.ToInt32(leodato1[0].ToString());
progressBar1.PerformStep();
}
}
}