Index: branch/nan_cao/Emb_App.tws
===================================================================
--- branch/nan_cao/Emb_App.tws	(revision 217)
+++ branch/nan_cao/Emb_App.tws	(revision 218)
@@ -7,27 +7,15 @@
 [GENERAL_DATA]
 [BREAKPOINTS]
 [OPEN_WORKSPACE_FILES]
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.h" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\conf_noyau.cfg" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\kernel_id.h" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\mrtable.a30" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\sys_rom.inc" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" 
+"E:\nan_cao\bsp\clavier.c" 
+"E:\nan_cao\bsp\radiocommande.c" 
+"E:\nan_cao\Emb_App\conf_noyau.cfg" 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" 
 [WORKSPACE_FILE_STATES]
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\kernel_id.h" 0 0 1430 351 0 3 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\mrtable.a30" 0 0 1430 303 0 9 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\sys_rom.inc" 150 150 1430 303 0 8 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\conf_noyau.cfg" 125 125 1430 351 0 1 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" -8 -30 1596 602 1 5 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" 0 0 1596 539 0 0 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" 25 25 1430 351 0 4 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" 75 75 1430 351 0 6 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.h" 125 125 1430 303 0 7 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" 150 150 1430 351 0 2 
+"E:\nan_cao\Emb_App\conf_noyau.cfg" 0 0 1596 602 0 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" -8 -31 1596 602 1 0 
+"E:\nan_cao\bsp\clavier.c" 0 0 1596 602 0 3 
+"E:\nan_cao\bsp\radiocommande.c" 26 26 1394 377 0 1 
 [LOADED_PROJECTS]
 "EmbM32C87App" 
 [END]
Index: branch/nan_cao/Emb_App/SessionM32C_E8a_system.hsf
===================================================================
--- branch/nan_cao/Emb_App/SessionM32C_E8a_system.hsf	(revision 217)
+++ branch/nan_cao/Emb_App/SessionM32C_E8a_system.hsf	(revision 218)
@@ -332,11 +332,11 @@
 0 
 [WINDOW_POSITION_STATE_DATA_VD1]
 "Help" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" 
-"{WK_00000001_CmdLine}" "WINDOW" 59422 0 1 "0.08" 302 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
+"{WK_00000001_CmdLine}" "WINDOW" 59422 0 0 "0.13" 302 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
 "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -30 948 486 9 0 "" "0.0" 
 "{WK_00000001_EVENT}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 0 "0.10" 302 0 0 350 200 18 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0" 
 "{WK_00000001_MEMORY}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 1 "0.23" 365 2 -1 350 200 2065 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>|32796|32797" "0.0" 
-"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 2 "0.54" 302 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
+"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 1 "1.00" 302 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
 "{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system0" "WINDOW" 59422 0 3 "0.19" 302 0 0 350 200 18 0 "47300|47301|47302|47303|47304|47305|47314|47306|47307|47308|47311|47312|47313|42211|42509|42303" "0.0" 
 "{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 4 "0.09" 302 0 0 350 200 18 0 "47300|47301|47302|47303|47304|47305|47314|47306|47307|47308|47311|47312|47313|42211|42509|42303" "0.0" 
 "{WK_00000001_REGISTERS}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59421 0 0 "1.00" 236 0 0 350 200 2065 0 "" "0.0" 
@@ -365,16 +365,10 @@
 [WINDOW_POSITION_STATE_DATA_VD3]
 [WINDOW_POSITION_STATE_DATA_VD4]
 [WINDOW_Z_ORDER]
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\conf_noyau.cfg" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\mrtable.a30" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\kernel_id.h" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.h" 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug\sys_rom.inc" 
+"E:\nan_cao\bsp\clavier.c" 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" 
+"E:\nan_cao\bsp\radiocommande.c" 
+"E:\nan_cao\Emb_App\conf_noyau.cfg" 
 [TARGET_NAME]
 "M32C E8a SYSTEM" "" 0 
 [STATUSBAR_STATEINFO_VD1]
@@ -421,5 +415,5 @@
 [FLASH_DETAILS]
 "" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" 
 [BREAKPOINTS]
-"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 91076312 1 "{00000000-0000-0000-C000-000000000046}" "" 
+"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 257496308 1 "{00000000-0000-0000-C000-000000000046}" "" 
 [END]
Index: branch/nan_cao/Emb_App/EmbM32C87App.hwp
===================================================================
--- branch/nan_cao/Emb_App/EmbM32C87App.hwp	(revision 217)
+++ branch/nan_cao/Emb_App/EmbM32C87App.hwp	(revision 218)
@@ -3,16 +3,16 @@
 [DATABASE_VERSION]
 "2.8" 
 [PROJECT_DETAILS]
-"EmbM32C87App" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\EmbM32C87App.hwp" "M16C/80,M32C" "Renesas M32C Standard" "Application" "M32C/80" "M32C/87(M32C/87)" 
+"EmbM32C87App" "E:\nan_cao\Emb_App" "E:\nan_cao\Emb_App\EmbM32C87App.hwp" "M16C/80,M32C" "Renesas M32C Standard" "Application" "M32C/80" "M32C/87(M32C/87)" 
 [INFORMATION]
 "No project information available" 
 [TOOL_CHAIN]
 "Renesas M32C Standard Toolchain" "5.42.00" 
 [CONFIGURATIONS]
-"Debug" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug" 
-"Debug_M32C_FoUSB_UART" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug_M32C_FoUSB_UART" 
-"Debug_M32C_Simulator" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Debug_M32C_Simulator" 
-"Release" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\Release" 
+"Debug" "E:\nan_cao\Emb_App\Debug" 
+"Debug_M32C_FoUSB_UART" "E:\nan_cao\Emb_App\Debug_M32C_FoUSB_UART" 
+"Debug_M32C_Simulator" "E:\nan_cao\Emb_App\Debug_M32C_Simulator" 
+"Release" "E:\nan_cao\Emb_App\Release" 
 [BUILD_PHASES]
 "Renesas M32C Assembler" 1 
 "Renesas M32C C Compiler" 1 
@@ -105,29 +105,29 @@
 "Relocatable file" "Renesas M32C Linker" "Renesas M32C Assembler" 
 "Relocatable file" "Renesas M32C Linker" "Renesas M32C C Compiler" 
 [PROJECT_FILES]
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\conf_noyau.cfg" "User" "Configuration file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" "User" "Assembly source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\carte_io.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\carte_m32.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\sfr32c83.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\sfr32c87.h" "User" "C header file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.c" "User" "C source file" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.h" "User" "C header file" 2 
+"E:\nan_cao\Emb_App\conf_noyau.cfg" "User" "Configuration file" 2 
+"E:\nan_cao\Emb_App\crt0mr.a30" "User" "Assembly source file" 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\can.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\can.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\carte_io.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\carte_m32.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\clavier.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\clavier.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\dma0.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\dma0.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\lcd.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\lcd.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\mli.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\mli.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\periph.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\periph.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\radiocommande.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\radiocommande.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\sfr32c83.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\sfr32c87.h" "User" "C header file" 2 
+"E:\nan_cao\bsp\uart0.c" "User" "C source file" 2 
+"E:\nan_cao\bsp\uart0.h" "User" "C header file" 2 
 [FOLDER]
 "Assembly source file" "Assembly source file" 
 "C header file" "C header file" 
@@ -138,10 +138,10 @@
 [ON_DEMAND_COMPONENTS_LOADED]
 [SYNC_SESSION_NAMES]
 [SESSIONS]
-"DefaultSession" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\DefaultSession.hsf" 0 
-"SessionM32C_E8a_system" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\SessionM32C_E8a_system.hsf" 0 
-"SessionM32C_FoUSB_UART" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\SessionM32C_FoUSB_UART.hsf" 0 
-"SessionM32C_Simulator" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\SessionM32C_Simulator.hsf" 0 
+"DefaultSession" "E:\nan_cao\Emb_App\DefaultSession.hsf" 0 
+"SessionM32C_E8a_system" "E:\nan_cao\Emb_App\SessionM32C_E8a_system.hsf" 0 
+"SessionM32C_FoUSB_UART" "E:\nan_cao\Emb_App\SessionM32C_FoUSB_UART.hsf" 0 
+"SessionM32C_Simulator" "E:\nan_cao\Emb_App\SessionM32C_Simulator.hsf" 0 
 [GENERAL_DATA_SESSION_DefaultSession]
 [GENERAL_DATA_SESSION_SessionM32C_E8a_system]
 [GENERAL_DATA_SESSION_SessionM32C_FoUSB_UART]
@@ -148,18 +148,18 @@
 [GENERAL_DATA_SESSION_SessionM32C_Simulator]
 [OPTIONS_Debug_Renesas M32C Assembler]
 "Assembly source file" "061cd8963acbbc10" 3 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
+"E:\nan_cao\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
 [OPTIONS_Debug_Renesas M32C C Compiler]
 "C source file" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.c" "0d1c724595684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.c" "0d1c724595684d10" 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\can.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\clavier.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\dma0.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\lcd.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\mli.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\periph.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\radiocommande.c" "0d1c724595684d10" 2 
+"E:\nan_cao\bsp\uart0.c" "0d1c724595684d10" 2 
 [OPTIONS_Debug_Renesas M32C Configurator]
 "Single Shot" "061cd8963acbbc10" 1 
 [OPTIONS_Debug_Renesas M32C Librarian]
@@ -187,18 +187,18 @@
 [GENERAL_DATA_CONFIGURATION_Debug]
 [OPTIONS_Debug_M32C_FoUSB_UART_Renesas M32C Assembler]
 "Assembly source file" "061cd8963acbbc10" 3 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
+"E:\nan_cao\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
 [OPTIONS_Debug_M32C_FoUSB_UART_Renesas M32C C Compiler]
 "C source file" "061cd8963acbbc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.c" "032b447e85684d10" 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
+"E:\nan_cao\bsp\can.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\clavier.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\dma0.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\lcd.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\mli.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\periph.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\radiocommande.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\uart0.c" "032b447e85684d10" 2 
 [OPTIONS_Debug_M32C_FoUSB_UART_Renesas M32C Configurator]
 "Single Shot" "061cd8963acbbc10" 1 
 [OPTIONS_Debug_M32C_FoUSB_UART_Renesas M32C Librarian]
@@ -226,18 +226,18 @@
 [GENERAL_DATA_CONFIGURATION_Debug_M32C_FoUSB_UART]
 [OPTIONS_Debug_M32C_Simulator_Renesas M32C Assembler]
 "Assembly source file" "061cd8963acbbc10" 3 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
+"E:\nan_cao\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
 [OPTIONS_Debug_M32C_Simulator_Renesas M32C C Compiler]
 "C source file" "061cd8963acbbc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.c" "032b447e85684d10" 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
+"E:\nan_cao\bsp\can.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\clavier.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\dma0.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\lcd.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\mli.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\periph.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\radiocommande.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\uart0.c" "032b447e85684d10" 2 
 [OPTIONS_Debug_M32C_Simulator_Renesas M32C Configurator]
 "Single Shot" "061cd8963acbbc10" 1 
 [OPTIONS_Debug_M32C_Simulator_Renesas M32C Librarian]
@@ -265,18 +265,18 @@
 [GENERAL_DATA_CONFIGURATION_Debug_M32C_Simulator]
 [OPTIONS_Release_Renesas M32C Assembler]
 "Assembly source file" "061cd8963acbbc10" 3 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
+"E:\nan_cao\Emb_App\crt0mr.a30" "061cd8963acbbc10" 3 
 [OPTIONS_Release_Renesas M32C C Compiler]
 "C source file" "061cd8963acbbc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\can.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\clavier.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\dma0.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\lcd.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\mli.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\periph.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\radiocommande.c" "032b447e85684d10" 2 
-"E:\tp_info6_2018_nan_cao\tp_info6\bsp\uart0.c" "032b447e85684d10" 2 
+"E:\nan_cao\Emb_App\programme_principal_etud.c" "061041b59a3acc10" 2 
+"E:\nan_cao\bsp\can.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\clavier.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\dma0.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\lcd.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\mli.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\periph.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\radiocommande.c" "032b447e85684d10" 2 
+"E:\nan_cao\bsp\uart0.c" "032b447e85684d10" 2 
 [OPTIONS_Release_Renesas M32C Configurator]
 "Single Shot" "061cd8963acbbc10" 1 
 [OPTIONS_Release_Renesas M32C Librarian]
Index: branch/nan_cao/Emb_App.hws
===================================================================
--- branch/nan_cao/Emb_App.hws	(revision 217)
+++ branch/nan_cao/Emb_App.hws	(revision 218)
@@ -3,12 +3,12 @@
 [DATABASE_VERSION]
 "11.0" 
 [WORKSPACE_DETAILS]
-"Emb_App" "E:\tp_info6_2018_nan_cao\tp_info6" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App.hws" "M16C/80,M32C" "Renesas M32C Standard" 
+"Emb_App" "E:\nan_cao" "E:\nan_cao\Emb_App.hws" "M16C/80,M32C" "Renesas M32C Standard" 
 [SHARED_WORKSPACE_CONTROL_STATUS]
 "" "" "" 
 "" "" "" 
 [PROJECTS]
-"EmbM32C87App" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App" "E:\tp_info6_2018_nan_cao\tp_info6\Emb_App\EmbM32C87App.hwp" 4 
+"EmbM32C87App" "E:\nan_cao\Emb_App" "E:\nan_cao\Emb_App\EmbM32C87App.hwp" 4 
 [INFORMATION]
 "No workspace information available" 
 [SCRAP]
Index: branch/nan_cao/programme_principal_etud.c
===================================================================
--- branch/nan_cao/programme_principal_etud.c	(nonexistent)
+++ branch/nan_cao/programme_principal_etud.c	(revision 218)
@@ -0,0 +1,151 @@
+/***********************************************************************/
+/*                                                                     */
+/*  FILE        :test_compil.c                                         */
+/*  DATE        :Fri, Sep 29, 2006                                     */
+/*  DESCRIPTION :main program file.                                    */
+/*  CPU GROUP   :87                                                    */
+/*                                                                     */
+/*  This file is generated by Renesas Project Generator (Ver.4.5).     */
+/*   m308															   */
+/*   nc308lib														   */
+/*   c308mr															   */
+/*   nc382lib														   */
+/*                                                                     */
+/***********************************************************************/
+#include "sfr32c87.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <itron.h>
+#include <kernel.h>
+#include "kernel_id.h"
+#include "lcd.h"
+#include "clavier.h"
+#include "periph.h"
+#include "uart0.h"
+#include "can.h"
+#include "carte_io.h"
+#include "carte_m32.h"
+#include <math.h>
+
+// Potentiometre: lire les registres ad00 et ad01, les valeurs sont sur 10 bits.
+
+// Clavier: vrcv_dtq(QdmTouche,&code_touche) pour lire la derniere touche appuyee sur le clavier.
+// 			la variable code_touche doit etre du type short.
+
+// Bouton poussoir: Bp_G, Bp_M, Bp_D permettent de lire l'etat des boutons de la carte I/O
+
+// Leds: LED_R=1 ou LED_R=0 Pour allumer ou eteindre les leds (LED_R, LED_J, LED_V).
+
+// Pour communiquer avec le simulateur utiliser une variable de type CanFrame,
+// Definir les differents champs en utilisant la structure (S)eparee (comm.data)
+// Envoyer le message complet en utilisant l'union (comm.msg)
+
+// Exemple:
+// 		CanFrame comm;
+//			comm.data.id='T'; comm.data.rtr=0; comm.data.val=-100;
+//			snd_dtq (CanTx,comm.msg);
+
+// Pour interroger un peripherique et recuperer les donnees brutes renvoyees simulateur:
+//		CanFrame demande;
+//		CanFrame reponse;
+//
+//			demande.data.id='R'; demande.data.rtr=1;
+//			snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
+// 			rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
+// 			reponse.data.val contient la valeur de retour du simulateur.
+// ATTENTION: Ne pas utiliser rcv_dtq(CanRx... si la tache ID_periph_rx est active
+
+// Lors de l'utilisation de la tache de reception et distribution des messages ID_periph_rx
+// Demarrer cette tache : sta_tsk(ID_periph_rx);
+// Pour lire la valeur d'un peripherique:
+// Il faut envoyer une demande de lecture:
+// 	CanFrame comm;
+// 		comm.data.id='R'; comm.data.rtr=1;
+// 		snd_dtq (CanTx,comm.msg);
+//
+// Des l'arrivee de la reponse du simlateur, les variables suivantes sont mises a jour:
+// periph[ADDR('R')].val : contient la derniere valeur renvoyee par le simulateur.
+//
+// Pour verifier si une nouvelle valeur a ete recue utiliser:
+// periph[ADDR('R')].maj (incremente a chaque reception).
+
+// Pour qu'un evenement soit declenche lors de la reception d'une donnee pour un peripherique:
+// periph[ADDR('R')].ev=0x01;
+// Pour se mettre en attente de l'evenement: wai_flg (ev_periph,0x01,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(ev_periph,~0x01); par example
+
+// Les evenements:
+// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
+// par exemple:  wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
+//Bit   Information associee            Remarque
+//0     Capteur Vert,                   remis a zero lors de la lecture du peripherique 'C'
+//1     Capteur Jaune,                  remis a zero lors de la lecture du peripherique 'C'
+//2     Capteur Rouge,                  remis a zero lors de la lecture du peripherique 'C'
+//3     Capteur Bleu,                   remis a zero lors de la lecture du peripherique 'C'
+//4     Capteur Cyan,                   remis a zero lors de la lecture du peripherique 'C'
+//5
+//6     Collision avec le sol,          remise a zero au changement de piste.
+//7     Fin de course (capteur vert),   remis a zero lors de la lecture du peripherique 'C'
+//8     La piste a change ,             remis a zero lors de la lecture du peripherique 'M'
+//9     Le mode de course a change ,    remis a zero lors de la lecture du peripherique 'M'
+//10
+//11    Le vehicule a termine un tour,   remis a zero au changement du mode de course.
+//12    Sortie de la piste,
+//13    Teleportation a ete utilisee,   remis a zero au changement de piste ou du mode de course.
+//14    Faux depart                     remise a zero au changement du mode de course.
+//15
+
+
+// Peripheriques disponibles:
+//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
+//'D'/68/0x44 : Commande de l'angle des roues directrices (en 1/10 de degre).
+//'T'/84/0x54 : Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
+//'R'/82/0x52 : Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
+//'U'/85/0x55 : Distance mesuree par le telemetre (1/100 de metre)
+//'N'/78/0x4E : Numero de la voiture (en fonction de l'ordre de connexion)
+//'E'/69/0x45 : Lecture des evenements,
+//'H'/72/0x48 : Donne le temps de course actuel
+//'S'/83/0x53 : Temps du tour precedent
+//'M'/77/0x7D : Mode de course :
+//  Bit 15 : Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
+//  Bits 14-8 : 1 Attente, 2 course, 3 essais libres)
+//  Bits 7-0 : numero de la piste
+//'C'/67/0x43 : Informations sur le dernier capteur touche :
+//  8 bits de poids faible : numero du capteur
+//  8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
+//'J'/74/0x4A : Proposition d'un code de dévérouillage.
+//'j'/106/06A : Récupération du résultat de dernier code envoyé. 0x77 si aucun code n'a été soumis. <0 si la réponse n'est pas
+//				disponible. 0xab avec a-> nombre de couleurs bien placées et b -> couleurs présentes mais mal placées.
+//'I'/73/Ox49 : Définition du nom du véhicule. Doit débuter par le caractère '#' et entraine le chargement de la configuration de piste
+//				correspondant au nom du véhicule si le nom se termine par '*'
+
+
+void main()
+{
+	ports_mcu();
+    lcd_init();
+	periph_init();
+	periph_nom("#AutoTest*");
+
+    can_init();
+    clavier_init(1);
+	capture_init();
+
+	sta_cyc(ID_acqui);
+//	sta_tsk(ID_periph_rx);
+
+    while(1)
+    {
+		LED_J=1;
+		dly_tsk(100);
+		LED_J=0;
+		dly_tsk(100);
+    }
+}
+
+void acqui()
+{
+	LED_V=!LED_V;
+}
+
Index: branch/nan_cao/programme_principal_etud (1).c
===================================================================
--- branch/nan_cao/programme_principal_etud (1).c	(nonexistent)
+++ branch/nan_cao/programme_principal_etud (1).c	(revision 218)
@@ -0,0 +1,264 @@
+/***********************************************************************/
+/*                                                                     */
+/*  FILE        :test_compil.c                                         */
+/*  DATE        :Fri, Sep 29, 2006                                     */
+/*  DESCRIPTION :main program file.                                    */
+/*  CPU GROUP   :87                                                    */
+/*                                                                     */
+/*  This file is generated by Renesas Project Generator (Ver.4.5).     */
+/*   m308															   */
+/*   nc308lib														   */
+/*   c308mr															   */
+/*   nc382lib														   */
+/*                                                                     */
+/***********************************************************************/
+#include "sfr32c87.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <itron.h>
+#include <kernel.h>
+#include "kernel_id.h"
+#include "lcd.h"
+#include "clavier.h"
+#include "periph.h"
+#include "uart0.h"
+#include "can.h"
+#include "carte_io.h"
+#include "carte_m32.h"
+#include <math.h>
+
+// Potentiometre: lire les registres ad00 et ad01, les valeurs sont sur 10 bits.
+
+// Clavier: vrcv_dtq(QdmTouche,&code_touche) pour lire la derniere touche appuyee sur le clavier.
+// 			la variable code_touche doit etre du type short.
+
+// Bouton poussoir: Bp_G, Bp_M, Bp_D permettent de lire l'etat des boutons de la carte I/O
+
+// Leds: LED_R=1 ou LED_R=0 Pour allumer ou eteindre les leds (LED_R, LED_J, LED_V).
+
+// Pour communiquer avec le simulateur utiliser une variable de type CanFrame,
+// Definir les differents champs en utilisant la structure (S)eparee (comm.data)
+// Envoyer le message complet en utilisant l'union (comm.msg)
+
+// Exemple:
+// 		CanFrame comm;
+//			comm.data.id='T'; comm.data.rtr=0; comm.data.val=-100;
+//			snd_dtq (CanTx,comm.msg);
+
+// Pour interroger un peripherique et recuperer les donnees brutes renvoyees simulateur:
+//		CanFrame demande;
+//		CanFrame reponse;
+//
+//			demande.data.id='R'; demande.data.rtr=1;
+//			snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
+// 			rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
+// 			reponse.data.val contient la valeur de retour du simulateur.
+// ATTENTION: Ne pas utiliser rcv_dtq(CanRx... si la tache ID_periph_rx est active
+
+// Lors de l'utilisation de la tache de reception et distribution des messages ID_periph_rx
+// Demarrer cette tache : sta_tsk(ID_periph_rx);
+// Pour lire la valeur d'un peripherique:
+// Il faut envoyer une demande de lecture:
+// 	CanFrame comm;
+// 		comm.data.id='R'; comm.data.rtr=1;
+// 		snd_dtq (CanTx,comm.msg);
+//
+// Des l'arrivee de la reponse du simlateur, les variables suivantes sont mises a jour:
+// periph[ADDR('R')].val : contient la derniere valeur renvoyee par le simulateur.
+//
+// Pour verifier si une nouvelle valeur a ete recue utiliser:
+// periph[ADDR('R')].maj (incremente a chaque reception).
+
+// Pour qu'un evenement soit declenche lors de la reception d'une donnee pour un peripherique:
+// periph[ADDR('R')].ev=0x01;
+// Pour se mettre en attente de l'evenement: wai_flg (ev_periph,0x01,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(ev_periph,~0x01); par example
+
+// Les evenements:
+// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
+// par exemple:  wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
+//Bit   Information associee            Remarque
+//0     Capteur Vert,                   remis a zero lors de la lecture du peripherique 'C'
+//1     Capteur Jaune,                  remis a zero lors de la lecture du peripherique 'C'
+//2     Capteur Rouge,                  remis a zero lors de la lecture du peripherique 'C'
+//3     Capteur Bleu,                   remis a zero lors de la lecture du peripherique 'C'
+//4     Capteur Cyan,                   remis a zero lors de la lecture du peripherique 'C'
+//5
+//6     Collision avec le sol,          remise a zero au changement de piste.
+//7     Fin de course (capteur vert),   remis a zero lors de la lecture du peripherique 'C'
+//8     La piste a change ,             remis a zero lors de la lecture du peripherique 'M'
+//9     Le mode de course a change ,    remis a zero lors de la lecture du peripherique 'M'
+//10
+//11    Le vehicule a termine un tour,   remis a zero au changement du mode de course.
+//12    Sortie de la piste,
+//13    Teleportation a ete utilisee,   remis a zero au changement de piste ou du mode de course.
+//14    Faux depart                     remise a zero au changement du mode de course.
+//15
+
+
+// Peripheriques disponibles:
+//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
+//'D'/68/0x44 : Commande de l'angle des roues directrices (en 1/10 de degre).
+//'T'/84/0x54 : Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
+//'R'/82/0x52 : Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
+//'U'/85/0x55 : Distance mesuree par le telemetre (1/100 de metre)
+//'N'/78/0x4E : Numero de la voiture (en fonction de l'ordre de connexion)
+//'E'/69/0x45 : Lecture des evenements,
+//'H'/72/0x48 : Donne le temps de course actuel
+//'S'/83/0x53 : Temps du tour precedent
+//'M'/77/0x7D : Mode de course :
+//  Bit 15 : Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
+//  Bits 14-8 : 1 Attente, 2 course, 3 essais libres)
+//  Bits 7-0 : numero de la piste
+//'C'/67/0x43 : Informations sur le dernier capteur touche :
+//  8 bits de poids faible : numero du capteur
+//  8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
+//'J'/74/0x4A : Proposition d'un code de dévérouillage.
+//'j'/106/06A : Récupération du résultat de dernier code envoyé. 0x77 si aucun code n'a été soumis. <0 si la réponse n'est pas
+//				disponible. 0xab avec a-> nombre de couleurs bien placées et b -> couleurs présentes mais mal placées.
+//'I'/73/Ox49 : Définition du nom du véhicule. Doit débuter par le caractère '#' et entraine le chargement de la configuration de piste
+//				correspondant au nom du véhicule si le nom se termine par '*'
+
+
+int cons=450; //contient la consigne
+int retour=0; //contient la valeur retourner par le périph
+int k=3; //contient le gain du correcteur de la boucle de régulation de la tourelle
+int k2=1; //contient le gain du correcteur de l'angle des roues
+int vitesse=80; //vitesse en ligne droite
+int vitesse_virage=30; //vitesse dans les virages
+int valeur=0; //contient la valeur à envoyer
+int distance=0; //mesure de la distance grâce au télémère
+int cons_roue=700; //consigne du placement au milieu de la route
+int ang_roue=0; //correction de l'angle à effectuer
+
+CanFrame vit_roue; //canal de commande de la vitesse
+
+void demarre()
+{
+		dly_tsk(2000);
+		vit_roue.data.id='V'; 
+    	vit_roue.data.rtr=0; 
+    	vit_roue.data.val=vitesse;
+	    snd_dtq (CanTx,vit_roue.msg);
+
+}
+
+void asserv0()
+{
+	CanFrame comm;
+	CanFrame req;
+	CanFrame reponse;
+	while(1){
+		
+    req.data.id='R'; 
+    req.data.rtr=1;
+ 
+    snd_dtq (CanTx,req.msg); // Interrogation du peripherique
+    retour=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
+        
+    comm.data.id='T'; 
+    comm.data.rtr=0; 
+    comm.data.val=valeur;
+    snd_dtq (CanTx,comm.msg); //on envoie la modification à effectuer
+	if(retour!=cons) valeur=k*(cons-retour);
+	dly_tsk(3);
+	}
+}
+
+int calcul_virage(int a){
+	if (a>-10 && a<10){
+		return vitesse;}
+	else if(a>0&&a<50) 
+		return -a/2+80;
+		//return (a*a)/100-a+vitesse;
+	else if(a<0&&a>-50) 
+		return a/2+80;
+		//return (a*a)/100+a+vitesse;
+	else if (a<-100||a>100){
+		return vitesse_virage;
+	}
+	else return ((-(a*a)/100)+vitesse);
+	
+	/*if (a<0){
+		return ((a*a)/200+a+vitesse);
+	}
+	else{ 
+		return ((a*a)/200-a+vitesse);
+	
+	if (a>-50 && a<50)	return vitesse;
+	else return vitesse_virage;	*/
+}
+ 	
+void mes_dist(){
+
+	CanFrame req;
+    UINT flag;
+    while(1){
+        req.data.id='U';
+        req.data.rtr=1;
+        periph[ADDR('U')].ev=0x02;
+        snd_dtq(CanTx, req.msg);
+
+        wai_flg (ev_periph, 0x02, TWF_ANDW, &flag);
+        if (periph[ADDR('U')].val>900){
+		}
+		else {
+			distance=periph[ADDR('U')].val;
+			}
+		dly_tsk(3);
+	}
+}
+
+void angle_roue()
+{
+    CanFrame req,comm;
+    UINT flag;
+   	while (1) {
+        req.data.id='D';
+        req.data.rtr=1;
+        periph[ADDR('D')].ev=0x01;
+        snd_dtq(CanTx, req.msg);
+
+       	wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
+        ang_roue=periph[ADDR('D')].val;
+
+        comm.data.id='D';
+        comm.data.rtr=0; 
+        comm.data.val=k2*(distance-cons_roue);		
+		vit_roue.data.val=calcul_virage(k2*(distance-cons_roue)); 
+	  	snd_dtq (CanTx,vit_roue.msg);
+        snd_dtq(CanTx, comm.msg);
+		dly_tsk(3);
+	}
+}
+
+
+void main()
+{	
+	ports_mcu();
+    lcd_init();
+	periph_init();
+	periph_nom("#AutoTest*");
+
+    can_init();
+    clavier_init(1);
+	capture_init();
+	
+	sta_cyc(ID_acqui);
+	sta_tsk(ID_periph_rx);
+	sta_tsk(ID_asserv0);
+	sta_tsk(ID_mes_dist);
+	sta_tsk(ID_angle_roue);
+	sta_tsk(ID_demarre);
+
+    while(1){
+	}
+	 
+}
+
+void acqui()
+{
+	LED_V=!LED_V;
+}
+
