1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.
8051의 포트
맨처음에 설명했지만 다시 보면,
1) 포트 0 (P0.0 ~ P0.7)
8 비트 양방향 입출력 단자, 내부 풀업 저항이 없기 때문에 풀업 저항이 필요하다. 포트 0은 외부 메모리를 연결할 때는 하위 AD0 ~ AD7 로 어드레스 신호와 데이터 신호가 함께 나오는 라인이다.
출력으로 사용할 경우 8개의 LS TTL에 사용이 가능하다.
2) 포트 1 (P1.0 ~ 1.7)
8 비트 양방향 입출력 단자, 내부적으로 풀업이 되어 있어서 따로 외부에풀업 저항 없이 출력 값을 유지할 수 있다.
출력으로 사용할 경우 4개의 LS TTL에 사용이 가능.
3) 포트 2 (P2.0 ~ 2.7)
8 비트 양방향 입출력 단자, 내부적으로 풀업이 되어 있어서 따로 외부에풀업 저항 없이 출력 값을 유지할 수 있다.
포트 2는 외부 메모리나 다른 입출력 장치들을 확장할 때 상위 AD8 ~ AD 15로 어드레스 버스로 이용한다.
출력으로 사용할 경우 4개의 LS TTL에 사용이 가능
4) 포트 3 (P3.0 ~ 3.7)
8 비트 양방향 입출력 단자, 내부에 풀업 저항이 있다.
출력으로 사용할 경우 4개의 LS TTL에 사용이 가능.
포트 3는 입출력 기능외에 다른 기능을 가짐.
Pin |
Name |
Alternate Function |
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 |
RXD TXD INT0 INT1 T0 T1 WR RD |
Serial Input LIne Serial output Line External Interrupt 0 External Interrupt 1 Timer 0 external input Timer 1 external input External Data Memory Write Strobe External Data Memory Read Strobe |
포트3의 구성
예제 소스를 보며 어떻게 포트로 출력하는지 보자.
#include <reg51.h>
void delay(unsigned int i);
void main(void) {
unsigned int i;
for(i=0; i<5; i++) {
P1 = 0xAA;
delay(20000);
P1 = 0x55;
delay(20000);
}
while(1) {
P1 = 0x01;
for(i=0; i<7; i++) {
P1 <<= 1;
delay(5000);
}
for(i=0; i<7; i++) {
P1 >>=1;
delay(5000);
}
}
}
void delay(unsigned int i) {
while(i--);
}
내용은 간단하다. main()의 for() 문을 보면 P1에 각각 0xAA와 0x55 값을 넣어 주는데, AA(16) = 170(10) = 10101010(2) 이며, 55(16) = 85(10) = 01010101(2) 이 된다. 8051보드에 있는 LED를 보면 변환된 이진수 값과 같이 LED가 깜박거리는 것을 5번 반복하게 된다.
다음에 while()문에서 반복을 하는데, LED에 차례로 1값을 쉬프트하게 된다. 프로그램이 동작하는 동안 LED가 왔다 갔다 하게 된다.
※ 참고
Pull Up 저항 (풀업저항)
간단하게 요약하면,
디지털 회로에서 pull up저항이 필요한 이유에 대해 알아봅시다.
우선 두개의 IC사이에 Interface 전압이 다른 경우입니다. 한쪽은 3.3V를 사용하는데
다른쪽은 5V를 사용하는 경우또는 그 반대의 경우 가장 많이 사용하는 방법이
출력을 Open Collector 또는 Open Drain 에 필요한 전압을 걸어 전압을 맞출때 사용합니다.