ESCUELA MILITAR DE INGENIERÍA MCAL.ANTONIO JOSE DE SUCRE ´´BOLIVIA´´ INFORME # 7 TRABAJO # 7 INGENIERIA DE SISTEMAS ELECTRONICOS MICROPROCESADORES ALUMNOS: S2170-9 A9600-8 A9533-8 PARALELO: Rivera Parada Eduardo Fernando Torres Caballero Marco Vladimir Inca Nina 6to Semestre FECHA: 09/11/2011 LA PAZ - BOLIVIA Proteus.EEPROM OBJETIVO Mediante el uso del programa mikroC. el cual estaría reemplazando a la terminal virtual. sse escribirán algunos números o letras y esta información se guardara en la memoria de la Eeprom y luego presionando @ debe mostrar los datos escritos anteriormente. Una vez demostrado aquello podremos apreciar el mismo problema pero usando el Hyperterminal. Hyperterminal lograr demostrar cómo es que la memoria Eeprom almacena datos. OBJETIVO DE LAPREBA Primeramente se probara con ayuda de la terminal virtual como es que trabaja la Eeprom.PUERTO SERIAL ASINCRONO . DIAGRAMA DE FLUJO Puerto seria Asíncrono Motores DC: . Envio del mensaje al LCD: . EEPROM: CAPTURAS DE PANTALLA Motores DC: INCISO A.- . INCISO B.- . Envio del mensaje al LCD Inciso a.- . Inciso b.- Eeprom: . En el virtual terminal: Ahora lo aplicaremos al puerto serie .DB-9. Para ello usaremos el Hyperterminal y también un simulador de puerto serial: Debemos asegurarnos que en el simulador el puerto serie este con el mismo puerto COM1: Luego entramos al Hyperterminal para reemplazar al virtual machine: . Por último configuramos que estén en 19200 y luego hacemos correr nuestro simulador y obtenemos lo siguiente en el hyperterminal: . Soft_Uart_Write(10). Soft_Uart_Write(10). PORTB = dato. ADCON1 = 0x0F. Soft_Uart_Write(10). } while (d!='\0'). gprintf("Preciona X para Detener motores"). } } void gprintf(char *men) { char d. 0. void gprintf(char *men). PORTA = 0x00. //Recive y guarde en recOK } while(recOK). LATA = 0x00. gprintf("Control de giro de Motores DC"). 9600. } . gprintf("Precione A para giro de motor Izquierdo"). Soft_Uart_Write(dato). Soft_Uart_Write(d). do{ d = *men++. Soft_Uart_Init(PORTA. gprintf("Enviado = "). Soft_Uart_Write(13). gprintf("Preciona D para giro de motor Derecho"). Soft_Uart_Write(10). Soft_Uart_Write(13). Soft_Uart_Write(13). unsigned short recOK. Soft_Uart_Write(10). Soft_Uart_Write(13). Soft_Uart_Write(13). Soft_Uart_Write(13).CODIGO Motores DC unsigned short dato=0. gprintf("Preciona W para Giro de ambos motores"). 1. void main(void) { TRISB = 0x00. Soft_Uart_Write(10). while(1) { do{ dato = Soft_Uart_Read(&recOK). CMCON = 0x07. 0). INTCON. //CONFIGURANDO LOS COMPARADORES COMO ENTRADA DIGITAL TRISB=0X00. LATA = 0x00. LATD=0X00. 9600.7.2. //Metodo alternativo para limpiar los latches de salida ADCON1=0X0F. void main(void) { PORTA = 0x00. void Eeprom_Write18(char dato.0. } Soft_Uart_Init(PORTA."Mensaje :") . //Recive y guarde en recOK } while(recOK). . 0). ADCON1 = 0x0F. Soft_Uart_Write(10).0). char mn.1. Soft_Uart_Write(dato). TRISD=0X00. Lcd8_Config(&PORTD. gprintf("Envie a continuacion su mensaje al LCD"). TRISA=0X00. do{ d = *men++. CMCON = 0x07. TRISA=0X00. PORTD=0X00. char Eeprom_Read18(char direc). TRISB = 0x00.qr.Envio del mensaje al LCD: unsigned short dato=0.5. //Limpiando los latches de salida del PORTB (PORTB=0) LATB=0X00. while(1) { do{ dato = Soft_Uart_Read(&recOK). Lcd8_Cmd(LCD_CURSOR_OFF). unsigned short recOK. delay_ms(1). Soft_Uart_Write(13).op.3.&PORTB. unsigned short recOK. //Limpiando los latches se salida del PORTA (PORTA=0) LATA=0X00. 0.1. void gprintf(char *men). TRISD=0X00.1. gprintf("Envio de datos al LCD"). PORTA=0X00. Soft_Uart_Write(d). Lcd8_Out(1.char direc). //enviando un caracter al pc //transmicion de datos Lcd8_Out(3. Eeprom: unsigned short dato. Soft_Uart_Write(13). void main(void) { PORTB=0X00.6. } while (d!='\0').1. void gprintf(char *men). Lcd8_Cmd(LCD_BLINK_CURSOR_ON).GIE=0.2. Soft_Uart_Write(10).4 . 1. //Configuracion A/D para entrada digital CMCON=0X07.dato). } } void gprintf(char *men) { char d. EECON1.mn).CFGS=0. Soft_Uart_Init(PORTA. EECON1.}} } } char Eeprom_Read18(char direc) { EEADR = direc.EEPGD=0.CFGS=0. return(EEDATA). EECON1. } EECON1. gprintf("Tecla precionada = "). while(mn<qr) {op=Eeprom_Read(mn). gprintf("Precione @ para mostrar la informacion escrita"). EECON2=0xAA. Soft_UART_Write(13).WR=1. . Soft_Uart_Write(10). char direc) { EEADR = direc. EEDATA=dato.WREN=1. PORTD=0. Soft_UART_Write(op).GIE=1. Soft_Uart_Write(13). } void Eeprom_Write18(char dato. qr=mn.EEPGD=0. EECON1. caso contrario se escribira 64. } while(recOK). Soft_Uart_Write(10). while(1) { do{ dato = Soft_Uart_Read(&recOK). while(EECON1&2). Eeprom_Write18(dato. { mn=1. EECON1. INTCON. Soft_Uart_Write(10). INTCON. 0. Soft_Uart_Write(12). EECON2=0x55. EECON1. // 19200 es la frecuencia para el puerto serie gprintf("Oprima una tecla").RD=1. EECON1. //Recive y guarde en recOK mn=mn+1. mn=mn+1. 19200. Soft_Uart_Write(13). Soft_Uart_Write(dato).WREN=0. if(dato=='@')//comilla simple para que acepte @ .GIE=0. 0). 1. Soft_UART_Write(10).PORTA=0. Soft_UART_Write(p). }while (p!='\0'). . do{ p = *men++. además de la proporción de software para poder realizar este laboratorio. // en caso que sea distinto } BIBLIOGRAFIA: Informes de prácticas de laboratorio entregadas por el docente.void gprintf (char *men) { char p.