1 Introducccion Introducccion
1
1
Intr Introdu oducc ccci cion on
Les propongo un reto constructivo, Mostremos las diferentes maneras de hacer un programa, asi veremos los estilos de programacion y la sintaxis de diferentes lenguajes de programacion y nos realimentaremos entre todos, no se preocupen empezamos desde cero!! y sobre todo NADIE TIENE LA RAZON, al menos en terminos de funcionalidad !! ( procuren poner una linea indicando la salida del compilador (nombre del compilador) para ver el porcentaje de memoria/codigo usado ) Un ejemplo cada semana asi dejamos 5 dias un tema y luego sera compilado en un pdf y subido al grupo
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w 2
Enun Enunci ciad ado o
”Las n formas de prender y apagar un led” fout=1Hz. microcontrolador a usar: 16F1824. (si usas otra cosa, especificalo en tu codigo) puedes usar un retardo del compilador si quieres.
3
3.1
Codig Codigos os de ejemp ejemplo lo XC8
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/********************** Clignotement de Leds **************************** /********************** micro= micro = 16F18 16F1824 24 langage= C. compilateur= compilateur= XC8 auteur aut eur= = Jul Julio io A. Agu Aguila ilar r A. (Peru) (Peru) - 201 2014 4 - Tou Toulon lon - Fra France nce ****************************************************************************/ #include
#include #pragma config CP=OFF, CP=OFF, CPD=OFF, CPD=OFF, BOREN=OFF, BOREN=OFF, WDTE=ON, WDTE=ON, PLLEN=ON PLLEN=ON #pragma config PWRTE=ON, PWRTE=ON, FOSC=INTO FOSC=INTOSC, SC, MCLRE=OFF MCLRE=OFF, , IESO=OFF, IESO=OFF, CLKOUTEN= CLKOUTEN=OFF OFF #define _XTAL_FREQ 1000000 void config_hw(void config_hw(void); ); void main(void main(void){ ){ config_hw();
while(1){ while(1){
LATA LATA ^= 0x01; 0x01; // heart heartbeat beat __delay_ms(500);
}
}
void config_hw(void config_hw(void){ ){
TRISA TRISA = 0X00; 0X00; OSCCON OSCCON = 0b0110 0b0110100 1000 0 ; // int intosc osc -> 1Mh 1Mhz z ANSE ANSELA LA = 0; LATA=0;
}
estadisticas del compilador
*********************************************** Logfile: *********************************************** Microchip Microchip MPLAB XC8 C Compiler Compiler V1.32-Part V1.32-Part Support Support Version:1. Version:1.32(A) 32(A)-Copy -Copyright right(C)2 (C)2014 014 Microchip Microchip Technology Technology Inc. Memory Memory Summary: Summary: Progra Program m space space used used 1Eh (30) of 1000h 1000h words words ( 0.7%) 0.7%) Data Data space space used used 4h ( 4) of 100h 100h bytes bytes ( 1.6% 1.6%) ) EEPR EEPROM OM spac space e used used 0h ( 0) of 100h 100h byte bytes s ( 0.0% 0.0%) ) Data Data stack stack spac space e used used 0h ( 0) of F0h F0h byte bytes s ( 0.0% 0.0%) ) Config Configura uratio tion n bits bits used used 2h ( 2) of 2h words words (100.0 (100.0%) %) ID Locati Location on space space used used 0h ( 0) of 4h bytes bytes ( 0.0% 0.0%) )
3 Codigos de ejemplo
3.2 1 2 3
2
Proton Compiler
***Led off on ;***Pic =16f824 ;***Lenguaje = basic ;***Copilador = ;***proton ide ;***Autor = ;Alexander Florez. ;***Bogota colombia ;- 2014
4 5 6 7 8 9 10 11 12 13 14 15 16
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w Device =16f824 Xtal = 4 Trisb = %00000000 Portb = %00000000 Symbol led = Portb.0 Loop: Led = 1 Delayms 200 Led = 0 Delayms 200 Goto loop ;End
3.3
AVR Bascom
nota del autor: Yo uso avr’s, y tome uno de caracteristicas similares, el attiny24, cristal de 20mHz, 2kb, 14 pines.
1 2 3 4 5 6 7 8 9 10 11
**************************************************** micro= Attiny24 lengaje= basic compilador= Bascom 2.7.5 **************************************************** $regfile = "attiny24.dat" $crystal = 1000000 Ddrb.0 = 1 : Portb.0 = 0 Do Toggle Portb.0 Waitms 500 Loop End
estadisticas del compilador
Compiler : BASCOM-AVR LIBRARY V 2.0.7.5 Processor : TINY24 SRAM : 80 hex EEPROM : 80 hex ROMSIZE : 800 hex FLASH USED : 7 % BAUD : 9600 Baud XTAL : 1000000 Hz
3.4
1 2 3 4 5 6 7 8 9
microchip assembler
;********************************************************************** ; Filename: P16_LedBlinkAsm.asm * ; Date: 04/08/2014 * ; File Version: V1 * ; Author: Ing. Jos Manuel Alvarado * ; Company: ELECTRONICA Y ROBOTICA * ;********************************************************************** ; Notes: * ; Cambia el led de estado utilizando una interrupcion de 0.5s *
3 Codigos de ejemplo
10 11 12 13
3
;********************************************************************** list p=16f1824 ; directiva de lista para este microcontrolador #include ; definicion de registros para el pic16f ;Palabras de configuracion para este ejemplo
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
__CONFIG _CONFIG1,_FOSC_INTOSC&_WDTE_OFF&_PWRTE_ON&_BOREN_ON&_FCMEN_OFF&_IESO_OFF&_MCLRE_OFF&_CLKOUTEN_OFF __CONFIG _CONFIG2, _LVP_OFF ;********************************************************************** ORG 0x000 ; vector de reset goto main ; va al inicio del programa ;Vector de interrupcion de la familia PIC16XXX ORG 0x004 ;Rutina de interrupcion ;Cambio de estado en el pin RA0 banksel LATA movlw 0x01 xorwf LATA,F ;Vuelve a cargarcontador de timer1 para desbordamiento a 0.5S, el periodo de cambio de estado es 1s banksel TMR1 movlw 0xF7 movwf TMR1L movlw 0xC2 movwf TMR1H bcf PIR1,TMR1IF ;termina interrupcion retfie ; regresa de interrupcion main ;preparara portA para usar como led el pin RA0 banksel PORTA clrf PORTA banksel LATA clrf LATA banksel TRISA clrf TRISA banksel ANSELA clrf ANSELA ;configuracion del oscilador interno a 1MHz banksel OSCCON movlw 0x58 movwf OSCCON ;El timer 1 funciona con un preescaler de 8, utiliza como fuente de reloj, el reloj de instrucciones banksel TMR1 movlw 0x31 movwf T1CON movlw 0xF7 movwf TMR1L movlw 0xC2 movwf TMR1H bcf PIR1,TMR1IF banksel PIE1 bsf PIE1,TMR1IE;habilita interrupciones movlw 0xC0 movwf INTCON main_loop ;puede poner otro codigo aqui ;el codigo que ejecute en esta parte de programa ;solo sera interrumpido por el desbordamiento del timer1 goto main_loop END
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w
3 Codigos de ejemplo
4
estadisticas del compilador *********************************************** Logfile: *********************************************** Microchip MPASM V5.57 Copyright (C) 2014 Microchip Technology Inc.
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w Memory Summary: Program space used 27h (39) of 1000h words ( 0.9%) Data space used 0h ( 0) of 100h bytes ( 0%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of F0h bytes ( 0.0%) Configuration bits used 2h ( 2) of 2h words (100.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
3.5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Proton Compiler
’**************************************************************** ’* Name : Proton IDE * ’* Author : Jacobo Sierra Arellanes, Oaxaca, Mxico * ’* Notice : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] * ’* : All Rights Reserved * ’* Date : 04/08/2014 * ’* Canal : https://www.youtube.com/user/siaj881108hocrrc05/videos * Device = 16F1824 Xtal 4 TRISA=0 PORTA=0 Inicio: PORTA=1 DelayMS 1000 PORTA=0 DelayMS 1000 GoTo Inicio End
estadisticas del compilador
’***************************************************************************** ’* Notes : 4 variable bytes used from possible 240 (1.67%) * ’* : 61 program bytes used from possible 4096 (1,49%) * ’*****************************************************************************
3.6
1 2 3 4 5 6 7 8 9
XC8
/********************************************************************* * File: Blink LED * Author: Pedro Snchez (MrChunckuee) Electronica&Robotica * Blog: http://mrchunckuee.blogspot.com/ * Email: [email protected] * Notas: Cambia es estado de LED_STATUS cada 0.5 segundos * Fosc=4MHz, RA0=LED_STATUS, MCRL = +VCC * IDE: MPLAB X, Compilador: XC8
3 Codigos de ejemplo
10 11
5
* Created on 4 de agosto de 2014, 09:27 PM ********************************************************************/
12 13
#include
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//Configuracion de FUSES del PIC16F1824 #pragma config CPD=OFF #pragma config BOREN=ON #pragma config IESO=OFF #pragma config FOSC=INTOSC #pragma config FCMEN=OFF #pragma config MCLRE=ON #pragma config WDTE=OFF #pragma config CP=OFF #pragma config PWRTE=ON #pragma config CLKOUTEN=OFF #pragma config PLLEN=OFF #pragma config WRT=OFF #pragma config STVREN=OFF #pragma config LVP=OFF
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w #define _XTAL_FREQ 4000000 #define LED_STATUS LATA0 //Funciones utilizadas void MCU_Init(void); void main(void){ MCU_Init(); while(1){ LED_STATUS ^= 1; __delay_ms(500); } }
void MCU_Init(void){ OSCCONbits.IRCF3=1;// OSCCONbits.IRCF2=1;// OSCCONbits.IRCF1=0;// OSCCONbits.IRCF0=1;//Oscilador interno a 4MHz ANSELA=0x00;//PORTA como digital TRISA=0x00;//RA0 como salida LED_STATUS=0;//Limpio RA0 antes de cargar un valor }
estadisticas del compilador
/************************************************************/ Memory Summary: Program space used 27h ( 39) of 1000h words ( 1.0%) Data space used 5h ( 5) of 100h bytes ( 2.0%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of F0h bytes ( 0.0%) Configuration bits used 2h ( 2) of 2h words (100.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
3.7 1
Pic CCS Compiler
/*********************************
3 Codigos de ejemplo
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Nombre: Salvador H. Vallejo Lugar: Oaxaca, Mxico Fecha: 04.Ago.2014 ****/ #include <16f1824.h> #fuses hs,nowdt,nomclr #use delay(clock=20M)
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w /* PUERTOS */ #byte PortA= 0x0C #byte PortC= 0x0E #bit led= 0x0C.0
/* PROGRAMA PRINCIPAL */ void main (void){ set_tris_a(0b00000000); set_tris_c(0b00000000); portA=0; portC=0;
do{ led=0; delay_ms(500); led=1; delay_ms(500);
} while(true); }
estadisticas del compilador
******************************************************* Compilador CCS v4.140 ROM: 58(1%) 58(1%) including unused fragments 0 Average locations per line 6 Average locations per statement RAM: 5(2%) at main () level 17(7%) worst case *******************************************************
3.8
1 2 3 4 5 6 7 8 9 10 11 12
6
microchip assembler
;********************************************************************** ; Filename: P16_LedBlinkAsm2.asm * ; Date: 05/08/2014 * ; File Version: V2 * ; Author: Ing. Jos Manuel Alvarado * ; Company: ELECTRONICA Y ROBOTICA * ;********************************************************************** ; Notes: * ; Cambia el led de estado utilizando retardos por software * ;********************************************************************** list p=16f1824 ; directiva de lista para este microcontrolador #include ; definicion de registros para el pic16f
3 Codigos de ejemplo
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
;Palabras de configuracion para este ejemplo __CONFIG _CONFIG1,_FOSC_INTOSC&_WDTE_OFF&_PWRTE_ON&_BOREN_ON&_FCMEN_OFF&_IESO_OFF&_MCLRE_OFF&_CLKOUTEN_OFF __CONFIG _CONFIG2, _LVP_OFF ;********************************************************************** ;Bloque de variables en Ram CBLOCK 0x20 CounterB CounterA ENDC ;********************************************************************** ORG 0x000 ; vector de reset goto main ; va al inicio del programa ;Vector de interrupcion de la familia PIC16XXX ORG 0x004 retfie ; regresa de interrupcion main ;preparara portA para usar como led el pin RA0 banksel TRISA clrf TRISA ;configuracion del oscilador interno a 1MHz movlw 0x58 movwf OSCCON banksel ANSELA clrf ANSELA ;Cambio de estado de RA0 utilizando un retardo por software banksel LATA main_loop movlw 0x01 xorwf LATA,F call delay_half_second goto main_loop ;Retardo generado utilizando el programa PICLOOPS delay_half_second movlw D’163’ movwf CounterB movlw D’84’ movwf CounterA loop decfsz CounterA,1 goto loop decfsz CounterB,1 goto loop retlw 0
7
/ a c i t o b o r y a c i n o r t c e l e / s p u o r / g m o c. k o o b e c f a . w w w END
estadisticas del compilador
*********************************************** Logfile: *********************************************** Microchip MPASM V5.57 Copyright (C) 2014 Microchip Technology Inc. Memory Summary: Program space used 27h (26) of 1000h words ( 0.6%) Data space used 0h ( 2) of 100h bytes ( 0.78%) EEPROM space used 0h ( 0) of 100h bytes ( 0.0%) Data stack space used 0h ( 0) of F0h bytes ( 0.0%) Configuration bits used 2h ( 2) of 2h words (100.0%) ID Location space used 0h ( 0) of 4h bytes ( 0.0%)