20130430
__________논리회로____________________________________________________________
멀티플렉서(multiplexer or selector) |
1. 멀티플렉서(multiplexer or selector)는 여러 개의 입력선들 중에서 하나를 선택하여 출력선에 연결하는 조합 논리회로이다. 선택선들의 값에 따라서 특별한 입력선이 선택된다.
2. 멀티플렉서는 많은 입력들 중 하나를 선택하여 선택된 입력선의 2진 정보를 출력선에 넘겨주기 때문에 데이터 선택기(data selector)라 부르기도 한다.
3. 디멀티플렉서는 정보를 한 선으로 받아서 2n 개의 가능한 출력 선들 중 하나를 선택하여, 받은 정보를 전송하는 회로다. 디멀티플렉서는 n 개의 선택선(selection line)의 값에 의해 하나의 출력선이 선택된다.
|
※ 멀티플렉서는 C언어로도 짤수있음. ※ 입력이 0 이면 GND를 걸어주어야하는 특성이 있음, 그렇지 않으면 오작동 할 수있음. ※ 입력값과 상관없이 스트로브가 H이면 L 출력됨.
|
|
______________________________________________________________________________
__________C 수업____________________________________________________________
정렬된 연결리스트의 삭제 |
#include <stdio.h>
{ FILE *fp;
if((fp = fopen ("d10-7.dat", "r")) == NULL) } fscanf(fp, "%c", &ch);
while(!feof(fp))
print_list(list);
list = insert('c', list); // 기존 리스트의 제일 앞에 삽입
print_list(list); printf("\n");
print_list(list); return 0;
NODE *append (NODE *list, NODE *temp) if(list == NULL)
return (list); }
} }
current = follow = list; if((newnode = (NODE *) malloc(sizeof(NODE))) == NULL) return NULL; newnode->data = item; newnode->next = current; if(current == list) // 제일 앞의 위치일 경우 current가 변하지않고 있게됨. }
NODE *delete(char item, NODE *list) // 정렬된 연결리스트의 삭제 while((current != NULL) && ( current->data != item)) // 지울 위치를 찾음 , 널인지 아닌지? && item과 data가 같은지?? if(current == NULL)
return list;
|
11.1 입출력 스트림과 저장형식 |
※ C언어는 자체에서 입출력의 기능은 제공하지 않고 라이브러리 함수를 이용하여 데이터의 입출력을 처리함. ※ C언어에서는 여러가지 입출력 장치를 논리적인 파일로 본다. ※ C언어의 입출력 시스템에서는 파일과 프로그램사이의 데이터의 교환은 스트림을 통해서 이루어짐. ※ 스트림이란 파일과 프로그램 사이에 교환되는 연속적인 바이트의 흐름을 말함.
|
______________________________________________________________________________
__________ARM____________________________________________________________
ADC.h (추가된 내용만....) |
#define SWRST 0 // Software Reset #define CH0 0 // ADC 채널 define #define Light CH4 // 빛센서를 채널4로 define #define LOWRES 4 //Resolution(분해능) 0 : 10bit, 1 : 8bit
#define DRDY 16 // ADC_SR : 컨버젼되면 H로 값이 변하는 레지스터
unsigned int ADC_Run(); // 컨버젼을 시작하고 그 값을 정수로 반환하는 함수의 원형선언 |
ADC.c |
#include "ADC.h"
ADC_CR = SWRST; //ADC Control Register 리셋 ADC_CHER = (1<<Light); // 4번 채널 활성 ADC_MR = (5<<PRESCAL) | (0<<LOWRES); //5를 prescal 자리에 넣음, Resolution : 10bit, Convesion time : 4Mhz
return;
while(0 == (ADC_SR & (1<<DRDY))); //16 자리 bit MASK , 컨버젼타임을 벌어줌.
return (ADC_LCDR & 0x3FF); // LCDR 의 값을 10비트만 반환 |
LCD.c |
void LCD_Number(unsigned short usNum) //65535 까지 가능 ucSting[0] = '0'+(usNum / 10000); // 넘겨받은 usNum값을 단위별로 나누어 각 배열자리에 대입 ucSting[1] = '0'+((usNum % 10000) / 1000); ucSting[2] = '0'+((usNum % 1000) / 100); ucSting[3] = '0'+((usNum % 100) / 10); ucSting[4] = '0'+(usNum % 10); ucSting[5] = '\0'; } |
main.c |
#include "project.h"
int main() LCD_Number(uiNum); // 컨버젼된 값을 LCD에 출력 for(vuiCnt = 0; vuiCnt <150000; ++vuiCnt); // 너무 빨리 값이 변하는걸 막기위한 지연 } |
※ 센서의 한쪽 다리에 3.3V(또는 5V)를 넣으면 밝을수록 높은 값나옴 센서의 한쪽 다리에 GND를 연결하면 어두울 수록 높은 값 나옴. |
______________________________________________________________________________
______논리회로 && 실습파일____________________
______________________________________________