전체 글
-
[Assembly] 특정 메모리에 값을 쓰거나 읽기Programming/Assembly 2008. 11. 21. 10:15
void Mm(int *, char); // 첫번째 인자의 메모리주소에 두번째 char형을 write char Md(int *); // 첫번째 인자의 메모리주소에 있는 char형 값을 리턴 #include void Mm(int *, char); // Memory Modify func char Md(int *); // Memory Display func int main() { char cTemp1; char cTemp2; Mm( (int *)0x0012FF00 , 'A' ); // 0x0012FF00 번지에 'A' set Mm( (int *)0x0012FF04 , 'B' ); // 0x0012FF04 번지에 'B' set cTemp1 = Md( (int *)0x0012FF00 ); // 0x0012FF00..
-
CAN통신 이란임베디드/Can통신 2008. 11. 17. 11:02
CAN의 역사 컨트롤러 영역 네트워크 (CAN : Controller Area Network)는 1985년 Bosch사에서 차량 네트워크용으로 최초로 개발되었습니다. 과거에는 자동차 제조업체들은 포인트 투 포인트 PPP(Point-to-point Protocol) 와이어링 시스템을 사용하여 차량 내 전자 기기를 연결하였습니다. 그러나 더욱 더 많은 전자 기기를 차량 내에 탑재하게 됨에 따라, 배선 장치 (wire harnesses)는 공간을 많이 차지할 뿐 아니라 무게가 많이 나가며 비용이 많이 들게 되었습니다. 그 후, 업체들은 전용 와이어링을 사용함으로써 배선 비용, 복잡성 및 무게를 경감시킬 수 있었습니다. 지능형 디바이스 네트워크 구축을 위한 높은 무결성의 시리얼 버스 시스템인 CAN은 차량용 네..
-
80x86 asm 명령어Programming/Assembly 2008. 11. 17. 09:19
80x86 명령어 AAA - ASCII Adjust after Addition기능 : ASCII 코드로 된 두 디지트를 ADD 명령어가 더한후에 이용한다AAD - ASCII Adjust before Division기능 : AL과 AH에 있는 2개의 언팩 BCD 디지트를 이진수로 변환하기 위해 DIV 명령어 앞에서 사용한다AAM - ASCII Adjust after Multiplication기능 : MUL명령어가 2개의 언팩 BCD를 곱하고 난 후 사용한다.AAS - ASCII Adjust after Subtraction기능 : 두 디지트를 빼고 난후, AL에 있는 결과를 팩 BCD로 변환하기 위해 사용한다.ADC - Add with Carry기능 : 이 명령어 앞에서 CF=1인..
-
[C언어] 함수퍼인터를 사용해서 자기스스로 환경을 비교Programming/C 언어 2008. 10. 30. 10:19
#include using namespace std; // ForWindows9x() 나 ForWindowsNT()를 가르킬수있는 포인터타입 정의 typedef void (*SYSTEM_FUNC)(); void ForWindows9x(); void ForWindowsNT(); bool IsWindows9x(); void ImportantFunc(SYSTEM_FUNC pfnSyst); int main() { // 함수포인터 변수 SYSTEM_FUNC pfn; // 시스템 버전에 따라서 알맞은 함수를 가리키게 만든다 if(IsWindows9x()) { pfn = &ForWindows9x; } else { pfn = &ForWindowsNT; } // 중요한 함수호출 함수주소를 넘겨준다 ImportantFun..
-
[C언어] 2차원 배열포인터의 타입Programming/C 언어 2008. 10. 28. 12:49
1차원 배열의 포인터 타입을 결정할때 우리는 포인터의 자료형과 포인터 연산시 증가하는 바이트 크기가 같다 는것을 알고 있다.그럼 2차원 배열은 어떨까? 1차원 배열과 같을까? 이렇게 같으면 얼마나 좋으련만.. 그렇지가 않다.포인터의 자료형은 1차원배열과 마찬가지로 포인터가 가르키는 자료형과 일치하지만 포인터 연산시 증가하는 바이트의 크기가 틀리다. 같은 int형 배열이더라도 증가하는 값은 4byte로 동일한것이아니라 그때 그때 틀리다는 것이다.예를 들어 보자.int arr[3][2] = {1,2,3,4,5,6};위와같이 3*2배열이 있다.자료형은 당연히 int형일테지만 포인터 연산시 증가하는 값은 몇byte일까?확인하는 간단한 방법은 주소값을 출력하면 되겠죠printf("arr[0] : %d\n",arr..
-
16비트 65,000컬러 마스크 매크로 함수Programming 2008. 10. 24. 11:18
#define MASK_RED0xF800 #define MASK_GREEN0x07E0 #define MASK_BLUE0x001F #define MEC_RED (x)(( (x) &MASK_RED) >> 11) #define MEC_GREEN(x)(( (x) &MASK_GREEN) >> 5) #define MEC_BLUE (x)( (x) &MASK_BLUE) Short형 컬러 Red Green Blue 5 bit 6bit 5bit ex) char Red; char Green; char Blue; short Color; // 어떤컬러 값이 들어가있다 친다. Red = MEC_RED ( Color ); Green = MEC_GREEN ( Color ); Blue = MEC_BLUE ( Color );