| |
|
2171
|
Programación / .NET (C#, VB.NET, ASP) / Re: Puerto serie RS232
|
en: 23 Febrero 2009, 23:33 pm
|
Vamos a empezar desde el principio. Utilizando el Mono con gtk#, he introducido un botón normal en el formulario. El código completo lo he hecho de nuevo y ahora es así. Ejecuta sin problemas pero al pulsar el botón hay errores que no se el motivo. // MainWindow.cs created with MonoDevelop // User: metaconta at 20:59 23/02/2009 // // To change standard headers go to Edit->Preferences->Coding->Standard Headers // using System; using Gtk; using System.IO.Ports; public partial class MainWindow: Gtk.Window { public MainWindow (): base (Gtk.WindowType.Toplevel) { Build (); } protected void OnDeleteEvent (object sender, DeleteEventArgs a) { Application.Quit (); a.RetVal = true; } public SerialPort mySerial; protected virtual void OnButtonTClicked (object sender, System.EventArgs e) { mySerial = new SerialPort ("/dev/ttyS0", 9600, Parity .None, 8, StopBits .Two); mySerial.Open(); byte[] mBuffer = new byte[1]; mBuffer[0] = 0x74; // LA letra t. mySerial.Write(mBuffer, 0, mBuffer.Length); mySerial.Close(); } }
En el mensaje de error me da esto: Marshaling clicked signal Exception in Gtk# callback delegate Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Permiso denegado at System.IO.Ports.SerialPortStream.ThrowIOException () [0x00012] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/System/System.IO.Ports/SerialPortStream.cs:299 at System.IO.Ports.SerialPortStream..ctor (System.String portName, Int32 baudRate, Int32 dataBits, Parity parity, StopBits stopBits, Boolean dtrEnable, Boolean rtsEnable, Handshake handshake, Int32 readTimeout, Int32 writeTimeout, Int32 readBufferSize, Int32 writeBufferSize) [0x0001e] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/System/System.IO.Ports/SerialPortStream.cs:36 at (wrapper remoting-invoke-with-check) System.IO.Ports.SerialPortStream:.ctor (string,int,int,System.IO.Ports.Parity,System.IO.Ports.StopBits,bool,bool,System.IO.Ports.Handshake,int,int,int,int) at System.IO.Ports.SerialPort.Open () [0x00078] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/System/System.IO.Ports/SerialPort.cs:563 at (wrapper remoting-invoke-with-check) System.IO.Ports.SerialPort:Open () at MainWindow.OnButtonTClicked (System.Object sender, System.EventArgs e) [0x00018] in /home/metaconta/Prueba_02/Prueba_02/MainWindow.cs:28 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00057] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System.Reflection/MonoMethod.cs:157 --- End of inner exception stack trace --- at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00071] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System.Reflection/MonoMethod.cs:167 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System.Reflection/MethodBase.cs:110 at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x000b4] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System/Delegate.cs:422 at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x00018] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System/MulticastDelegate.cs:71 at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in /usr/src/packages/BUILD/mono-2.0.1/mcs/class/corlib/System/Delegate.cs:394 at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) [0x0004f] in /usr/src/packages/BUILD/gtk-sharp-2.12.6/glib/Signal.cs:195 at GLib.SignalClosure.Invoke (GLib.ClosureInvokedArgs args) [0x0000c] in /usr/src/packages/BUILD/gtk-sharp-2.12.6/glib/SignalClosure.cs:118 at GLib.SignalClosure.MarshalCallback (IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) [0x0007a] in /usr/src/packages/BUILD/gtk-sharp-2.12.6/glib/SignalClosure.cs:146 at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal) in /usr/src/packages/BUILD/gtk-sharp-2.12.6/glib/ExceptionManager.cs:line 58 at GLib.SignalClosure.MarshalCallback(IntPtr raw_closure, IntPtr return_val, UInt32 n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) in /usr/src/packages/BUILD/gtk-sharp-2.12.6/glib/SignalClosure.cs:line 173 at Gtk.Application.gtk_main() at Gtk.Application.Run() in /usr/src/packages/BUILD/gtk-sharp-2.12.6/gtk/generated/AboutDialog.cs:line 1 at Prueba_02.MainClass.Main(System.String[] args) in /home/metaconta/Prueba_02/Prueba_02/Main.cs:line 18
|
|
|
|
|
2172
|
Programación / .NET (C#, VB.NET, ASP) / Puerto serie RS232
|
en: 23 Febrero 2009, 21:39 pm
|
Hola: Estoy con MonoDevelop con el openSUSE 11.1. Mirando esta web http://www.mono-project.com/HowToSystemIOPorts quiero configurar el puerto serie como a mi me de la gana. Lo he puesto así: mySerial new SerialPort ("/dev/ttyS0", 9600, None, 8, Two );
La otra manera con comillas así: mySerial new SerialPort ("/dev/ttyS0", 9600, "None", 8, "Two");
Código completo: // MainWindow.cs created with MonoDevelop // User: metaconta at 17:46 23/02/2009 // // To change standard headers go to Edit->Preferences->Coding->Standard Headers // using System; using Gtk; using System.IO.Ports; public partial class MainWindow: Gtk.Window { public MainWindow (): base (Gtk.WindowType.Toplevel) { Build (); } protected void OnDeleteEvent (object sender, DeleteEventArgs a) { Application.Quit (); a.RetVal = true; } protected virtual void OnButton1Clicked (object sender, System.EventArgs e) { mySerial new SerialPort ("/dev/ttyS0", 9600, None, 8, Two ); } }
Me da error en la línea 25. ¿Qué puede ser? Estoy intentando pasar este código de Visual C# a Mono, puedes ver el código en las páginas 153 y 154 en este manual en PDF. http://www.abcdatos.com/tutoriales/tutorial/z9521.htmlSaludos. EDITO: He logrado abrir el puerto pero no he sido enviar el código al puerto serie. // MainWindow.cs created with MonoDevelop // User: metaconta at 17:46 23/02/2009 // // To change standard headers go to Edit->Preferences->Coding->Standard Headers // using System; using Gtk; using System.IO.Ports; public partial class MainWindow: Gtk.Window { private SerialPort mySerial; public MainWindow (): base (Gtk.WindowType.Toplevel) { Build (); } protected void OnDeleteEvent (object sender, DeleteEventArgs a) { Application.Quit (); a.RetVal = true; } protected virtual void OnButton1Clicked (object sender, System.EventArgs e) { mySerial = new SerialPort ("/dev/ttyS0", 9600, Parity .None, 8, StopBits .Two); if(mySerial == null) return; mySerial.Open(); if(!mySerial.IsOpen) { label1.Text = "Error abriendo"; mySerial.Dispose(); return; } byte[] buffer = new byte[1]; buffer[0] = 0x74; mySerial.Write(buffer, 0, 1); try { mySerial.Write(buffer, 0, 1); } catch(Exception ex) { //label1.Text = ex.Message;// + " " + ex.StackTrace; mySerial.Close(); mySerial.Dispose(); return; } mySerial.Close(); } }
Un cordial saludo.
|
|
|
|
|
2173
|
Programación / .NET (C#, VB.NET, ASP) / DE Visual C++ a Visual C#...
|
en: 10 Febrero 2009, 23:00 pm
|
Hola: Intentando pasar de VC# a VC++ esta parte que parece que no sirve. 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.IO.Ports; 10 11 namespace PicRS232 12 { 13 public partial class Form1_Principal : Form 14 { 15 // Utilizaremos un string como buffer de recepcion 16 string Recibidos; 17 public Form1_Principal() 18 { 19 InitializeComponent(); 20 // Abrir puerto mientra se ejecute la aplicación 21 if (!serialPort1.IsOpen) 22 { 23 try 24 { 25 serialPort1.Open(); 26 } 27 catch (System.Exception ex) 28 { 29 MessageBox.Show(ex.ToString()); 30 } 31 } 32 // Ejecutar la funcion Recepcion por disparo del Evento 'DataReived' 33 serialPort1 .DataReceived += new 34 System.IO.Ports.SerialDataReceivedEventHandler(Recepcion); 35 } 36 // Al recibir los datos 37 private void Recepcion(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 38 { 39 // Acumular los carácteres recibidos a nuestro 'buffer' (string) 40 Recibidos += serialPort1.ReadExisting(); 41 // Invocar o llamar al proceso de tramas 42 this.Invoke(new EventHandler (Actualizar )); 43 } 44 // Procesar los datos recibidos en el buffer y extraer tramas completas 45 private void Actualizar(object s, EventArgs e) 46 { 47 // Asignar el valor de la trama al textBox 48 textBox_visualizar_mensaje.Text = Recibidos; 49 } 50 private void button_t_Click(object sender, EventArgs e) 51 { 52 byte[] mBuffer = new byte[1]; 53 mBuffer[0] = 0x74; //ASCII letra "t". 54 serialPort1.Write(mBuffer, 0, mBuffer.Length); 55 } 56 57 private void button_b_Click(object sender, EventArgs e) 58 { 59 byte[] miBuffer = new byte[1]; 60 miBuffer[0] = 0x62; //ASCII letra "b". 61 serialPort1.Write(miBuffer, 0, miBuffer.Length); 62 } 63 64 private void button_a_Click(object sender, EventArgs e) 65 { 66 byte[] mBuffer = new byte[1]; 67 mBuffer[0] = 0x61; //ASCII letra "a". 68 serialPort1.Write(mBuffer, 0, mBuffer.Length); 69 } 70 71 private void button_l_Click(object sender, EventArgs e) 72 { 73 byte[] mBuffer = new byte[1]; 74 mBuffer[0] = 0x6C; //ASCII letra "l". 75 serialPort1.Write(mBuffer, 0, mBuffer.Length); 76 } 77 78 private void button_Espacio_Click(object sender, EventArgs e) 79 { 80 byte[] mBuffer = new byte[1]; 81 mBuffer[0] = 0x20; //ASCII letra "Espacio". 82 serialPort1.Write(mBuffer, 0, mBuffer.Length); 83 } 84 85 private void timer1_Tick(object sender, EventArgs e) 86 { 87 statusStrip1.Items[0].Text = DateTime.Now.ToLongTimeString(); 88 } 89 } 90 }
Código completo de Visual C# Express. Descargar aquí. Por ahora he hecho el código en Visual C++ pero me faltan hacer cosas que no he incuido. 1 #pragma once 2 3 4 namespace PicRS232VCPP_Prueba01 { 5 6 using namespace System; 7 using namespace System::ComponentModel; 8 using namespace System::Collections; 9 using namespace System::Windows::Forms; 10 using namespace System::Data; 11 using namespace System::Drawing; 12 using namespace System::IO::Ports; 13 14 /// <summary> 15 /// Resumen de Form1 16 /// 17 /// ADVERTENCIA: si cambia el nombre de esta clase, deberá cambiar la 18 /// propiedad 'Nombre de archivos de recursos' de la herramienta de compilación de recursos administrados 19 /// asociada con todos los archivos .resx de los que depende esta clase. De lo contrario, 20 /// los diseñadores no podrán interactuar correctamente con los 21 /// recursos adaptados asociados con este formulario. 22 /// </summary> 23 public ref class Form1 : public System::Windows::Forms::Form 24 { 25 public: 26 Form1(void) 27 { 28 InitializeComponent(); 29 // 30 //TODO: agregar código de constructor aquí 31 // 32 // Abrir puerto mientrase ejecute la aplicación 33 if(!serialPort1->IsOpen) 34 { 35 try 36 { 37 serialPort1->Open(); 38 } 39 catch (Exception ^ex) 40 { 41 MessageBox::Show(ex->ToString()); 42 } 43 } 44 } 45 46 protected: 47 /// <summary> 48 /// Limpiar los recursos que se estén utilizando. 49 /// </summary> 50 ~Form1() 51 { 52 if (components) 53 { 54 delete components; 55 } 56 } 57 private: System::Windows::Forms::Button^ button_t; 58 private: System::Windows::Forms::Button^ button_b; 59 private: System::Windows::Forms::Button^ button_a; 60 private: System::Windows::Forms::Button^ button_l; 61 private: System::Windows::Forms::Button^ button_Espacio; 62 private: System::IO::Ports::SerialPort^ serialPort1; 63 private: System::ComponentModel::IContainer^ components; 64 65 protected: 66 67 private: 68 /// <summary> 69 /// Variable del diseñador requerida. 70 /// </summary> 71 72 73 #pragma region Windows Form Designer generated code 74 /// <summary> 75 /// Método necesario para admitir el Diseñador. No se puede modificar 76 /// el contenido del método con el editor de código. 77 /// </summary> 78 void InitializeComponent(void) 79 { 80 this->components = (gcnew System::ComponentModel::Container()); 81 this->button_t = (gcnew System::Windows::Forms::Button()); 82 this->button_b = (gcnew System::Windows::Forms::Button()); 83 this->button_a = (gcnew System::Windows::Forms::Button()); 84 this->button_l = (gcnew System::Windows::Forms::Button()); 85 this->button_Espacio = (gcnew System::Windows::Forms::Button()); 86 this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components)); 87 this->SuspendLayout(); 88 // 89 // button_t 90 // 91 this->button_t->Location = System::Drawing::Point(109, 38); 92 this->button_t->Name = L"button_t"; 93 this->button_t->Size = System::Drawing::Size(75, 23); 94 this->button_t->TabIndex = 0; 95 this->button_t->Text = L"t"; 96 this->button_t->UseVisualStyleBackColor = true; 97 this->button_t->Click += gcnew System::EventHandler(this, &Form1::button_t_Click); 98 // 99 // button_b 100 // 101 this->button_b->Location = System::Drawing::Point(109, 67); 102 this->button_b->Name = L"button_b"; 103 this->button_b->Size = System::Drawing::Size(75, 23); 104 this->button_b->TabIndex = 1; 105 this->button_b->Text = L"b"; 106 this->button_b->UseVisualStyleBackColor = true; 107 this->button_b->Click += gcnew System::EventHandler(this, &Form1::button_b_Click); 108 // 109 // button_a 110 // 111 this->button_a->Location = System::Drawing::Point(28, 67); 112 this->button_a->Name = L"button_a"; 113 this->button_a->Size = System::Drawing::Size(75, 23); 114 this->button_a->TabIndex = 2; 115 this->button_a->Text = L"a"; 116 this->button_a->UseVisualStyleBackColor = true; 117 this->button_a->Click += gcnew System::EventHandler(this, &Form1::button_a_Click); 118 // 119 // button_l 120 // 121 this->button_l->Location = System::Drawing::Point(190, 67); 122 this->button_l->Name = L"button_l"; 123 this->button_l->Size = System::Drawing::Size(75, 23); 124 this->button_l->TabIndex = 3; 125 this->button_l->Text = L"l"; 126 this->button_l->UseVisualStyleBackColor = true; 127 this->button_l->Click += gcnew System::EventHandler(this, &Form1::button_l_Click); 128 // 129 // button_Espacio 130 // 131 this->button_Espacio->BackColor = System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(255)), static_cast<System::Int32>(static_cast<System::Byte>(128)), 132 static_cast<System::Int32>(static_cast<System::Byte>(0))); 133 this->button_Espacio->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, 134 static_cast<System::Byte>(0))); 135 this->button_Espacio->Location = System::Drawing::Point(190, 96); 136 this->button_Espacio->Name = L"button_Espacio"; 137 this->button_Espacio->Size = System::Drawing::Size(75, 23); 138 this->button_Espacio->TabIndex = 4; 139 this->button_Espacio->Text = L"Espacio"; 140 this->button_Espacio->UseVisualStyleBackColor = false; 141 this->button_Espacio->Click += gcnew System::EventHandler(this, &Form1::button_Espacio_Click); 142 // 143 // serialPort1 144 // 145 this->serialPort1->StopBits = System::IO::Ports::StopBits::Two; 146 // 147 // Form1 148 // 149 this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); 150 this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; 151 this->ClientSize = System::Drawing::Size(292, 266); 152 this->Controls->Add(this->button_Espacio); 153 this->Controls->Add(this->button_l); 154 this->Controls->Add(this->button_a); 155 this->Controls->Add(this->button_b); 156 this->Controls->Add(this->button_t); 157 this->Name = L"Form1"; 158 this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; 159 this->Text = L"PicRS232VCPP"; 160 this->ResumeLayout(false); 161 162 } 163 #pragma endregion 164 private: System::Void button_t_Click(System::Object^ sender, System::EventArgs^ e) { 165 cli::array<unsigned char> ^uno = gcnew cli::array<unsigned char>(1); 166 uno[0] = 0x74; //ASCII letra "t". 167 serialPort1->Write(uno, 0, 1); 168 } 169 private: System::Void button_b_Click(System::Object^ sender, System::EventArgs^ e) { 170 cli::array<unsigned char> ^uno = gcnew cli::array<unsigned char>(1); 171 uno[0] = 0x62; //ASCII letra "b". 172 serialPort1->Write(uno, 0, 1); 173 } 174 private: System::Void button_a_Click(System::Object^ sender, System::EventArgs^ e) { 175 cli::array<unsigned char> ^uno = gcnew cli::array<unsigned char>(1); 176 uno[0] = 0x61; //ASCII letra "a". 177 serialPort1->Write(uno, 0, 1); 178 } 179 private: System::Void button_l_Click(System::Object^ sender, System::EventArgs^ e) { 180 cli::array<unsigned char> ^uno = gcnew cli::array<unsigned char>(1); 181 uno[0] = 0x6C; //ASCII letra "l". 182 serialPort1->Write(uno, 0, 1); 183 } 184 private: System::Void button_Espacio_Click(System::Object^ sender, System::EventArgs^ e) { 185 cli::array<unsigned char> ^uno = gcnew cli::array<unsigned char>(1); 186 uno[0] = 0x20; //ASCII letra "Espacio". 187 serialPort1->Write(uno, 0, 1); 188 } 189 }; 190 } 191
Saludos.
|
|
|
|
|
2178
|
Programación / Programación General / Re: programar en lenguaje maquina
|
en: 4 Febrero 2009, 07:39 am
|
Hola amigos.
Normalmente escribo en la sección de lenguaje c, porque es el que me interesa aprender , pero tengo una pregunta que me parece que es mas de esta sección que de aquella.
Porque siempre que busco en la internet un manual que enseñe a programar en lenguaje maquina, siempre salen son manuales de essambler.
Por lo que he leido una cosa es codigo maquina y otra muy diferente es el essambler, o es que de lenguaje maquina no existen manuales.
agradeciendoles.
atte inga
Puedes aprender ASM de los PIC primero que son más fáciles y más útiles que los ASM modernos si es para aplicaciones caseras. En empresas me callo. ;****************************************************************************** ;* VIDEO PIC 16F877 * ;* (C)2007 ESTEBAN P.A. * ;* * ;* PROGRAMA PARA REPRESENTAR CARÁCTERES B/N EN UNA PANTALLA DE TELEVISIÓN PAL * ;* UTILIZANDO UN PIC 16F877 A 20 MHZ * ;* * ;****************************************************************************** ;MODO 0 --> MUESTRA UNA PANTALLA DE (X,Y) 20 x 8 CARÁCTERES ;MODO 1 --> MUESTRA UNA PANTALLA DE (X,Y) 7 x 11 CARÁCTERES ;TANTO EL MODO O COMO EL MODO 1 DISPONEN DE 31 CARÁCTERES ;DE 8x8 PIXELS INDEPENDIENTES PARA CADA MODO DE VIDEO. ;PARA CAMBIAR EL MODO DE VIDEO SE DEBE CAMBIAR EL VALOR DE ;LA ETIQUETA MODO_PANT, LOS VALORES QUE ACEPTA SON 0 Y 1 ;0=MODO DE VIDEO 0(20x8 CARÁCTERES) Y MODO DE VIDEO=1(7x11 CARÁCTERES) ;EL MODO 0 UTILIZA PARTE DE LOS REGISTROS DE MEMORIA DE LOS BANCOS 0 Y 1 DEL PIC, ;LA PANTALLA EN MODO 0 ESTÁ DIVIDIDA EN DOS PARTES, LA PARTE 0(PARTE SUPERIOR DE LA PANTALLA) ;QUE CONTIENE 80 REGISTROS DE MEMORIA DEL BANCO 0 Y LA PARTE 1(PARTE INFERIOR DE LA PANTALLA), ;QUE CONTIENE OTROS 80 REGISTROS DE MEMORIA, PERO DEL BANCO1 ;EL MODO 1 UTILIZA 77 REGISTROS DE MEMORIA DEL BANCO 0 ;LA MAYORIA DE LOS CARÁCTERES GRÁFICOS QUE REPRESENTA EL PROGRAMA ;EN LA TV HAN SIDO COPIADOS DEL MICROORDENADOR SINCLAIR ZX81 ;------------------------------------------------------------------------------ ;CONFIGURACIÓN, REGISTROS Y ETIQUETAS DEL PIC __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_HS_OSC&_BODEN_OFF&_LVP_OFF list p=16f877A #include p16f877A.inc LONG_X EQU .20; NUM. MAX. DE CARÁCTERES DE FILA EN MODO 0 LONG_Y EQU .8; NUM. MAX. DE LÍNEAS DE UN CARÁCTER EN MODO 0 CHARMAXXY EQU .4; NUM. MAX DE CARÁCTERES DE COLUMNA EN MODO 0 LONGX_MODE1 EQU .7; NUM. MAX. DE CARÁCTERES DE FILA EN MODO 1 LONGY_MODE1 EQU .8; NUM. MAX DE LÍNEAS DE UN CARÁCTER EN MODO 1 CHARMAXY_MODE1 EQU .11; NUM. MAX. DE CARÁCTERES DE COLUMNA EN MODO 1 ;REGISTROS DE USO PARA EL PROGRAMA CBLOCK 20H CONT,LINE,BYTECHAR,NUMCHAR,NUMCOL CONTCHAR,LINECHAR,BUFFER,CONTLINEA,FLAGSTV INICPANT; DIRECCIÓN DE MEMORIA DONDE COMIENZA LA PARTE 0 DE LA PANTALLA EN MODO 0 Y 1 ENDC PANT2 EQU 0A0H;DIRECCIÓN DE MEMORIA DONDE COMIENZA LA PARTE 1 DE LA PANTALLA EN MODO 0 MODO_PANT EQU .0; 0=PANTALLA EN MODO 0, 1=PANTALLA EN MODO 1 ;------------------------------------------------------------------------------ ORG 00H GOTO START ORG 05H ;---------------------------JUEGO DE CARÁCTERES-------------------------------- ;-------------------------SET 0 DE CARÁCTERES MODO 0--------------------------- BYTEPANT ADDWF BYTECHAR,W ADDWF PCL,F RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000'; SPACE 0 RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01111110';A 1 RETLW B'01000010' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010' RETLW B'01111100' RETLW B'01000010';B 2 RETLW B'01000010' RETLW B'01111100' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000000' RETLW B'01000000';C 3 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111000' RETLW B'01000100' RETLW B'01000010' RETLW B'01000010';D 4 RETLW B'01000100' RETLW B'01111000' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'01000000' RETLW B'01111100' RETLW B'01000000';E 5 RETLW B'01000000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'01000000' RETLW B'01111100' RETLW B'01000000' RETLW B'01000000';F 6 RETLW B'01000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000000' RETLW B'01001110' RETLW B'01000010';G 7 RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01111110' RETLW B'01000010' RETLW B'01000010';H 8 RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111110' RETLW B'00001000' RETLW B'00001000' RETLW B'00001000';I 9 RETLW B'00001000' RETLW B'00111110' RETLW B'00000000' RETLW B'00000000' RETLW B'00000010' RETLW B'00000010' RETLW B'00000010' RETLW B'01000010' RETLW B'01000010';J 10 RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000100' RETLW B'01001000' RETLW B'01110000' RETLW B'01001000';K 11 RETLW B'01000100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01000000' RETLW B'01000000' RETLW B'01000000' RETLW B'01000000';L 12 RETLW B'01000000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01100110' RETLW B'01011010' RETLW B'01000010';M 13 RETLW B'01000010' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01100010' RETLW B'01010010';N 14 RETLW B'01001010' RETLW B'01000110' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';O 15 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010' RETLW B'01000010';P 16 RETLW B'01111100' RETLW B'01000000' RETLW B'01000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01010010';Q 17 RETLW B'01001010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010';R 18 RETLW B'01000010' RETLW B'01111100' RETLW B'01000100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000000' RETLW B'00111100';S 19 RETLW B'00000010' RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'11111110' RETLW B'00010000' RETLW B'00010000' RETLW B'00010000';T 20 RETLW B'00010000' RETLW B'00010000' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';U 21 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';V 22 RETLW B'00100100' RETLW B'00011000' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';W 23 RETLW B'01011010' RETLW B'00100100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'00100100' RETLW B'00011000' RETLW B'00011000';X 24 RETLW B'00100100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'10000010' RETLW B'01000100' RETLW B'00101000' RETLW B'00010000';Y 25 RETLW B'00010000' RETLW B'00010000' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'00000100' RETLW B'00001000' RETLW B'00010000';Z 26 RETLW B'00100000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'00000010' RETLW B'00111100';27 NÚMERO "2" RETLW B'01000000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000110' RETLW B'01001010' RETLW B'01010010';28 NÚMERO "0" RETLW B'01100010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'00000010' RETLW B'00000100' RETLW B'00001000';29 NÚMERO "7" RETLW B'00010000' RETLW B'00010000' RETLW B'00000000' RETLW B'01111100' RETLW B'10000010' RETLW B'10011010' RETLW B'10100010' RETLW B'10100010';30 COPYRIGHT RETLW B'10011010' RETLW B'10000010' RETLW B'01111100' ;------------------------------------------------------------------------------ NOP NOP NOP ;--------------------------SET 1 DE CARÁCTERES MODO1--------------------------- BYTEPANT1 CLRF PCLATH BSF PCLATH,0 ADDWF BYTECHAR,W ADDWF PCL,F RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000'; SPACE 0 RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01111110';A 1 RETLW B'01000010' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010' RETLW B'01111100' RETLW B'01000010';B 2 RETLW B'01000010' RETLW B'01111100' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000000' RETLW B'01000000';C 3 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111000' RETLW B'01000100' RETLW B'01000010' RETLW B'01000010';D 4 RETLW B'01000100' RETLW B'01111000' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'01000000' RETLW B'01111100' RETLW B'01000000';E 5 RETLW B'01000000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'01000000' RETLW B'01111100' RETLW B'01000000' RETLW B'01000000';F 6 RETLW B'01000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000000' RETLW B'01001110' RETLW B'01000010';G 7 RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01111110' RETLW B'01000010' RETLW B'01000010';H 8 RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111110' RETLW B'00001000' RETLW B'00001000' RETLW B'00001000';I 9 RETLW B'00001000' RETLW B'00111110' RETLW B'00000000' RETLW B'00000000' RETLW B'00000010' RETLW B'00000010' RETLW B'00000010' RETLW B'01000010' RETLW B'01000010';J 10 RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000100' RETLW B'01001000' RETLW B'01110000' RETLW B'01001000';K 11 RETLW B'01000100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01000000' RETLW B'01000000' RETLW B'01000000' RETLW B'01000000';L 12 RETLW B'01000000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01100110' RETLW B'01011010' RETLW B'01000010';M 13 RETLW B'01000010' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01100010' RETLW B'01010010';N 14 RETLW B'01001010' RETLW B'01000110' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';O 15 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010' RETLW B'01000010';P 16 RETLW B'01111100' RETLW B'01000000' RETLW B'01000000' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000010' RETLW B'01000010' RETLW B'01010010';Q 17 RETLW B'01001010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01111100' RETLW B'01000010';R 18 RETLW B'01000010' RETLW B'01111100' RETLW B'01000100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'00111100' RETLW B'01000000' RETLW B'00111100';S 19 RETLW B'00000010' RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'11111110' RETLW B'00010000' RETLW B'00010000' RETLW B'00010000';T 20 RETLW B'00010000' RETLW B'00010000' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';U 21 RETLW B'01000010' RETLW B'00111100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';V 22 RETLW B'00100100' RETLW B'00011000' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010' RETLW B'01000010';W 23 RETLW B'01011010' RETLW B'00100100' RETLW B'00000000' RETLW B'00000000' RETLW B'01000010' RETLW B'00100100' RETLW B'00011000' RETLW B'00011000';X 24 RETLW B'00100100' RETLW B'01000010' RETLW B'00000000' RETLW B'00000000' RETLW B'10000010' RETLW B'01000100' RETLW B'00101000' RETLW B'00010000';Y 25 RETLW B'00010000' RETLW B'00010000' RETLW B'00000000' RETLW B'00000000' RETLW B'01111110' RETLW B'00000100' RETLW B'00001000' RETLW B'00010000';Z 26 RETLW B'00100000' RETLW B'01111110' RETLW B'00000000' RETLW B'00000000' RETLW B'00011000' RETLW B'00101000' RETLW B'00001000' RETLW B'00001000';27 NÚMERO "1" RETLW B'00001000' RETLW B'00111110' RETLW B'00000000' RETLW B'00011110' RETLW B'00111111' RETLW B'00011010' RETLW B'00011111' RETLW B'00011110';28 JET SET WILLY(1) RETLW B'00001100' RETLW B'00011110' RETLW B'00111111' RETLW B'01111111' RETLW B'11111111' RETLW B'11111111' RETLW B'11011110' RETLW B'00011111';29 JET SET WILLY(2) RETLW B'00111011' RETLW B'01100011' RETLW B'01110011' RETLW B'10000000' RETLW B'11000000' RETLW B'11000000' RETLW B'11000000' RETLW B'00000000';30 JET SET WILLY(3) RETLW B'01000000' RETLW B'11000000' RETLW B'10000000' ;------------------------------------------------------------------------------ NOP NOP NOP ;------------------------------------------------------------------------------ TEXTO; EL SIGUIENTE TEXTO SE UBICARÁ EN LOS REGISTROS DE MEMORIA DEL BANCO 0 CLRF PCLATH BSF PCLATH,1 MOVF BYTECHAR,W ADDWF PCL,F DT " videopic " DT " " DT " este programa " DT " muestra caracteres " TEXTO2; EL SIGUIENTE TEXTO SE UBICARÁ EN LOS REGISTROS DE MEMORIA DEL BANCO 1 CLRF PCLATH BSF PCLATH,1 MOVF BYTECHAR,W ADDWF PCL,F DT " en una pantalla de " DT " tv mediante un pic " DT " " DT " ".126,.123,.124,.124,.125," esteban pa " ;------------------------INICIALIZACIÓN DE LOS PUERTOS------------------------- START BSF STATUS,RP0 BCF STATUS,RP1 MOVLW B'11111110' MOVWF TRISB MOVLW B'00000110' MOVWF ADCON1 MOVLW B'00000110' MOVWF TRISA MOVLW B'11010111' MOVWF TRISC MOVLW B'00000000' MOVWF SSPSTAT BCF STATUS,RP0 CLRF PORTB ;---------RUTINA DE INICIALIZACIÓN Y ENLACE A LOS MODOS DE VIDEO--------------- MOVLW MODO_PANT MOVWF FLAGSTV MOVLW B'00100000' MOVWF SSPCON CALL BORRAPANT; INSERTA EN LOS REGISTROS DE MEMORIA EL VALOR "0" CALL CONV_CHAR; CONVIERTE LOS VALORES ASCII DE LOS TEXTOS A VALORES CALL CONV_CHAR2;PARA QUE PUEDAN SER UTILIZADOS POR EL PROGRAMA BTFSS FLAGSTV,0 GOTO START_MODE0; PONE LA PANTALLA EN MODO 0 GOTO START_MODE1; PONE LA PANTALLA EN MODO 1 ;----------------------------------MODO DE VIDEO 0----------------------------- PAUSA2US NOP NOP NOP NOP NOP NOP RETURN STARTMODE0 NOP; ESTOS DOS NOP SON PARA SINCRONIZAR LOS 20 PRIMEROS NOP; CARACTERES CON EL RESTO DE LINEAS MODE0 CLRF SSPCON CLRF PORTC BCF PORTA,0; INICIO DEL PULSO DE SINCRONISMO HORIZONTAL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BSF PORTA,0; FIN DEL PULSO DE SINCRONISMO HORIZONTAL CALL PAUSA4US CALL PAUSA4US CALL PAUSA2US BSF SSPCON,5 NOP MOVF INDF,W; COMIENZO DE LOS 20 CARÁCTERES CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F NOP NOP NOP NOP NOP NOP NOP BCF SSPBUF,5 CALL PAUSA4US CALL PAUSA2US NOP NOP NOP NOP NOP NOP INCF BYTECHAR,F DECFSZ NUMCHAR,F; CARACTERES 8*8 COMPLETOS? GOTO NOCOMPLETOS CLRF BYTECHAR MOVLW LONG_Y MOVWF NUMCHAR DECFSZ NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? GOTO MODE0 NOP; COMIENZO DE LA SEGUNDA PARTE DE LA PANTALLA NOP MODE0_ZONA2 CLRF SSPCON CLRF PORTC BCF PORTA,0; INICIO SYNC BTFSS FLAGSTV,0 GOTO REG_ZONA2 NOP NOP NOP NOP NOP NOP NOP NOP NOP SIGUE_ZONA2 NOP NOP NOP NOP NOP NOP NOP BSF PORTA,0; FIN SYNC CALL PAUSA4US CALL PAUSA4US CALL PAUSA2US BSF SSPCON,5 NOP MOVF INDF,W; COMIENZO DE LOS 20 CARACTERES CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F MOVF INDF,W CALL BYTEPANT MOVWF SSPBUF INCF FSR,F NOP NOP NOP NOP NOP NOP NOP BCF SSPBUF,5 CALL PAUSA4US CALL PAUSA2US NOP NOP NOP NOP NOP NOP INCF BYTECHAR,F DECFSZ NUMCHAR,F; CARACTERES 8*8 COMPLETOS? GOTO NOCOMPLETOS_ZONA2 CLRF BYTECHAR MOVLW LONG_Y MOVWF NUMCHAR DECFSZ NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? GOTO MODE0_ZONA2 RETURN NOCOMPLETOS_ZONA2 NOP MOVLW LONG_X SUBWF FSR,F GOTO MODE0_ZONA2 REG_ZONA2 MOVLW CHARMAXXY MOVWF NUMCOL MOVLW PANT2 MOVWF FSR BSF FLAGSTV,0 GOTO SIGUE_ZONA2 NOCOMPLETOS NOP MOVLW LONG_X SUBWF FSR,F GOTO MODE0 ;---------------------------SINCRONISMO VERTICAL------------------------------- PAUSA4P5 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP RETURN PAUSA27P4 CALL PAUSA4P5 CALL PAUSA4P5 CALL PAUSA4P5 CALL PAUSA4P5 CALL PAUSA4P5 CALL PAUSA4P5 RETURN PIGUALADORES BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 BCF PORTA,0 CALL PAUSA27P4 BSF PORTA,0 CALL PAUSA4P5 RETURN PVERTICALESALM BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 BSF PORTA,0 CALL PAUSA27P4 BCF PORTA,0 CALL PAUSA4P5 RETURN SYNCVERT CLRF SSPCON CLRF PORTC CALL PIGUALADORES CALL PVERTICALESALM CALL PIGUALADORES RETURN PAUSA4US NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP RETURN ;----------------------------------LINEA NEGRA--------------------------------- LINEA64US CLRF SSPCON CLRF PORTC BCF PORTA,0 CALL PAUSA4US BSF PORTA,0 CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP RETURN ;---------------------GENERACION DE UN CUADRO DE TV EN MODO 0------------------ START_MODE0 PANTALLA CLRF FLAGSTV CLRF BYTECHAR MOVLW CHARMAXXY MOVWF NUMCOL MOVLW LONG_Y MOVWF NUMCHAR MOVLW INICPANT MOVWF FSR MOVLW .124 MOVWF LINE NL1 CALL LINEA64US DECFSZ LINE,F GOTO NL1 CALL STARTMODE0 MOVLW .124 MOVWF LINE NL3 CALL LINEA64US DECFSZ LINE,F GOTO NL3 BCF PORTA,0 CALL PAUSA4US BSF PORTA,0 CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL SYNCVERT GOTO PANTALLA ;-----------------GENERACION DE UN CUADRO DE TV EN MODO 1---------------------- START_MODE1 MOVLW B'00100001' MOVWF SSPCON PANTALLA_MODE1 CLRF BYTECHAR MOVLW CHARMAXY_MODE1 MOVWF NUMCOL MOVLW LONGY_MODE1 MOVWF NUMCHAR MOVLW INICPANT MOVWF FSR MOVLW .30 MOVWF LINE NM1 CALL LINEA64US DECFSZ LINE,F GOTO NM1 CALL MODE1 MOVLW .18 MOVWF LINE NM3 CALL LINEA64US DECFSZ LINE,F GOTO NM3 BCF PORTA,0 CALL PAUSA4US BSF PORTA,0 CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL PAUSA4US CALL SYNCVERT GOTO PANTALLA_MODE1 ;------------------------------MODO DE VIDEO 1--------------------------------- MODE1 CLRF SSPCON CLRF PORTC BCF PORTA,0; INICIO DEL PULSO DE SINCRONISMO HORIZONTAL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BSF PORTA,0; FIN DEL PULSO DE SINCRONISMO HORIZONTAL CALL PAUSA4US NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00100001' MOVWF SSPCON MOVF INDF,W; COMIENZO DE LOS 7 CARACTERES CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F; FIN DE LOS 7 CARACTERES NOP NOP NOP NOP NOP NOP NOP CLRF SSPBUF NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP INCF BYTECHAR,F NOP NOP NOP MOVLW LONGX_MODE1 SUBWF FSR,F DECF BYTECHAR,F NOP NOP ;REPITE LA LINEA CLRF SSPCON CLRF PORTC BCF PORTA,0; INICIO DEL SINCRONISMO HORIZONTAL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BSF PORTA,0; FIN DEL SINCRONISMO HORIZONTAL CALL PAUSA4US NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00100001' MOVWF SSPCON MOVF INDF,W; COMIENZO DE LOS 7 CARACTERES CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F; FIN DE LOS 7 CARACTERES NOP NOP NOP NOP NOP NOP NOP CLRF SSPBUF NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP INCF BYTECHAR,F NOP NOP NOP MOVLW LONGX_MODE1 SUBWF FSR,F DECF BYTECHAR,F NOP NOP ;REPITE LA LINEA CLRF SSPCON CLRF PORTC BCF PORTA,0; INICIO DEL SINCRONISMO HORIZONTAL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BSF PORTA,0; FIN DEL SINCRONISMO HORIZONTAL CALL PAUSA4US NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOVLW B'00100001' MOVWF SSPCON MOVF INDF,W; COMIENZO DE LOS 7 CARACTERES CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F MOVF INDF,W CALL BYTEPANT1 MOVWF SSPBUF CALL DELAY_MODE1 INCF FSR,F; FIN DE LOS 7 CARACTERES NOP NOP NOP NOP NOP NOP NOP CLRF SSPBUF NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP INCF BYTECHAR,F DECFSZ NUMCHAR,F; CARACTERES 8*8 COMPLETOS? GOTO NOCOMPLETOS_MODE1 CLRF BYTECHAR MOVLW LONGY_MODE1 MOVWF NUMCHAR DECFSZ NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? GOTO MODE1 RETURN NOCOMPLETOS_MODE1 NOP MOVLW LONGX_MODE1 SUBWF FSR,F GOTO MODE1 DELAY_MODE1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP RETURN ;------------------------------------------------------------------------------ ;PONE A "0" LOS REGISTROS DE MEMORIA DEL BANCO 0 Y 1 ,QUE UTILIZA ;EL PROGRAMA PARA REPRESENTAR LOS CARACTERES EN PANTALLA. BORRAPANT BCF STATUS,RP0 BCF STATUS,RP1 MOVLW .80 MOVWF CONT MOVLW INICPANT MOVWF FSR BORRA MOVLW B'00000000' MOVWF INDF INCF FSR,F DECFSZ CONT,F GOTO BORRA BORRAPANT2 BCF STATUS,RP0 BCF STATUS,RP1 MOVLW .80 MOVWF CONT MOVLW PANT2 MOVWF FSR BORRA2 MOVLW B'00000000' MOVWF INDF INCF FSR,F DECFSZ CONT,F GOTO BORRA2 RETURN ;------------------------------------------------------------------------------ ;CONVIERTE LOS CARACTERES ASCII DE LOS TEXTOS A CARÁCTERES PARA QUE PUEDAN SER UTILIZADOS POR EL PROGRAMA CONV_CHAR MOVLW .80; NUMERO DE CARACTERES A MOSTRAR EN EL BANCO0 MOVWF CONT MOVLW INICPANT MOVWF FSR CLRF BYTECHAR; CONTIENE EL PUNTERO DE LA POSICION DE TEXTO OTRAVEZ CALL TEXTO MOVWF INDF MOVLW .96 MOVWF LINE MOVF LINE,W SUBWF INDF,F BCF STATUS,C RLF INDF BCF STATUS,C RLF INDF BCF STATUS,C RLF INDF INCF BYTECHAR,F INCF FSR,F DECFSZ CONT,F GOTO OTRAVEZ CLRF PCLATH RETURN CONV_CHAR2 MOVLW .80; NUMERO DE CARACTERES A MOSTRAR EN EL BANCO1 MOVWF CONT MOVLW PANT2 MOVWF FSR CLRF BYTECHAR; CONTIENE EL PUNTERO DE LA POSICION DE TEXTO OTRAVEZ2 CALL TEXTO2 MOVWF INDF MOVLW .96 MOVWF LINE MOVF LINE,W SUBWF INDF,F BCF STATUS,C RLF INDF BCF STATUS,C RLF INDF BCF STATUS,C RLF INDF INCF BYTECHAR,F INCF FSR,F DECFSZ CONT,F GOTO OTRAVEZ2 CLRF PCLATH RETURN END
En esta web veo interesante este tipo de ASM. http://usuarios.lycos.es/zootronica/modules.php?name=News&file=article&sid=32Cuadno ya sepas algo, ya puedes hacer el de PC. También puedes hacer cosas con PIC y Puerto serie RS232 y interfaz Visual C#. http://www.abcdatos.com/tutoriales/tutorial/z9521.htmlSaludos.
|
|
|
|
|
2179
|
Media / Juegos y Consolas / YaBasic en PS2.
|
en: 26 Diciembre 2008, 15:23 pm
|
|
Hola:
Me encontré una demo de la PS2 que tenía guardada hace ya muchos años. Tiene YaBasic, en su día pasaba de él porque no lo entiendo pero me llamó la curiosidad y voy a probar a ver que se hace con él.
¿Hay algo parecido a PlayStation 3 o no tiene nada de eso?
Un cordial saludo.
|
|
|
|
|
|
| |
|