9. C51 언어 확장 - 이상정

Download Report

Transcript 9. C51 언어 확장 - 이상정

C51 언어 확장
순천향대학교 정보기술공학부
이상정
마이크로프로세서
메모리 영역
 8051의 메모리 영역 지정
• code: 64KB 프로그램 메모리 영역
• data: 내부 메모리 하위 128 바이트 영역으로 직접지정
• idata: 내부 메모리 256 바이트 영역으로 간접지정
• bdata: 내부 데이터 메모리비트 단위 지정영역
(20H-2FH, SFR 8의 배수)
• xdata: 외부 데이터 메모리
• pdata: 1 페이지(256 바이트) 외부 데이터 메모리 영역,
8 비트 지정가능
순천향대학교 정보기술공학부
이상정
2
C51 언어 확장
마이크로프로세서
메모리 모델
 함수의 인수,변수 등의 사용 메모리 형 지정
• SMALL
모든 변수들이 data 형인 내부 데이터 메모리 128
바이트에 위치
• COMPACT
모든 변수들이 pdata 형인 1페이지의 외부 데이터
메모리에 위치
• LARGE
xdata 형인 외부 데이터 메모리 64KB에 위치
순천향대학교 정보기술공학부
이상정
3
C51 언어 확장
마이크로프로세서
메모리 형 사용 예
예
• char code text[]=“STRING”;
•
•
•
•
char data var1;
float idata x,y,z;
char bdata flag;
unsigned int xdata array[100];
순천향대학교 정보기술공학부
이상정
4
C51 언어 확장
마이크로프로세서
정수 자료형
 int 형은 2바이트
• long 4 바이트, short는 2바이트
 unsigned char 가 주로 사용
 int 형1234H 저장 시 Big Endian 식 저장
• 낮은 번지12H 저장
• 높은 번지 34H 저장
순천향대학교 정보기술공학부
이상정
5
C51 언어 확장
1. Block Move 프로그램 1
마이크로프로세서
순천향대학교 정보기술공학부
이상정
7
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
8
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
9
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
10
C51 언어 확장
마이크로프로세서
자료형의 추가
 표준 ANSI 에 8051에 적용되는 특수 자료형
추가
• bit, sbit sfr, sfr16
 비트 자료형
• bdata 영역의 변수 선언시 사용
• bit형, sbit 형
• bit형은 비트단위 변수 지정
• sbit형은 바이트나 비트 단위 액세스 변수로 ^ 기호
로 특정 비트 표시
순천향대학교 정보기술공학부
이상정
11
C51 언어 확장
마이크로프로세서
비트 자료형 예
예
static bit time_flag = 0;
int bdata var1;
char bdata vector[5];
sbit mybit0 = var1 ^ 0;
sbit mybit15 = var1 ^ 15;
sbit vector15 = vector[1] ^ 7;
/* bit 0 of var1 */
/* bit 15 of var1 */
/* bit 7 of vector[1] */
vector[0] = ‘a’;
/* byte addressing */
var1 = -10;
/* word addressing */
mybit15 = 0;/* clear bit 15 of var1 */
vector15 = 1;
/* set bit 7 of vector[1] */
순천향대학교 정보기술공학부
이상정
12
C51 언어 확장
마이크로프로세서
SFR의 액세스
 SFR을 액세스하기 위해 sfr, sfr16, sbit 데이
터형을 사용
• sfr16은 타이머 2와 같이 16비트 길이의 SFR 선언
시 사용
예
sfr PSW = 0xD0;
sbit CY = PSW ^ 7;
sbit OV = 0xD0 ^ 2;
sfr P0 = 0x80;
sfr16 RACP2 = 0xCA;
sbit EA = 0xAF;
순천향대학교 정보기술공학부
이상정
/*
/*
/*
/*
/*
/*
PSW, address D0H */
carry flag */
overflow flag */
port 0, address 80H */
Timer 2 Capture CAH, CBH */
bit 7 of IE */
13
C51 언어 확장
마이크로프로세서
절대번지 변수
 특정 절대번지에 변수를 위치시키려면 다음 형
식으로 선언
메모리형 자료형 변수이름 _at_ 주소
예
idata int var1 _at_ 0x50;
xdata int start _at_ 0x9000;
xdata char text[256] _at_ 0xB000;
순천향대학교 정보기술공학부
이상정
14
C51 언어 확장
2. Block Move 프로그램 2
마이크로프로세서
순천향대학교 정보기술공학부
이상정
16
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
17
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
18
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
19
C51 언어 확장
마이크로프로세서
포인터 사용
 일반 포인터(generic pointer)와 메모리 지정 포
인터(memory-specific pointer)로 구분
 일반 포인터
• 일반 C에서 사용되는 포인터로 3바이트로 표현
=> 첫번째 바이트는 메모리형 구분, 나머지 2바이트는
주소
• 메모리 어느 영역의 변수를 액세스할 수 있으나 처리속
도 느림
• 예
char *sptr;
• 일반 포인터가 저장될 메모리 영역을 지정할 수 있다
char * xdata sptr;
순천향대학교 정보기술공학부
이상정
20
C51 언어 확장
마이크로프로세서
포인터 사용
 메모리 지정 포인터
• 메모리형과 함께 지정하여 항상 지정된 메모리 영역
참조
• idata, data,bdata, pdata 포인터는 1바이트로 표현
• code, xdata 포인터는 2바이트로 표현
• 예
char code *sptr;
int idata *numptr;
• 포인터가 저장될 영역 지정 예
char code * xdata sptr;
int idata * data numptr;
순천향대학교 정보기술공학부
이상정
21
C51 언어 확장
3. Block Move 프로그램 3
마이크로프로세서
순천향대학교 정보기술공학부
이상정
23
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
24
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
25
C51 언어 확장
마이크로프로세서
순천향대학교 정보기술공학부
이상정
26
C51 언어 확장
마이크로프로세서
과제
 프로그램 1-3을 작성하여 시뮬레이터 상에서
실행하라.
 프로그램 3을 수정하여 소문자를 대문자로 변
환(32를 감소)하여 외부 메모리에 저장하는 프
로그램을 작성하라.
순천향대학교 정보기술공학부
이상정
27
C51 언어 확장