★ 컴퓨터로
수신받아
캐릭터 LCD에
글자
출력
Ex) main 함수 |
#include "arm.h" #include "led.h" #include "aic.h" #include "ultra.h" #include "lcd.h" #include "dbgu.h"
void Init(void);
int main() { unsigned char UC_char; Init(); while(1) { UC_char = DBGU_Rchar (); LCD_data(UC_char); } while(1); return 0; }
void Init(void) { init_LCD(); Init_DBGU(); return ; } |
Ex) DBGU 함수 |
#include "arm.h" #include "dbgu.h"
void DBGU_string(unsigned char *ucstring) { if( ucstring == 0 ) { return ; } while( *ucstring != 0) { while(0==( DBGU_SR & (1<<TXRDY))); DBGU_THR = *ucstring; ++ucstring; } return ; }
unsigned char DBGU_Rchar () { while(0==( DBGU_SR & (1<<RXRDY))); return DBGU_RHR; }
void Init_DBGU()//송수신이 가능해지게 초기화 하는 함수 { /* 핀 셋팅 */ DBGU_CR = (1 << RSTRX) |(1 << RSTTX);
//Receiver and Trnasmitter is Reset 송 수신 리셋 걸어 스톱 DBGU_IDR = (1<<RXRDY) |(1<<TXRDY) |(1<<ENDRX) |(1<<ENDTX) | (1<<OVRE) |(1<<FRAME) |(1<<PARE) |(1<<TXEMPTY) |(1<<TXBUFE) | (1<<RXBUFF) |(1<<COMMTX) |(1<<COMMRX); //all Interrupt Disable PIO_ASR = (1<<DRXD) | (1<<DTXD);//A모드 선택 PIO_PDR = (1<<DRXD) | (1<<DTXD);//PIO 비활성화 레지스터 /* 전송 속도 결정, 통신모드 설정 */ DBGU_BRGR = 26;//전송속도 결정 26 넣으면 115200이 됨. 초당 14KB 정도. DBGU_MR = 0x00000000; //이거슨 모드 레지스터 Normal Mode, Even Parity /* DMA기능 오프 */ PERIPH_PTCR = (1<<RXTDIS) | (1<<TXTDIS); //DMC Disable DBGU_CR = (1<<RXEN) | (1<<TXEN); return ; } |
Ex) LCD 함수 |
#include "arm.h" #include "lcd.h"
void init_LCD(void) { PMC_PCER = 1 << PIOA; PIO_OWER = LCD_ALL; // I/O 기능 선택 PIO_PER = LCD_ALL; // pin 활성화 PIO_OER = LCD_ALL; // IO 출력 기능 활성화 LCD_Init();
return ; }
/* LCD CLEAR 기능 함수 */ void LCD_CLEAR(void) { volatile unsigned int dly; PIO_CODR = LCD_ALL; // LCD_ALL 을 Low 로 변환 한다. PIO_SODR = LCD_EN; // LCD_EN(E)만 Hight 엣지상태로 만든다. EMB_delay(100000); PIO_SODR = LCD_DB(0x01); EMB_delay(100000); // t_AS : 40 ns min 정도의 시간을 번다. PIO_CODR = LCD_EN; // LCD_ALL 을 Low 로 변환 한다. EMB_delay(100000);
return ; }
void LCD_Init(void) { LCD_inst(Function_set); LCD_inst(Entry_Mode); LCD_inst(Cursor_Dis); LCD_inst(Display_on_off); LCD_inst(Clear_Dis); LCD_inst(RETURN_Home);
return; }
void LCD_return(void) { volatile unsigned int dly; PIO_CODR = LCD_ALL; PIO_SODR = LCD_EN; EMB_delay(100000); PIO_SODR = LCD_DB(0x02); EMB_delay(100000); PIO_CODR = LCD_EN;
EMB_delay(100000); return ; }
void LCD_inst(unsigned char UC_inst) { volatile unsigned int dly; PIO_CODR = LCD_ALL; // LCD_ALL 을 Low 로 변환 한다. PIO_SODR = LCD_EN; // LCD_EN(E)만 Hight 엣지상태로 만든다. EMB_delay(LCD_Delay1); PIO_SODR = LCD_DB(UC_inst);
EMB_delay(LCD_Delay2); // t_AS : 40 ns min 정도의 시간을 번다. PIO_CODR = LCD_EN; // LCD_ALL 을 Low 로 변환 한다. EMB_delay(LCD_Delay3);
return ; }
void LCD_data(unsigned char UC_data) { volatile unsigned int dly; PIO_CODR = LCD_ALL; // LCD_ALL 을 Low 로 변환 한다. PIO_SODR = LCD_RS; // 글자전송 PIO_SODR = LCD_EN; // LCD_EN(E)만 Hight 엣지상태로 만든다. EMB_delay(LCD_Delay1); PIO_SODR = LCD_DB(UC_data); EMB_delay(LCD_Delay2); // t_AS : 40 ns min 정도의 시간을 번다. PIO_CODR = LCD_EN; // LCD_ALL 을 Low 로 변환 한다. EMB_delay(LCD_Delay3);
return ; }
void LCD_String(void *vp) { while(0 != (*((unsigned char *)vp)) ) { LCD_data( (*((unsigned char *)vp)) ); vp = ((unsigned char *)vp) +1; }
return ; } |
ㆍ하이퍼
터미널을
이용하여 ARM 과
통신
설정후
키보드로
입력하면 LCD에
출력
된다.
< 실행
결과 >
★ 캐릭터 LCD 2Line :: BackSpace 구현
Ex) 위의 LCD 함수 에서 추가 |
void LCD_Position(unsigned char UC_Pos) { UC_Pos = 0x80 | ((UC_Pos)&0x4F); LCD_inst(UC_Pos); return ; } |
ㆍ위
함수는 LCD 2개의 Line 을
사용할수
있도록
주소값을
세팅해준다.
ㆍDBGU 함수는
위
예제와
동일함.
Ex) main 함수 |
#include "arm.h" #include "led.h" #include "aic.h" #include "ultra.h" #include "lcd.h" #include "dbgu.h"
void Init(void);
int main() { unsigned char UC_char; unsigned int I_LCD_count = 0; Init(); while(1) { UC_char = DBGU_Rchar (); if( UC_char == 8 ) { if( I_LCD_count == 0x40 ) { LCD_Position(0x10); I_LCD_count = 0x10; } else if(I_LCD_count == 0) { LCD_Position(0x50); I_LCD_count = 0x50; } --I_LCD_count; LCD_Position(I_LCD_count); UC_char = ' '; LCD_data(UC_char); LCD_Position(I_LCD_count); } else { LCD_data(UC_char); ++I_LCD_count; } if( 0x4F < I_LCD_count ) { LCD_return(); I_LCD_count = 0; } else if( 0x10 == I_LCD_count) { LCD_Position(0x40); I_LCD_count = 0x40; } } while(1); return 0; }
void Init(void) { init_LCD(); Init_DBGU(); return ; } |
< 실행
결과 >
[ 위에서
사용된
헤더파일 ]
Ex) 헤더파일 |
//////////////////////////////////////////////////////////////////////////// /////////// [ 2012. 07. 18.By.L ] ////////// /////////// /REF :: 6175G.ATARM.22- Nov- 60 ::SPEC ////////// //////////////////////////////////////////////////////////////////////////// #ifndef __ARM_H__ #define __ARM_H__
/*============================================================================== [ Parallel Input Output Controller ( PIO > : SPEC :: P.88 ]===================== ===============================================================================*/ #define PIO_PER (*((volatile unsigned int *)0xFFFFF400)) #define PIO_PDR (*((volatile unsigned int *)0xFFFFF404))// PIO Disable Register #define PIO_PSR (*((volatile unsigned int *)0xFFFFF408))// PIO Status Register(1) //<Reserved>=================================================== #define PIO_OER (*((volatile unsigned int *)0xFFFFF410)) #define PIO_ODR (*((volatile unsigned int *)0xFFFFF414)) #define PIO_OSR (*((volatile unsigned int *)0xFFFFF418)) //<Reserved>=================================================== #define PIO_IFER (*((volatile unsigned int *)0xFFFFF420)) #define PIO_IFDR (*((volatile unsigned int *)0xFFFFF424)) #define PIO_IFSR (*((volatile unsigned int *)0xFFFFF428)) //<Reserved>=================================================== #define PIO_SODR (*((volatile unsigned int *)0xFFFFF430))
#define PIO_CODR (*((volatile unsigned int *)0xFFFFF434)) #define PIO_ODSR (*((volatile unsigned int *)0xFFFFF438))
#define PIO_PDSR (*((volatile unsigned int *)0xFFFFF43C))
#define PIO_IER (*((volatile unsigned int *)0xFFFFF440)) #define PIO_IDR (*((volatile unsigned int *)0xFFFFF444)) #define PIO_IMR (*((volatile unsigned int *)0xFFFFF448)) #define PIO_ISR (*((volatile unsigned int *)0xFFFFF44C)) #define PIO_MDER (*((volatile unsigned int *)0xFFFFF450)) #define PIO_MDDR (*((volatile unsigned int *)0xFFFFF454)) #define PIO_MDSR (*((volatile unsigned int *)0xFFFFF458)) //<Reserved>=================================================== #define PIO_PUDR (*((volatile unsigned int *)0xFFFFF460)) #define PIO_PUER (*((volatile unsigned int *)0xFFFFF464)) #define PIO_PUSR (*((volatile unsigned int *)0xFFFFF468)) //<Reserved>=================================================== #define PIO_ASR (*((volatile unsigned int *)0xFFFFF470)) #define PIO_BSR (*((volatile unsigned int *)0xFFFFF474)) #define PIO_ABSR (*((volatile unsigned int *)0xFFFFF478)) //<Reserved>=================================================== #define PIO_OWER (*((volatile unsigned int *)0xFFFFF4A0)) #define PIO_OWDR (*((volatile unsigned int *)0xFFFFF4A4))
#define PIO_OWSR (*((volatile unsigned int *)0xFFFFF4A8)) /* Notes: 1. Reset value of PIO_PSR depends on the product implementation. 2. PIO_ODSR is Read-only or Read/Write depending on PIO_OWSR I/O lines. 3. Reset value of PIO_PDSR depends on the level of the I/O lines. 4. PIO_ISR is reset at 0x0. However, the first read of the register may read a different value as input changes may have occurred. 5. Only this set */
#define PORTA PIO_ODSR
/*============================================================================== [ Power Management Controller ( PMC ) User Interface : SPEC :: P.222 ]========== ===============================================================================*/ #define PMC_PCER (*((volatile unsigned int *)0xFFFFFC10)) #define PMC_PCDR (*((volatile unsigned int *)0xFFFFFC14)) #define PMC_PCSR (*((volatile unsigned int *)0xFFFFFC18))
/*================================================================================ [ Peripheral Identifiers : SPEC :: P.34 ]========================================= =================================================================================*/ #define AIC_FIQ 0 // Advanced Interrupt Controller #define SYSC 1 // System #define PIOA 2 // Parallel I/O Controller A #define ADC 4 // Analog-to Digital Converter #define SPI 5 // Serial Peripheral Interface #define US0 6 // USART 0 #define US1 7 // USART 1 #define SSC 8 // Synchronous Serial Controller #define TWI 9 // Two-wire Interface #define PWMC 10 // PWM Controller #define UDP 11 // USB Device Port #define TC0 12 // Timer/Counter 0 #define TC1 13 // Timer/Counter 1 #define TC2 14 // Timer/Counter 2 #define AIC_IRQ0 30 // Advanced Interrupt Controller #define AIC_IRQ1 31 // Advanced Interrupt Controller
/*=============================================================================== [ Advanced Interrupt Controller (AIC) : SPEC :: P.198 ]=========================== ================================================================================*/ #define AIC_SMR ((volatile unsigned int *)0xFFFFF000) #define AIC_SMR0 (*((volatile unsigned int *)0xFFFFF000)) #define AIC_SMR1 (*((volatile unsigned int *)0xFFFFF004)) #define AIC_SMR2 (*((volatile unsigned int *)0xFFFFF008)) #define AIC_SMR3 (*((volatile unsigned int *)0xFFFFF00C)) #define AIC_SMR4 (*((volatile unsigned int *)0xFFFFF010)) #define AIC_SMR5 (*((volatile unsigned int *)0xFFFFF014)) #define AIC_SMR6 (*((volatile unsigned int *)0xFFFFF018)) #define AIC_SMR7 (*((volatile unsigned int *)0xFFFFF01C)) #define AIC_SMR8 (*((volatile unsigned int *)0xFFFFF020)) #define AIC_SMR9 (*((volatile unsigned int *)0xFFFFF024)) #define AIC_SMR10 (*((volatile unsigned int *)0xFFFFF028)) #define AIC_SMR11 (*((volatile unsigned int *)0xFFFFF02C)) #define AIC_SMR12 (*((volatile unsigned int *)0xFFFFF030)) #define AIC_SMR13 (*((volatile unsigned int *)0xFFFFF034)) #define AIC_SMR14 (*((volatile unsigned int *)0xFFFFF038)) #define AIC_SMR15 (*((volatile unsigned int *)0xFFFFF03C)) #define AIC_SMR16 (*((volatile unsigned int *)0xFFFFF040)) #define AIC_SMR17 (*((volatile unsigned int *)0xFFFFF044)) #define AIC_SMR18 (*((volatile unsigned int *)0xFFFFF048)) #define AIC_SMR19 (*((volatile unsigned int *)0xFFFFF04C)) #define AIC_SMR20 (*((volatile unsigned int *)0xFFFFF050)) #define AIC_SMR21 (*((volatile unsigned int *)0xFFFFF054)) #define AIC_SMR22 (*((volatile unsigned int *)0xFFFFF058)) #define AIC_SMR23 (*((volatile unsigned int *)0xFFFFF05C)) #define AIC_SMR24 (*((volatile unsigned int *)0xFFFFF060)) #define AIC_SMR25 (*((volatile unsigned int *)0xFFFFF064)) #define AIC_SMR26 (*((volatile unsigned int *)0xFFFFF068)) #define AIC_SMR27 (*((volatile unsigned int *)0xFFFFF06C)) #define AIC_SMR28 (*((volatile unsigned int *)0xFFFFF070)) #define AIC_SMR29 (*((volatile unsigned int *)0xFFFFF074)) #define AIC_SMR30 (*((volatile unsigned int *)0xFFFFF078)) #define AIC_SMR31 (*((volatile unsigned int *)0xFFFFF07C)) #define AIC_SVR ((volatile unsigned int *)0xFFFFF080) #define AIC_SVR0 (*((volatile unsigned int *)0xFFFFF080)) #define AIC_SVR1 (*((volatile unsigned int *)0xFFFFF084)) #define AIC_SVR2 (*((volatile unsigned int *)0xFFFFF088)) #define AIC_SVR3 (*((volatile unsigned int *)0xFFFFF08C)) #define AIC_SVR4 (*((volatile unsigned int *)0xFFFFF090)) #define AIC_SVR5 (*((volatile unsigned int *)0xFFFFF094)) #define AIC_SVR6 (*((volatile unsigned int *)0xFFFFF098)) #define AIC_SVR7 (*((volatile unsigned int *)0xFFFFF09C)) #define AIC_SVR8 (*((volatile unsigned int *)0xFFFFF0A0)) #define AIC_SVR9 (*((volatile unsigned int *)0xFFFFF0A4)) #define AIC_SVR10 (*((volatile unsigned int *)0xFFFFF0A8)) #define AIC_SVR11 (*((volatile unsigned int *)0xFFFFF0AC)) #define AIC_SVR12 (*((volatile unsigned int *)0xFFFFF0B0)) #define AIC_SVR13 (*((volatile unsigned int *)0xFFFFF0B4)) #define AIC_SVR14 (*((volatile unsigned int *)0xFFFFF0B8)) #define AIC_SVR15 (*((volatile unsigned int *)0xFFFFF0BC)) #define AIC_SVR16 (*((volatile unsigned int *)0xFFFFF0C0)) #define AIC_SVR17 (*((volatile unsigned int *)0xFFFFF0C4)) #define AIC_SVR18 (*((volatile unsigned int *)0xFFFFF0C8)) #define AIC_SVR19 (*((volatile unsigned int *)0xFFFFF0CC)) #define AIC_SVR20 (*((volatile unsigned int *)0xFFFFF0D0)) #define AIC_SVR21 (*((volatile unsigned int *)0xFFFFF0D4)) #define AIC_SVR22 (*((volatile unsigned int *)0xFFFFF0D8)) #define AIC_SVR23 (*((volatile unsigned int *)0xFFFFF0DC)) #define AIC_SVR24 (*((volatile unsigned int *)0xFFFFF0E0)) #define AIC_SVR25 (*((volatile unsigned int *)0xFFFFF0E4)) #define AIC_SVR26 (*((volatile unsigned int *)0xFFFFF0E8)) #define AIC_SVR27 (*((volatile unsigned int *)0xFFFFF0EC)) #define AIC_SVR28 (*((volatile unsigned int *)0xFFFFF0F0)) #define AIC_SVR29 (*((volatile unsigned int *)0xFFFFF0F4)) #define AIC_SVR30 (*((volatile unsigned int *)0xFFFFF0F8)) #define AIC_SVR31 (*((volatile unsigned int *)0xFFFFF0FC)) #define AIC_IVR (*((volatile unsigned int *)0xFFFFF100)) #define AIC_FVR (*((volatile unsigned int *)0xFFFFF104)) #define AIC_ISR (*((volatile unsigned int *)0xFFFFF108)) #define AIC_IPR (*((volatile unsigned int *)0xFFFFF10C)) #define AIC_IMR (*((volatile unsigned int *)0xFFFFF110)) #define AIC_CISR (*((volatile unsigned int *)0xFFFFF114)) //<Reserved>=================================================== //<Reserved>=================================================== #define AIC_IECR (*((volatile unsigned int *)0xFFFFF120)) #define AIC_IDCR (*((volatile unsigned int *)0xFFFFF124)) #define AIC_ICCR (*((volatile unsigned int *)0xFFFFF128)) #define AIC_ISCR (*((volatile unsigned int *)0xFFFFF12C)) #define AIC_EOICR (*((volatile unsigned int *)0xFFFFF130)) #define AIC_SPU (*((volatile unsigned int *)0xFFFFF134))
#define AIC_DCR (*((volatile unsigned int *)0xFFFFF138)) //<Reserved>================================================== #define AIC_FFER (*((volatile unsigned int *)0xFFFFF140)) #define AIC_FFDR (*((volatile unsigned int *)0xFFFFF144)) #define AIC_FFSR (*((volatile unsigned int *)0xFFFFF148)
#define PRIOR 0 #define SRCTYPE 5 #define AIC_SRCTYPE_INT_HIGH_LEVEL 2 #define AIC_PRIOR_LOWEST 0
/*============================================================ [ Timer/Counter (TC) : SPEC :: P.405 ]========================= ==============================================================*/ #define TC_CCR (*((volatile unsigned int *)0xFFFA0000)) #define TC_CMR (*((volatile unsigned int *)0xFFFA0004)) //<Reserved>================================================== //<Reserved>================================================== #define TC_CV (*((volatile unsigned int *)0xFFFA0010)) #define TC_RA (*((volatile unsigned int *)0xFFFA0014)) #define TC_RB (*((volatile unsigned int *)0xFFFA0018)) #define TC_RC (*((volatile unsigned int *)0xFFFA001C)) #define TC_SR (*((volatile unsigned int *)0xFFFA0020)) #define TC_IER (*((volatile unsigned int *)0xFFFA0024)) #define TC_IDR (*((volatile unsigned int *)0xFFFA0028)) #define TC_IMR (*((volatile unsigned int *)0xFFFA002C)) //<Reserved>================================================== //[ TC_CCR ]================================================== #define CLKEN 0 #define CLKDIS 1 #define SWTRG 2 //[ TC_IDR ]================================================== #define COVFS 0 #define LOVRS 1 #define CPAS 2 #define CPBS 3 #define CPCS 4 #define LDRAS 5 #define LDRBS 6 #define ETRGS 7 //[ TC_SR ]=================================================== #define CLSKSTA 16 #define MTIOA 17 #define MTIOB 18 //[ TC_CMR ]================================================== #define TCCLKS 0 #define CLKI 3 #define BURST 4 #define LDBSTOP 6 #define LDBDIS 7 #define ETRGEDG 8 #define ABETRG 10 #define CPCTRG 14 #define WAVE 15 #define LDRA 16
#define TIMER_CLOCK5 4 #define TIMER_CLOCK1 0
/*=============================================================== [ Debug Unit (DBGU) : SPEC :: P.247 ]============================ =================================================================*/
//< DBGU 함수 정의 >=============================================== #define DBGU_CR *((volatile unsigned int *) 0xFFFFF200) #define DBGU_MR *((volatile unsigned int *) 0xFFFFF204) #define DBGU_IER *((volatile unsigned int *) 0xFFFFF208) #define DBGU_IDR *((volatile unsigned int *) 0xFFFFF20C) #define DBGU_IMR *((volatile unsigned int *) 0xFFFFF210) #define DBGU_SR *((volatile unsigned int *) 0xFFFFF214) #define DBGU_RHR *((volatile unsigned int *) 0xFFFFF218) #define DBGU_THR *((volatile unsigned int *) 0xFFFFF21C) #define DBGU_BRGR *((volatile unsigned int *) 0xFFFFF220) #define DBGU_CIDR *((volatile unsigned int *) 0xFFFFF240) #define DBGU_EXID *((volatile unsigned int *) 0xFFFFF244) #define DBGU_FNR *((volatile unsigned int *) 0xFFFFF248) //================================================================= #define PERIPH_PTCR *((volatile unsigned int *) 0xFFFFF320) #define PERIPH_PTSR *((volatile unsigned int *) 0xFFFFF324) //[ DBGU_CR]>====================================================== #define RSTRX 2 #define RSTTX 3 #define RXEN 4 #define RXDIS 5 #define TXEN 6 #define TXDIS 7 #define RSTSTA 8 //[ DBGU_IDR ]===================================================== #define RXRDY 0 #define TXRDY 1 #define ENDRX 3 #define ENDTX 4 #define OVRE 5 #define FRAME 6 #define PARE 7 #define TXEMPTY 9 #define TXBUFE 11 #define RXBUFF 12 #define COMMTX 30 #define COMMRX 31 //================================================================= #define DRXD 9 #define DTXD 10 //================================================================= #define RXTDIS 1 #define TXTDIS 9
/*================================================================== [ <ADC> : SPEC :: P.247 ]=========================================== ====================================================================*/ #define ADC_CR *((volatile unsigned int *)0xFFFD8000) #define ADC_MR *((volatile unsigned int *)0xFFFD8004) #define ADC_CHER *((volatile unsigned int *)0xFFFD8010) #define ADC_CHDR *((volatile unsigned int *)0xFFFD8014) #define ADC_CHSR *((volatile unsigned int *)0xFFFD8018) #define ADC_SR *((volatile unsigned int *)0xFFFD801C) #define ADC_LCDR *((volatile unsigned int *)0xFFFD8020) #define ADC_IER *((volatile unsigned int *)0xFFFD8024) #define ADC_IDR *((volatile unsigned int *)0xFFFD8028) #define ADC_IMR *((volatile unsigned int *)0xFFFD802C) #define ADC_CDR0 *((volatile unsigned int *)0xFFFD8030) #define ADC_CDR1 *((volatile unsigned int *)0xFFFD8034) #define ADC_CDR2 *((volatile unsigned int *)0xFFFD8038) #define ADC_CDR3 *((volatile unsigned int *)0xFFFD803C) #define ADC_CDR4 *((volatile unsigned int *)0xFFFD8040) #define ADC_CDR5 *((volatile unsigned int *)0xFFFD8044) #define ADC_CDR6 *((volatile unsigned int *)0xFFFD8048) #define ADC_CDR7 *((volatile unsigned int *)0xFFFD804C) //================================================================= #define ADC_ID 4 // ADC 활성 ID ( 기본적으로 켜져있다. ) #define SWRST 0 // Software Reset #define START 1 // Start Conversion( 변환 > #define CH7 7 // 7번 체널 //[ ADC Mode Register ]============================================ #define TRGEN 0 #define TRGSEL 0 #define LOWRES 4 #define SLEEP 5 #define PRESCAL 8 #define STARTUP 16 #define SHTIM 24 //[ ADC_SR ]======================================================= #define EOC7 7 #define DRDY 16 //[ ADC_LCDR ]===================================================== #define LDATA 0
/*============================================================== [ <LCD> : SPEC :: ]============================================= ===================================================================*/ #define LCD_RS (1<<29) #define LCD_RW (1<<30) #define LCD_EN (1<<31) #define LCD_BS 0x00FF0000 #define LCD_ALL (LCD_RS | LCD_RW | LCD_EN | LCD_BS) #define RETURN_Home 0x02 /* LCD 데이터 버스 메크로 */ #define LCD_DB(x) ((x)<<(16)) #endif // __ARM_H__ |