본문 바로가기

목록

(199)
Power ON LED 추가 변경 전 회로도 잘못된 회로 설계 예시 회로 수정 과정 1. 잘못된 회로도 간략화 및 분석 2. 회로도 수정 및 재분석 변경 후 회로도
C언어 연습문제25 [문제] 다음과 같이 두 개의 int형 포인터 변수와 길이가 5인 int형 배열을 선언한다. int* maxPtr; int* minPtr; int arr[5]; 그리고 MaxAndMin이란 이름의 함수를 정의하고 이를 호출하면서 위의 배열과 두 포인터 변수에 대한 정보를 전달하자. 그리고 함수호출이 완료되면, 포인터 변수 maxPtr에는 가장 큰 값이 저장된 배열요소의 주소 값이, minPtr에는 가장 작은 값이 저장된 배열요소의 주소 값이 저장되어야 한다. [실행결과] 정수 입력 1: 1 정수 입력 2: 3 정수 입력 3: 7 정수 입력 4: 9 정수 입력 5: 5 Max: 9, Min: 1 [코드] #include void MaxAndMin(int* arr, int len, int** mxPtr, i..
DI 입력 LED 추가 변경 전 회로도 1. 회로도 간략화 2. 잘못된 회로 설계 분석 2-1. OFF 상태 2-1-1) 4.7kΩ이 있을 경우 2-1-2) 4.7kΩ이 없는 경우 2-2. ON 상태 ※ 결론적으로 변경 전 회로는 DI쪽에는 전류가 안 흐르므로 신경 쓰지 않아도 되고, 5V의 전압만 걸리는 상황이다. 그런데 회로를 과 같이 변경하면 LED(다이오드)가 중간에서 2V를 사용하여 DI쪽 회로에 영향을 주게 되므로 바람직한 회로 설계가 아니다. 3. 바람직한 회로 설계 4. 잘못된 회로 설계 예시 4-1. 잘못된 회로 설계 예시1 4-2. 잘못된 회로 설계 예시2 4-3. 잘못된 회로 설계 예시3 4-4. 잘못된 회로 설계 예시4 변경 후 회로도
C언어 연습문제24 [문제] 아래와 같이 main함수를 작성하고 사용자 정의 함수 SwapIntPtr를 만들어서 ptr1과 ptr2의 값을 바꿔라 int main(void) { int num1 = 10, num2 = 20; int* ptr1, * ptr2; ptr1 = &num1; ptr2 = &num2; printf("%d %d\n", *ptr1, *ptr2); SwapIntPtr(); printf("%d %d\n", *ptr1, *ptr2); return 0; } [실행결과] 10 20 20 10 [코드] #include void SwapIntPtr(int** p1, int** p2) { int* temp = *p1; *p1 = *p2; *p2 = temp; } int main(void) { int num1 = 10, ..
KEIL 컴파일러 사용환경 만들기 여기서는 Nuvoton사의 NUC029SGE 칩을 사용하여 컴파일러 사용환경을 구성하고자 한다. 1. BSP 파일 준비하기 1) Nuvoton 홈페이지(아래 링크)에서 내가 사용할 칩(NUC029SGE) 검색후 Software 클릭 https://www.nuvoton.com/products/microcontrollers/arm-cortex-m0-mcus/nuc029-series/NUC029SGE/ NUC029SGE www.nuvoton.com 2) Board Support Package 다운로드 2. KEIL 다운로드 1) KEIL 홈페이지에서 MDK-Arm을 다운로드 한다. -여기서는 Version 5.36을 사용하였다. 2) 다운로드가 완료되면 아래 그림처럼 Pack Installer가 나타나는데 이..
C언어 연습문제23 [문제] 성적관리 프로그램을 작성하자. 과목은 국어, 영어, 수학, 국사 이렇게 네 과목이고 학생은 철희, 철수, 영희, 영수 이렇게 네 사람이다. 프로그램 사용자로부터 이 네 사람의 네 과목 점수를 입력 받는다. 그리고 미리 선언해 놓은 배열에 다음의 형태로 그 값을 저장해야 한다. 저장이 끝났다면, 개인별 총점과 과목별 총점을 계산해서 다음 그림에서 보이는 배열의 위치에 저장해야 한다. 그리고 마지막에는 저장된 값의 검증을 위한 출력을 보여야 한다. 학생별 성적 입력 & 합계를 구하는 함수 WriteRecord 과목별 성적 합계를 구하는 함수 WriteSumRecord 배열에 저장된 값 출력하는 함수 ShowAllRecord [실행결과] [코드] #include int record[5][5]; // ..
C언어 연습문제22 [문제] 한 층에 2세대가 사는 4층 아파트가 있다. 각 층의 1, 2호에 사는 인원을 입력 받아 각 층의 합계를 출력하는 프로그램을 작성하라. (단, 1차원 배열만 쓰는 경우와 2차원 배열을 쓰는 경우 둘 다 각각 프로그램을 작성할 것) [실행결과] 1층 1호 인구수: 2 1층 2호 인구수: 4 2층 1호 인구수: 3 2층 2호 인구수: 5 3층 1호 인구수: 2 3층 2호 인구수: 6 4층 1호 인구수: 4 4층 2호 인구수: 3 1층 인구수: 6 2층 인구수: 8 3층 인구수: 8 4층 인구수: 7 [코드1: 1차원 배열 사용] #include int main(void) { int i; int floor = 1, cnt = 1; int arr[8]; int sum[4] = { 0 }; for (i ..
C언어 연습문제21 [문제] 길이가 6인 int형 배열 arr을 선언하고 이를 1, 2, 3, 4, 5, 6으로 초기화한 다음, 배열에 저장된 값의 순서가 6, 5, 4, 3, 2, 1이 되도록 변경하는 프로그램을 작성해보자. 단, 배열의 앞과 뒤를 가리키는 포인터 변수 두 개를 선언해서 이를 활용하여 저장된 값의 순서를 뒤바꿔야 한다. [실행결과] 6 5 4 3 2 1 [코드] #include int main(void) { int i, temp; int arr[6] = { 1, 2, 3, 4, 5, 6 }; int* fptr = &arr[0]; int* bptr = &arr[5]; for (i = 0; i < 3; i++) { temp = *fptr; *fptr = *bptr; *bptr = temp; fptr += 1;..