1 / 20

문자열 입 · 출력 프로그램 작성 예

문자열 입 · 출력 프로그램 작성 예. 모니터에 문자열 출력 하는 프로그램 작성. 시리얼 모니터에 문자열을 출력하는 함수 . 함수의 기본형 : void SCI_OutString (char * pt ) 문자열이 저장된 기억장소의 포인터를 인수로 받아 USART 장치에 문자열을 출력하는 한다 . 문자열의 끝은 C 의 문자열과 같이 NULL(0) 가 저장되어 있다 . 영문 소문자 또는 대문자를 전달 받아 대문자로 변환 하여 되돌려 주는 함수 .

elana
Download Presentation

문자열 입 · 출력 프로그램 작성 예

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 문자열 입·출력 프로그램 작성 예

  2. 모니터에 문자열 출력 하는 프로그램 작성 • 시리얼 모니터에 문자열을 출력하는 함수. • 함수의 기본형 : void SCI_OutString(char *pt) • 문자열이저장된 기억장소의 포인터를 인수로 받아 USART 장치에 문자열을 출력하는 한다. • 문자열의 끝은 C 의 문자열과 같이 NULL(0)가 저장되어 있다. • 영문 소문자 또는 대문자를 전달 받아 대문자로 변환 하여되돌려 주는 함수. • 함수의 기본형 : void SCI_UpCase(char character) • 부호 없는 정수를 출력하는 함수. • 함수의 기본형 : void SCI_OutUDec(unsigned short number) • 부호 없는 정수 number 의 값을 전달 받아 문자로 변환 하여 USART 장치에 출력 하라. • 부호 있는 정수를 출력하는 함수. • 함수의 기본형 : void SCI_OutSDec(unsigned short number • 부호 있는 정수 number 의 값을 전달 받아 문자로 변환 하여 USART 장치에 출력 하라.

  3. 모니터에 문자열 출력 하는 프로그램 작성 • Null 문자로 끝나는 문자열을 전달 받아 대 문자로 변환하여 되돌려 주는 함수. • 함수의 기본형 : void SCI_UpCaseString(char *inString) • 문자열이저장된 기억장소의 포인터를 인수로 받아 대문자로변환 한 후 되돌려 주는 함수 • 부호 없는 정수를 16진 수로 변환하여 USART 장치에 출력하는 함수. • 함수의 기본형 : void SCI_OutUHex(unsigned short number) • 부호 없는 정수 number 의 값을 전달 받아 16진 문자열로 변환 하여 USART 장치에 출력 하라

  4. Key Board로 부터 문자열을 입력 하는 프로그램 • 부호 없는 10진 수를 Key Board로부터 입력하는 함수. • 부호 있는 10진 수를 Key Board로부터 입력하는 함수. • 부호 없는 16진 수를 Key Board로부터 입력하는 함수. • 문자열을 Key Board로부터 입력하는 함수.

  5. // SCI_OutChar to USART void SCI_OutChar(char letter){ tx0_char(letter); } // UART0 을 이용한 출력 void tx0_char(unsigned char data) { // Wait for empty transmit buffer while ( !(UCSR0A & (1<<UDRE))); // Put data into buffer, sends the data UDR0 = data; } • 표준 출력 함수 예

  6. // SCI_InChar from USART unsigned short SCI_InChar(){ return (rx0_char()); } // UART0 을 이용한 입력 unsigned char rx0_char(void) { // Wait for data to be received while ( !(UCSR0A & (1<<RXC)) ); // Get and return received data from buffer return UDR0; } • 표준 입력 함수 예

  7. // Output String (NULL termination) void SCI_OutString(char *pt){ char letter; while(letter=*pt++){ SCI_OutChar(letter); } } • 문자열을 출력하는 함수

  8. // converts lowercase to uppercase // char by subtracting $20 from lowercase ASCII to make // uppercase ASCII char SCI_UpCase(char character){ return ((character>='a') && (character<='z')) ? character-0x20 : character; } • 영문 소문자 또는 대문자를 전달 받아 대문자로 변환 하여되돌려 주는 함수

  9. //-----------------------SCI_OutUDec----------------------- // Output a 16 bit number in unsigned decimal format // Variable format 1-5 digits with no space before or after // This function uses recursion to convert decimal number // of unspecified length as an ASCII string void SCI_OutUDec(unsigned short n){ if(n >= 10){ SCI_OutUDec(n/10); Recursive Operation n=n % 10; } SCI_OutChar( n + '0‘ ); /* n is between 0 and 9 */ } • 부호 없는 정수를 출력하는 함수

  10. 부호 있는 정수를 출력하는 함수 // Output a 16 bit number in signed decimal format // Variable format (optional sign)1 to 5 digits with no space before or after // This function checks if the input parameter is negative, // If the number is negative, then // 1) it outputs a "-", // 2) negates the number and // 3) outputs it with OutUDec. // Otherwise, it just calls OutUDec (i.e., no "+" sign) void SCI_OutSDec(short number){ if(number < 0){ number = -number; SCI_OutChar('-'); } SCI_OutUDec(number); }

  11. // Output a 32 bit number in unsigned hexadecimal format // Variable format 1 to 8 digits with no space before or after // This function uses recursion to convert the number of // unspecified length as an ASCII string void SCI_OutUHex(unsigned short number){ if(number >= 0x10) { SCI_OutUHex(number / 0x10); SCI_OutUHex(number % 0x10); } else if(number < 0xA){ SCI_OutChar(number + '0'); } else{ SCI_OutChar((number - 0x0A) + 'A'); } } • 부호 없는 정수를 16진 수로 변환하여 출력하는 함수

  12. // converts a NULL terminated string to uppercase void SCI_upCaseString(char *inString){ char *pt = inString; // 'a' = 0x61 and 'A' = 0x41, so their difference is 0x20 while(*pt){ // NULL => done if((*pt >= 'a') && (*pt <= 'z')) *pt -= 0x20; pt++; } } • Null 문자로 끝나는 문자열을 전달 받아 대 문자로 변환하여 되돌려 주는 함수

  13. 부호 없는 10진 수를 Key Board로부터 입력하는 함수 //----------------------SCI_InUDec------------------------------- // InUDec accepts ASCII input in unsigned decimal format // and converts to a 16 bit unsigned number // with a maximum value of 65535 // If you enter a number above 65535, it will truncate without reporting the error // Backspace will remove last digit typed unsigned short SCI_InUDec(void){ unsigned short number=0, length=0; unsigned char character; while((character=SCI_InChar())!=CR){ // accepts until carriage return input // The next line checks that the input is a digit, 0-9. // If the character is not 0-9, it is ignored and not echoed if((character>='0') && (character<='9')) { number = 10*number+(character-'0'); // this line overflows if above 65535 length++; SCI_OutChar(character); }

  14. // If the input is a backspace, then the return number is // changed and a backspace is outputted to the screen else if((character==BS) && length){ number /= 10; length--; SCI_OutChar(character); } } return number; }

  15. 부호 있는 10진 수를 Key Board로부터 입력하는 함수 //----------------------------SCI_InSDec----------------------------- // InSDec accepts ASCII input in signed decimal format // and converts to a signed 16 bit number // with an absolute value up to 32767 // If you enter a number above 32767 or below -32767, // it will truncate without reporting the error // Backspace will remove last digit typed short SCI_InSDec(void){ short number=0, sign=1; // sign flag 1= positive -1 = negative unsigned int length=0; unsigned char character; while ((character=SCI_InChar())!=CR){ // Check for carriage return if(!length) { // + or - only valid as first char if(character=='-'){ sign = -1; length++; SCI_OutChar('-'); // if - inputted, sign is negative } else if(character=='+'){ length++; SCI_OutChar('+'); //if + inputted, sign is positive } }

  16. // The next line checks that the input is a digit, 0-9 // If the character is not 0-9, it is ignored and not echoed if((character>='0') && (character<='9')){ number = number*10+character-'0'; // this line overflows if above 32767 length++; SCI_OutChar(character); } // If the input is a backspace, then the return number is changed and a backspace // is outputted to the screen. If the backspace erases a minus, then sign is // reset to positive else if((character==BS) && length){ number /=10; length--; if(!length){ sign = 1; } SCI_OutChar(BS); } } return sign*number; }

  17. 부호 없는 16진 수를 Key Board로부터 입력하는 함수. //---------------------SCI_InUHex---------------------------------------- // InUHex accepts ASCII input in unsigned hexadecimal (base 16) format // No '$' or '0x' need be entered, just the 1 to 4 hex digits // It will convert lower case a-f to uppercase A-F // and converts to a 16 bit unsigned number // with a maximum value of FFFF // If you enter a number above FFFF, it will truncate without reporting the error // Backspace will remove last digit typed unsigned short SCI_InUHex(void){ unsigned short number=0, digit, length=0; unsigned char character; while((character=SCI_UpCase(SCI_InChar()))!=CR){ digit = 0x10; // assume bad if((character>='0') && (character<='9')){ digit = character-'0'; } else if((character>='A') && (character<='F')){ digit = (character-'A')+0xA; }

  18. // If the character is not 0-9 or A-F, it is ignored and not echoed if(digit <= 0xF ){ number = number *0x10 + digit; length++; SCI_OutChar(character); } // Backspace outputted and return value changed if a backspace is inputted else if(character == BS && length){ number /= 0x10; length--; SCI_OutChar(character); } } return number; }

  19. 문자열을 Key Board로부터 입력하는 함수 //------------------------SCI_InString------------------------ // This function accepts ASCII characters from the serial port // and adds them to a string until a carriage return is inputted // or until max length of the string is reached. // It echoes each character as it is inputted. // If a backspace is inputted, the string is modified // and the backspace is echoed // InString terminates the string with a null character // -- Modified by Agustinus Darmawan + Mingjie Qiu -- void SCI_InString(char *string, unsigned int max) { unsigned int length=0; unsigned char character;

  20. while((character = SCI_InChar()) != CR){ if(character == BS){ if(length){ string--; length--; SCI_OutChar(BS); } } else if(length < max){ *string++ = character; length++; SCI_OutChar(character); } } *string = 0; // 문자열의 끝에 Null code 삽입함. }

More Related