Ayuda C Por favor, me

A

aire

Guest
Estoy aprendiendo C para la programación de sistemas embebidos.Tengo 5 preguntas de la lista de abajo.Te agradecería que si alguien puede explicar algunos de ellos o incluso todos.¿O alguien puede recomendarme alguna referencia a apoyarse estos convenios?
1 ¿Qué es esta convención como esta: (copia de Hi-tech c)
# ifndef _PIC_H
# define _PIC_H
sobre todo los puzzles subrayado muchísimo.

2.lo que es los signos &, *, , @, y el paréntesis de (sin signo) significa en el siguiente (de Hi-Tech)
LCD_RS poco estática @ ((unsigned) & PORTA * 8 2);

3.¿Qué significa esta declaración?(desde la alta tecnología c)
# define LCD_STROBE ((LCD_EN = 1), (LCD_EN = 0)),

4.¿Cuál es el guión de subrayado y <....> decir?(de C sourceboost)
# define _LCD_Read LCD_Read <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>

5.que puede explicar
_LCD_TEMPL Y la plantilla

en la parte del programa de la siguiente manera: (de C sourceboost)
......
/ / Estas macros susequent hacer el código más legible, pero puede parecer un poco confuso
# define _LCD_RawWriteNibble LCD_RawWriteNibble <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_RawWriteNibbleInline LCD_RawWriteNibbleInline <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_Read LCD_Read <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_WaitForNotBusy LCD_WaitForNotBusy <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_Write LCD_Write <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_FunctionMode LCD_FunctionMode <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_DataMode LCD_DataMode <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_RawWrite LCD_RawWrite <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>
# define _LCD_ClockOut LCD_ClockOut <InterfaceType, UseBusy, DataPort, Data_PortTris, CtrlPort, Ctrl_PortTris, RS, RW, E>

# define _LCD_TEMPL plantilla <InterfaceType unsigned char, \
unsigned char UseBusy, \
unsigned int puerto de datos, sin signo de Data_PortTris int \
unsigned int CtrlPort, unsigned Ctrl_PortTris int, \
RS unsigned char, unsigned char RW, E unsigned char>

_LCD_TEMPL
inline void LCD_FunctionMode (void)
(
rs poco volátil (at) CtrlPort.RS = 0;
)

_LCD_TEMPL
inline void LCD_DataMode (void)
(
rs poco volátil (at) CtrlPort.RS = 1;
)
......

 
Conozca los conceptos básicos de programación en C en primer lugar.

 
Sí, usted debe aprender el lenguaje C en primer lugar.porque esos símbolos, que se preguntó, son utilizados por el lenguaje C.

 
Yo sólo puedo responder por la primera Qustion

Q1:
, debido a subrayar que es meanless, es parte del nombre de identifcation.
y debido a la # ifndef <name> si esto no se define <name> befor el compilador copmile la siguiente línea hasta encontrar endif # O # else,
y si se define befor, el compilador no se compilará esta parte y no conseguirlo hex

y esta pregunta decir que si no se definen a continuación, definir _PIC_H

u simplemente puede buscar en la ayuda en el compilador u'll que es muy fácil de entender.

 
Hola!

Antes de escribir software para microcontroladores, aprender
la primera de programación C en un PC.Utilice un PC con un ANSI
compilador de C compatible.Escribir programas EXE que se ejecutará
en un MS-DOS ventana de consola.En la web se puede encontrar una gran cantidad
de tutoriales gratuitos sobre C.

Ejemplo:
http://www.ericlindsay.com/applix/ctutor.pdf

(Buscar con Google para "C tutorial" o "Hi-Tech C Tutorial").

Cambiar a un compilador de C para sistemas integrados una vez que
dominar la programación en C para el PC.

* * *
Compiler - Borland C 4.52 (también en C).

Perfecto para aprender C. compilador y depurador ejecuta bajo Windows.
(La consola de entrada y salida no es una forma de Windows
De MS-DOS ventana de la consola).
En las opciones de proyecto puede establecer el cumplimiento de idiomas.
(Kernighan y Ritchie, ANSI, UNIX V, las extensiones de Borland).* * *

Compiler - Pacífico C para MS-DOS (Hi-Tech)

Free MS-DOS ANSI C con el compilador y depurador
a 366 páginas de manual en formato PDF:

http://www.htsoft.com/products/PACIFICc.php

Este compilador y depurador de ejecutar también en MS-DOS
ventana de consola bajo Windows.
Si crea un archivo PIF, el programa se ejecutará en el
DOS de pantalla completa bajo Windows con soporte para ratón.* * *

El primer libro sobre C:

El Lenguaje de Programación C (segunda edición).
Brian W. Kernighan / Dennis M. Ritchie
ISBN: 0-13-110362-8

Luciano

 
Recuerde que las macros de C, son simplemente la sustitución de texto.Las macros son poderosos, pero a veces difícil de seguir, especialmente cuando la macro contiene otras macros.

1.En C, un guión es un carácter ordinario como la A a la Z, de modo _PIC_H es simplemente un identificador (nombre de la función, el nombre de macro, etc) definidas posiblemente en otros lugares.

2.No creo @ lenguaje C es válido.Puede ser alguna extensión proporcionada por el compilador, o puede ser un símbolo reconocido por algunos de preprocesador otros.La expresión ((unsigned) & PORTA * 8 2) toma la dirección de PORTA, lo convierte a un entero sin signo, lo multiplica por 8, y agrega 2.Ese tipo de cosas es muy común en C. incrustado

3.Que define una macro denominada LCD_STROBE.Si utilizas este macro en su programa, que se expande en el texto ((LCD_EN = 1), (LCD_EN = 0)), que pasa a contener dos asignaciones separadas por el operador de coma.Establece algo llamado LCD_EN a 1, y luego se borrará a 0.

4.Una vez más, el subrayado es sólo un carácter ordinario, por lo que _LCD_Read es simplemente el nombre de la macro.Si utilizas este macro en su programa, que se expande al texto todo lo que extraño.¿Quién sabe lo que hace!Vas a tener que ir a buscar donde está siendo usado, y descifrar lo que el programador estaba pensando.

5.Yuch!Creo que el secreto es "plantilla".No es parte del lenguaje C, así que es probable que otro macro.Trate de encontrar su definición.

Me gusta su comentario: "... puede parecer un poco confuso".He aquí un gran libro y un FAQ de ayuda:
http://www.edaboard.com/viewtopic.php?t=51807
http://www.eskimo.com/ ~ scs / C-faq / top.html

 
ahm_hassaan escribió:

Yo sólo puedo responder por la primera QustionQ1:

, debido a subrayar que es meanless, es parte del nombre de identifcation.

y debido a la # ifndef <name> si esto no se define <name> befor el compilador copmile la siguiente línea hasta encontrar endif # O # else,

y si se define befor, el compilador no se compilará esta parte y no conseguirlo hexy esta pregunta decir que si no se definen a continuación, definir _PIC_Hu simplemente puede buscar en la ayuda en el compilador u'll que es muy fácil de entender.
 
Usted está moviendo rápidamente hacia la parte profunda de la piscina!

Un identificador como _PIC_H comienza con un guión y una letra mayúscula.El estándar C dice, si estoy leyendo correctamente, que tales nombres se utilizan sólo por los chicos que crearon el compilador.Tu programa no debe crear nombres o intentar utilizar en su programa.Esta norma ayuda a los autores de compiladores y usuarios de compilador de pisar accidentalmente los demás dedos de los pies.(Probablemente mis-se afirmaba algo que - leyendo la sección 7.1.3 de la norma me da un dolor de cabeza.)

Ahora voy a tratar de adivinar por qué los chicos compilador creado _PIC_H.Parece una bandera que impide que todas las otras cosas en la cabecera de forma accidental se define en dos ocasiones, en caso de que alguien trata de incluir el encabezado de archivo dos veces.Eso es un problema común cuando un archivo de cabecera incluye archivos de encabezado.La razón por la que llamó _PIC_H es probablemente porque es fácil de recordar que es una bandera para un archivo llamado pic.h.

Cita:

Todavía no puedo ver nada de la explicación de su 2do.
Obviamente, desde el código, esto significa que el pin de control RS LCD se conecta a la clavija de Porta 2, pero ¿cómo llegar por este tipo de sintaxis?
 
echo47 escribió:

Usted está moviendo rápidamente hacia la parte profunda de la piscina!Un identificador como _PIC_H comienza con un guión y una letra mayúscula.
El estándar C dice, si estoy leyendo correctamente, que tales nombres se utilizan sólo por los chicos que crearon el compilador.
Tu programa no debe crear nombres o intentar utilizar en su programa.
Esta norma ayuda a los autores de compiladores y usuarios de compilador de pisar accidentalmente los demás dedos de los pies.
(Probablemente mis-se afirmaba algo que - leyendo la sección 7.1.3 de la norma me da un dolor de cabeza.)Ahora voy a tratar de adivinar por qué los chicos compilador creado _PIC_H.
Parece una bandera que impide que todas las otras cosas en la cabecera de forma accidental se define en dos ocasiones, en caso de que alguien trata de incluir el encabezado de archivo dos veces.
Eso es un problema común cuando un archivo de cabecera incluye archivos de encabezado.
La razón por la que llamó _PIC_H es probablemente porque es fácil de recordar que es una bandera para un archivo llamado pic.h.Cita:

Todavía no puedo ver nada de la explicación de su 2do.
Obviamente, desde el código, esto significa que el pin de control RS LCD se conecta a la clavija de Porta 2, pero ¿cómo llegar por este tipo de sintaxis?
 
LCD_RS poco estática @ ((unsigned) & PORTA * 8 2) / / Registro seleccioneBueno, eso es símbolo @ C no es válido, como ya he mencionado.No sé lo que significa "poco" o bien.Quizás ahí es donde está estancado.

Vamos a diseccionar ((unsigned) & PORTA * 8 2)

PORTA
Definición desconocido.Tal vez sea en otro archivo de cabecera.

Y PORTA
Esa es la "dirección" del operador.Se genera un puntero a PORTA.

(sin firma) y PORTA
Que arroja (convierte) la dirección a un entero sin signo.

(unsigned) & PORTA * 8
Times 8.

((unsigned) & PORTA * 8 2)
Más 2.

¿Eso ayuda?

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
 
LCD_RS poco estática @ ((unsigned) & PORTA * 8 2) / / Registro seleccione

AQUÍ bit podría ser un tipo de datos que puedan ser de tipo COLADA USANDO TypeDef

 

Welcome to EDABoard.com

Sponsor

Back
Top