분류 전체보기
2013.04.26_ARM칩_LCD에 숫자입력받기_ADC초기화설정하기
unsigned short (16bit) 를 쓰는 이유는 ADC 컨버터는 8채널 10bit로 동작을 하기때문에 char 형(8bit) 으로 값을 받으면 값을 모두 받지 못한다. 아스키코드 '0' 에서 아스키코드 수만큼을 옮기는 형식을 사용함. ex) 65535 / 10000 = 6 ▶ '0' + 6 ▶ 6 의 아스키코드 값이 03000 이 나온다! Power Management Controller (PMC) = 전력관리제어 레지스터 부분 전력을 필요한 요소에 차단하고, 보낼수 있도록 제어하는 레지스터이다. ADC 역시 전력관리제어 레지스터의 영향을 받으므로, PMC 를 활성화 시켜줘야 한다.(초기설정) 현재 사용중인 ARM칩은 8채널에서 4채널은 PIO로 LCD핀과 겹치므로, ADC 전용채널 4개만 사용..
2013.04.26_정렬된 연결리스트의 삽입과삭제
▶ 10_7 예제 #include #include #include typedef struct node { char data; struct node *next; }NODE; NODE *insert( char item, NODE *list); NODE *append( NODE *list, NODE *temp); NODE *deletef( char item, NODE *list); void print_list(NODE *head); int main() { FILE *fp; NODE *temp = NULL; NODE *list = NULL; char ch; if( (fp = fopen("d10-7.txt","r")) == NULL ) { printf("파일을 열수없습니다!"); exit(-1); } // 데이타..
2013.04.25_깨알팁_폰트테이블_
2는 아스키코드로 50 이다. 50을 2진수로 나타내면 50 = 0011 0010(2) 이 나오며 니블단위(4bit)로 LLHH LLHL 가 나오므로 위에 Font Table 에서 High , Low 값을 찾아보면 2 가 도트로 찍혀있는 것이 확인된다. Font Table 오른편이 일본어인것은 확장아스키코드 부분을 나타낸것이다. 예로 앞단위가 H (ex : HLHL LLLL )이므로 값이 128을 넘어간다. 또 LLLL LLLL (CGRAM) 의 부분은 우리가 따로 작성할 수 있다.
2013.04.25_타이밍도이용딜레이최적화_문자열출력하기_
▶타이밍도이용딜레이최적화_문자열출력하기_ 타이밍도를 통해서 LCD에 출력하는 문자출력의 속도를 최적화하기 타이밍도에 쓰기명령의 세부딜레이조절(RW) 첫번째 for 문 > 15ns = tas - ter ② ~ ③ EN의 Low 유지부분 두번째 for 문 > 160ns : 제일 딜레이를 많이 줘야하는 부분 = PWeh - tdsw ④ ~ ⑤ 구간의 X 표시부분 세번째 for 문 > 60ns = tdsw ④ ~ ⑤ High 유지구간 네번째 for 문 > 35ns = tef + th ⑤ ~ ⑥ 한 주기 끝나기 전까지 ▶ ex) LCD_delay - LCD_delay1 = 3500 - 0 같은 형식으로 적어주면 #define 값만 바꿔주면 간단하게 세부딜레이를 조절가능하다. ▶ 문자열출력하는 함수 : void *..
2013.04.25_병렬감가산기
S(sign) 감산기 or 가산기를 선택, 가산기면 0을 감산기면 1을 선택해서 '1의보수' 와 결과값이 같은 'XOR'를 취해줌. 가산기에서 0 or 1 이 선택될때, C(캐리) 역시 0 or 1 이 선택되서, '2의 보수를 취할때 더하는 1' 이 C0,C1,C2,C3 에 각각 들어가서 더해준다. FA(Full-adder) 전가산기로 더함, 실질적으로 뺄셈이 아닌 2의 보수 형태에서 덧셈을 한것 컴퓨터는 캐리의 유무에 따라 "1001(9) > 2의보수 > 0111(-7)" , 9 or -7 로 본다. 1(캐리) 1001 = 9 , 0(캐리) 1001 = -7 0 0 1 1 (3) = X 0,1,2,3 - 0 1 1 1 (7) = Y 0,1,2,3 (※ C 0 은 감산기이므로 (sub = 1) ) ---..