선형시스템

Download Report

Transcript 선형시스템

PIC16C84의 외형
I/O PIN
RESET
전
원
I/O PIN
RA2
RA3
RTCC
/MCLR
VSS
1
PIC16C84
RA1
RA0
OSC1
OSC2
VPP
RB0
RB1
RB2
RB7
RB6
RB5
RB3
RB4
I/O PIN
발
진
전
원
I/O PIN
참고 - 오실레이터 발진방법 분류
•
RC : RC오실레이터 ( 4Mhz 까지 )
타이밍이 중요하지 않은 저가의 제품
•
XT : 표준 크리스탈 ( 4Mhz 까지 )
•
HS : 고속 크리스탈 ( 20Mhz 까지 )
•
LP : 저전력, 저주파 크리스탈 ( 32Mhz 까지 )
저소비전력이 필요한 제품
PIC16C84의 내부
CPU – 중앙처리장치
ROM – 14bit 단위 구성 1024word로 구성
RAM - 8bit 단위 구성 36 byte크기
I/O – 입 출력 지정이 자유로운 PORT
RTCC – 실시간 카운터 (시간을 카운터하는 목적)
PIC16C84의 블록 구성도
I/O
PAGE0
54/55
PAGE1
ROM
CPU
56
RAM
PAGE2
57
Counter
PAGE3
프로그램 메모리 맵
1장 메모리 구조
1. PIC16C84의 메모리
ROM
RAM
14bit 단위 구성
8bit 단위 구성
1024 word 의 크기
36byte 의 크기
EEPROM으로 구성
SRAM 으로 구성
프로그램 저장용도
데이터 저장용도
프로그램 메모리 ( ROM )
000H
002H
003H
004H
005H
3FFH
리셋 벡터
인터럽트 벡터
레지스터 파일 ( RAM )
뱅크0
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
2FH
INDIR
RTCC
PC
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
GENERAL
PURPOSE
REGISTER
뱅크1
OPTION
TRISA
TRISB
2장 레지스터
•
STATUS 레지스터
•
I/O 레지스터
•
워킹 레지스터
•
RTCC 레지스터와 프리스케일러와 OPTION 레지스터
•
WDT 타이머 ( 와치독 타이머 )
1. STATUS 레지스터
STATUS 레지스터의 구조
7
6
5
4
3
2
1
0
RP
플래그
TO
플래그
PD
플래그
ZERO
플래그
DC
플래그
CARRY
플래그
1-1 CARRY 플래그
•
연산명령 수행 후, 연산 결과가 자리 넘침이나 자리 빌림이 발생하였을 때
그 상태를 표시.
덧셈 명령 실행 시…
8비트 수의 한계인 255를 넘지 않았을 때에는 캐리 플래그는 0이 되고 255
를 넘었을 때에는 캐리 플래그는 1이 된다.
뺄셈 명령 실행 시…
뺄셈 연산 중 자리 빌림이 발생하지 않는다면 캐리 플래그는 1 자리 빌림이
발생한다면 캐리 플래그는 0이 된다.
A < B 일 때 캐리 플래그는 0이 된다.
A = B 일 때 캐리 플래그는 1이 된다.
A > B 일 때 캐리 플래그는 1이 된다.
비교시의 캐리 플래그
1-2 DC 플래그 ( DIGIT CARRY BIT )
• ADDWF, SUBWF 명령 실행시 하위 4비트에서
의 자리올림이나 내림 발생시 세트 또는 리셋된
다.
• 주로 BCD 연산 등에서 사용하며 모든 동작은
캐리플래그와 같다.
1-3 ZERO 플래그
•
STATUS 레지스터의 여러 플래그 중 가장 자주 쓰인다.
용어가 의미하듯이 명령 수행의 결과가 0이 되었을 때 1
로 세트되는 플래그이다. 두 수의 결과가 0인지 판단할
때도 쓰이지만 일치하는지 여부에도 자주 사용한다.
20 - 10 = 10 < 결과가 0이 아니므로 ZERO 플래그는 0
20 – 2- = 0 < 결과가 0이므로 ZERO 플래그는 1
1-4 PD 플래그 ( POWER DOWN BIT )
• 최초의 전원 공급 또는 CLRWDT 명령으로 1
로 세트되고 SLEEP 명령으로 0으로 리셋된다.
1-5 TO 플래그 ( TIME OUT BIT )
• 최초 전원공급시나 CLRWDT 명령 실행시,
SLEEP 명령 실행시 1로 세트되고 와치독 타이
머가 타임아웃될 때 0으로 리셋된다.
참고 - PD와 TO에 대하여…
리셋의 원인
TO
PD
0
0
SLEEP 상태에서 WDT에 의해 리셋됨
0
1
NORMAL상태에서 WDT에 의해 리셋됨
1
0
SLEEP상태에서 MCLR단자에 의해 리셋됨
1
1
최초의 전원투입에 의해 리셋됨
1-6 RP 플래그 (레지스터 페이지 선택 플래그)
•
앞의 레지스터 파일은 뱅크0과 뱅크1, 두 가지가 있는
데 이중 하나의 뱅크를 선택할 때에 사용한다.
참고 - RP 플래그에 대하여…
설
명
프로그램 페이지 0번을 선택한다.
프로그램 페이지 1번을 선택한다.
BIT 5
0
1
페이지가 2개 일 때
BIT 6
0
0
1
1
BIT 5
0
1
0
1
설
명
프로그램 페이지 0번을 선택한다.
프로그램 페이지 1번을 선택한다.
프로그램 페이지 2번을 선택한다.
프로그램 페이지 3번을 선택한다.
페이지가 4개 일 때
2. I/O 레지스터
• PORTA 레지스터 4개 RA0 ~ RA3
• PORTB 레지스터 8개 RB0 ~ RB7
• TRIS 레지스터 – TRIS 레지스터의 비트를 1로
하면 입력으로 설정되고 0으로 하면 출력으로
설정된다.
3. 워킹 레지스터
• CPU에서 어큐뮬레이터라고 불리는 레지스터
로 PIC에서는 워킹레지스터 또는 W레지스터
라고도 불리고 있고, 모든 산술, 논리 연산 명령
의 중심이 된다.
4. RTCC 레지스터와 프리스케일러와
OPTION 레지스터
• RTCC 레지스터
• 프리스케일러
• OPTION 레지스터 사용법
4-1 RTCC 레지스터
•
RTCC레지스터는 읽고 쓸 수 있으며 읽을 때는 현재 카운트되고
있는 값이 읽히고, 쓸 때는 써넣는 값으로 세팅이되어 그 값부터 카
운트를 시작하게 된다.
•
내부 RTCC로 동작시
타이머 역할을 한다. 값이 0FFH에 도달하면 다시 0부터 증가한다.
주로 카운트하는 목적으로 사용이 된다. 프리스케일러로 256:1까지
분주할 수 있다.
•
외부 RTCC로 동작시
카운터 역할을 한다. RTCC핀에 입력되는 펄스의 개수를 센다. 상승
또는 하강에서 카운트를 할지는 OPTION명령에서 결정한다.
4-2 프리스케일러란?
•
PRE와 SCALER의 합성어로 전치분주기이다. 카운터 앞에서 신
호를 나누어 주는 역할을 한다.
2:1분주
프리스케일러
RTCC 카운터
4:1분주
프리스케일러
RTCC 카운터
4-3 OPTION 레지스터의 사용법
5
4
3
2
1
0
RTS
RTE
PSA
PS2
PS1
PS0
프리스케일러의 값
0 0 0
프리스케일러 지정 비트
0
0
1
0 … RTCC
0
1
0
1 … WDT
0
1
1
1
0
0
RTCC 카운트 시기
1
0
1
0 … RTCC핀의 신호가 LOW에서
1
1
0
HIGH로 전환될 때 증가
1 … RTCC핀의 신호가 HIGH에서
1 1 1
LOW로 전환될때 증가
RTCC 신호원
0 … 내부의 명령 수행 클럭
1 … RTCC핀
RTCC분주
1 : 2
1
1
1
1
1
1
1
:
:
:
:
:
:
:
4
8
16
32
64
128
256
WDT 분주비
1 : 1
1
1
1
1
1
1
1
:
:
:
:
:
:
:
2
4
8
16
32
64
128
5. WDT 타이머 ( 와치독 타이머 )
• 0으로부터 증가하여 0FFH를 넘게 되면 칩을
리셋시킨다.
PIC의 명령어
• PIC16C84는 35개의 명령어를 가지고 있다.
ADDLW
K
• Add Literal to k
•
W레지스터의 값과 상수 k의 값을 더한 뒤 그 결과를 w
레지스터에 저장한다.
• ADDLW 10H , W = 15
실행후의 W = 25H 결과가 0이 아니므로 Z플래그는
0이 되고, 결과가 255 미만이므로 C플래그는 0이 된다.
ADDWF f,d
•
Add W to F
•
W레지스터의 값과 f레지스터의 값을 더한 뒤 그 결과
를 d로 보낸다. ( d가 W이면 W레지스터에 저장하고 F
이면 f레지스터에 저장한다. )
• ADDWF BF1,F , W = 10H BF1 = 15H
실행후의 W = 10H BF1 = 25H
• ADDWF BF1,W
ANDLW
k
• AND Literal and W
•
W레지스터의 값과 상수 k를 AND 연산한 뒤 그 결과를
W레지스터에 저장한다.
• ANDLW 0FH , W = 0AAH
실행후의 W = 0AH
ANDWF
f,d
• AND W with f
•
W레지스터의 값과 f 레지스터의 값을 AND연산한 뒤
그 결과를 d로 보낸다. ( d가 W이면 W레지스터에 저장
하고 F이면 f레지스터에 저장한다. )
• ANDWF BF1,F , W = 0AAH BF1 = 0FH
실행후의 W = 0AAH BF1 = 0AH
• ANDWF BF1,W
BCF
f,b
•
Bit Clear f
•
f레지스터의 비트 b를 0으로 만든다.
•
BCF BF1,7 , BF1 = 0FFH
실행후의 BF1 = 07FH
BSF
f,b
•
Bit Set f
•
f레지스터의 비트 b를 1로 만든다.
•
BSF BF1,7 , BF1 = 00H
실행후 BF1 = 080H
BTFSC
f,b
•
Bit Test, Skip if Clear
•
f레지스터의 비트 b가 0이면, 다음 명령을 스킵한다.
•
BTFSC BF1,7
1번 – 7번 bit가 1일 때 실행
2번 - 7번 bit가 0일 때 실행
BTFSS
•
f,b
Bit Test, Skip if Set
• f레지스터의 비트 b가 1이면, 다음 명령을 스킵한다.
•
BTFSS BF1,7
1번 – 7번 bit가 0일 때 실행
2번 - 7번 bit가 1일 때 실행
CLRF
f
•
Clear f
•
f레지스터를 0으로 만들고 ZERO플래그를 1로 만든다.
•
CLRF
BF1
CLRW
•
Clear W Register
•
W레지스터를 0으로 만들고 ZERO플래그를 1로 만든
다.
•
CLRW
CLRWDT
•
Clear Watchdog Timer
•
워치 독 타이머를 리셋시키고 워치 독 프리 스케일러도
리셋시킨다. STATUS 레지스터의 TO, PD비트는 1로 만
든다.
•
CLRWDT
COMP
f,d
•
Complement f
•
f레지스터의 내용을 반전시켜 그 결과를 d로 보낸다.
( d가 W이면 W레지스터에 저장하고 F이면 f레지스터
에 저장한다. )
•
COMP BF1,F , BF1 = 0AAH
실행후 BF1 = 55H
COMP BF1,W
•
DECF
f,d
•
Decrement f
•
f레지스터의 내용을 하나 감소시켜 그 결과를 d로 보낸
다. ( d가 W이면 W레지스터에 저장하고 F이면 f레지스
터에 저장한다. )
•
DECF BF1,f , BF1 = 11H
실행 후 BF1 = 10H
DECF BF1,W
•
DECFSZ
f,d
•
Dec. f Skip if Zero
•
f레지스터의 내용을 하나 감소시켜 그 결과를 d로 보낸
다. ( d가 W이면 W레지스터에 저장하고 F이면 f레지스
터에 저장한다. ) 그리고 감소시킨 결과가 0이면 다음 명
령을 스킵한다.
•
DECFSZ BF1,F (W)
1번 – 결과가 0이 아닐 때 실행
2번 - 결과가 0일 때 실행
GOTO
•
번지 k로 무조건 분기한다.
k
INCF
f,d
•
Increment f
•
f레지스터의 내용을 하나 증가시켜 그 결과를 d로 보낸
다. ( d가 W이면 W레지스터에 저장하고 F이면 f레지스
터에 저장한다. )
•
INCF BF1,F , BF1 = 11H
실행 후 BF1 = 12H
INCE BF1,W
•
INCFSZ
f,d
•
Inc. f Skip if Zero
•
f레지스터의 내용을 하나 증가시켜 그 결과를 d르 보낸
다. ( d가 W이면 W레지스터에 저장하고 F이면 f레지스
터에 저장한다. ) 그리고 결과가 0이면 다음 명령을 스킵
한다.
• INCFSZ BF1,F (W)
1번 – 결과가 0이 아닐 때 실행
2번 - 결과가 0일 때 실행
IORLW
k
•
OR Literal with W
•
W레지스터의 값과 상수 k를 OR연산한 뒤 그 결과를
W레지스터에 저장한다.
•
IORLW 0FH , W = 0AAH
실행 후 W = 0AFH
IORWF
f,d
•
OR W with f
•
W레지스터의 값과 f레지스터의 값을 OR연산한 뒤 그
결과를 d로 보낸다. ( d가 W이면 W레지스터에 저장하
고 F이면 f레지스터에 저장한다. )
•
IORWF BF1,F , W = 0AAH BF1 = 0FH
실행 후 W= 0AAH BF1 = 0AFH
IORWF BF1,W
•
MOVLW
•
Move Literal to W
•
상수 k를 W레지스터에 저장한다.
•
MOVLW
012H
k
MOVF
f,d
•
Move f
•
f레지스터의 값을 d로 보낸다. ( d가 W이면 W레지스터
에 저장하고 F이면 f레지스터에 저장한다. )
•
MOVF BF1,W , BF1 = 0FH
실행 후 W = 0FH BF1 = 0FH
MOVF BF1,F
•
MOVWF
f
•
Move W to f
•
W레지스터의 값을 f레지스터에 저장한다.
•
MOVWF
BF1
NOP
•
No Operation
•
아무 처리도 수행하지 않고 1사이클만 소비한다. 주로
시간지연 목적에 쓰인다.
RLF
f,d
•
Rsotate Left f with Carry
•
Carry플래그와 함께 f레지스터의 값을 왼쪽으로 회전
시키고 그 결과를 d로 보낸다. ( d가 W이면 W레지스터
에 저장하고 F이면 f레지스터에 저장한다. )
•
RLF
BF1
C
RRF
f,d
•
Rotate Right f with Carry
•
Carry플래그와 함께 f레지스터의 값을 오른쪽으로 회
전시키고 그 결과를 d로 보낸다. ( d가 W이면 W레지스
터에 저장하고 F이면 f레지스터에 저장한다. )
•
RRF
BF1
C
SLEEP
•
Go Sleep Mode
•
슬립 모드로 진입한다.
•
프로세서는 슬립 모드로 진입하고, 오실레이터 발진은
중단된다.
SUBLW
k
•
Sub Literal from W
•
상수 k에서 W레지스터의 값을 뺀 후 그 결과를 W레지
스터에 저장한다.
•
SUBLW 02H , W = 1H
실행 후 W = 1H 자리 빌림이 발생하지 않았으므로
CARRY플래그는 1이 된다.
SUBWF
f,d
•
Sub W to f
•
f레지스터의 값에서 W레지스터의 값을 뺀 뒤 그 결과
를 d로 보낸다.
•
SUBWF BF1,F , W = 1H BF1 = 01H
실행 후 W = 1H BF1 = 0FFH C = 0
자리 빌림이 발생 하였으므로 CARRY플래그는 0이 된
다.
XORLW
k
•
Ex.OR Literal with W
•
W레지스터의 값과 상수 k를 XOR 연산한 뒤 그 결과를
W레지스터에 저장한다.
•
XORLW 0FH , W = 0AAH
실행 후 W = 0A5H
XORWF
f,d
•
Ex.OR W with f
•
W레지스터의 값과 f레지스터의 값을 XOR 연산한 뒤
그 결과를 d로 보낸다. ( d가 W이면 W레지스터에 저장
하고 F이면 f레지스터에 저장한다. )
•
XORWF BF1,F , W = 0AAH BF1 = 0FH
실행 후 W = AAH BF1 = 0A5H
• XORWF BF1,W
CALL
k
•
Subroutine Call
•
서브 루틴을 콜하는 명령이다. 면저 복귀할 어드레스를
스택에 저장하고 지정한 번지 k로 분기한다.
RETFIE
•
Return from Interrupt
•
인터럽트 처리 루틴에서 리턴한다. 인터럽트 루틴으로
부터 메인 루틴으로의 리턴에 사용하는 명령으로 리턴
과 동시에 GIE비트를 1로 만들어 준다.
RETLW
•
Return Literal to W
•
상수 k를 W레지스터에 저장하고 리턴한다.
•
RETLW 012H
이 명령은 리턴과 동시에 어떤 인수등을 전달할 때 유용
하게 사용된다.
RETURN
•
Return from Subroutine
•
단순 리턴 명령이다.
SWAPF
f,d
•
Swap f
•
f레지스터의 상위 니블과 하위 니블을 서로 맞바꾼 후
그 결과를 d로 보낸다.
•
SUBWF
BF1,F
PIC 실습
3주차 – LED 제어 및 제트카 점멸 제어
2002년 1월 17일
LED 제어 부문
1.
•
LED 제어
회로도, 회로분석, ASM 분석
2.
•
문제 1
회로도, 회로분석, ASM 분석
3.
•
문제 2
회로도, 회로분석, ASM 분석
4.
•
문제 3
회로도, 회로분석, ASM 분석
1. LED 제어
1-1 회로도
1-2 회로분석
1-3 ASM 분석
1-1 회 로 도
VCC
17
RA0
VDD
2
RB0/INT
6
330
OSC2/CLKOUT
15
LED
1
SW
OSC1/CLK
PIC16C84
16
2
GND
22P
5
1
4
1K
MCLR
U7
14
VCC
4M
22P
1-2 회 로 분 석
•
입력 PORT는 PIC의 경우 high로 설정이 되기 때문에 low로 만들
어 주어야 입력을 받게 된다. SW 를 OFF시 입력 PORT에는 high
가 걸려 있고 SW를 ON할 경우 입력 PORT가 접지와 연결이 되어
low가 되어 입력을 받게 된다.
• 출력 PORT는 low로 설정이 되어 있기 때문에 high를 걸어 주어야
LED가 빛을 발하게 된다.
• 4번 핀은 low일 때 칩을 reset하므로 high를 걸어 주어야 한다.
Sw상태
입력
출력
on
low
high
off
high
low
1-3 ASM 분석
자료 1번 참조
2. 문제 1번
2-1 회로도
2-2 회로분석
2-3 ASM 분석
2-1 회 로 도
VCC
17
RA0
4
VDD
2
RB0/INT
6
330
OSC2/CLKOUT
15
LED
1
SW
OSC1/CLK
PIC16C84
16
2
GND
22P
5
1
MCLR
U7
1K
14
VCC
4M
22P
2-2 회 로 분 석
•
입력 PORT는 PIC의 경우 high로 설정이 되기 때문에 low로 만들
어 주어야 입력을 받게 된다. SW 를 OFF시 입력 PORT에는 high
가 걸려 있고 SW를 ON할 경우 입력 PORT가 접지와 연결이 되어
low가 되어 입력을 받게 된다.
• 출력 PORT는 low로 설정이 되어 있기 때문에 high를 걸어 주어야
LED가 빛을 발하게 된다.
• 4번 핀은 low일 때 칩을 reset하므로 high를 걸어 주어야 한다.
Sw상태
입력
출력
on
low
low
off
high
high
2-3 ASM 분석
자료 2번 참조
3. 문제 2번
3-1 회로도
3-2 회로분석
3-3 ASM 분석
3-1 회 로 도
VCC
17
RA0
4
VDD
2
PORTB
PORTB
SW
PORTB
1
PORTB
15
OSC2/CLKOUT
PORTB
22P
PORTB
4M
PIC16C84
5
22P
OSC1/CLK
GND
16
2
1
MCLR
U7
1K
14
VCC
PORTB
PORTB
0
1
330
LED
2
330
LED
3
330
LED
4
330
LED
5
330
LED
6
330
LED
7
330
LED
330
LED
3-2 회 로 분 석
•
입력 PORT는 PIC의 경우 high로 설정이 되기 때문에 low로 만들
어 주어야 입력을 받게 된다. SW 를 OFF시 입력 PORT에는 high
가 걸려 있고 SW를 ON할 경우 입력 PORT가 접지와 연결이 되어
low가 되어 입력을 받게 된다.
• 출력 PORT는 low로 설정이 되어 있기 때문에 high를 걸어 주어야
LED가 빛을 발하게 된다.
• 4번 핀은 low일 때 칩을 reset하므로 high를 걸어 주어야 한다.
Sw상태
입력
출력 ( PORTB 0~7 )
on
low
high
off
high
low
3-3 ASM 분석
자료 3번 참조
4. 문제 3번
4-1 회로도
4-2 회로분석
4-3 ASM 분석
4-1 회 로 도
2
17
RA0
4
U7
VDD
1
1K
MCLR
1K
VCC
14
VCC
PORTB
6
2
18
RA1 OSC2/CLKOUT
15
LED
22P
OSC1/CLK
PIC16C84
16
2
GND
SW2
5
1
330
1
SW1
4M
22P
4-2 회 로 분 석
•
입력 PORT는 PIC의 경우 high로 설정이 되기 때문에 low로 만들
어 주어야 입력을 받게 된다. SW 를 OFF시 입력 PORT에는 high
가 걸려 있고 SW를 ON할 경우 입력 PORT가 접지와 연결이 되어
low가 되어 입력을 받게 된다.
• 출력 PORT는 low로 설정이 되어 있기 때문에 high를 걸어 주어야
LED가 빛을 발하게 된다.
• 4번 핀은 low일 때 칩을 reset하므로 high를 걸어 주어야 한다.
Sw 1
on
on
off
off
Sw 2
on
off
on
off
입력 1
입력 2
출력
low
low
high
high
low
high
low
high
high
low
low
low
4-3 ASM 분석
자료 4번 참조
제트카 점멸 제어 부문
1.
•
제트카 점멸 제어
회로도, 회로분석, ASM 분석
2.
•
문제 1
회로도, 회로분석, ASM 분석
3.
•
문제 2
회로도, 회로분석, ASM 분석
4.
•
문제 3
회로도, 회로분석, ASM 분석
1. 제트카 점멸 제어
1-1 회로도
1-2 회로분석
1-3 ASM 분석
1-1 회 로 도
4
VDD
MCLR
U7
14
VCC
PORTB
PORTB
PORTB
1
PORTB
15
OSC2/CLKOUT
PORTB
22P
PORTB
GND
22P
OSC1/CLK
4M
PIC16C84
5
2
16
PORTB
PORTB
6
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
7
8
9
10
11
12
13
1-2 회 로 분 석
•
내부적으로 시간에 따라 LED가 순차적으로 켜지
고 꺼짐
1-3 ASM 분석
자료 5번 참조
2. 문제 1번
2-1 회로도
2-2 회로분석
2-3 ASM 분석
2-1 회 로 도
4
VDD
MCLR
U7
14
VCC
PORTB
PORTB
PORTB
1
PORTB
15
OSC2/CLKOUT
PORTB
22P
PORTB
GND
22P
OSC1/CLK
4M
PIC16C84
5
2
16
PORTB
PORTB
6
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
7
8
9
10
11
12
13
2-2 회 로 분 석
•
내부적으로 시간에 따라 LED가 순차적으로 켜지
고 꺼짐
2-3 ASM 분석
자료 6번 참조
3. 문제 2번
3-1 회로도
3-2 회로분석
3-3 ASM 분석
3-1 회 로 도
4
VDD
MCLR
U7
14
VCC
PORTB
PORTB
PORTB
1
PORTB
15
OSC2/CLKOUT
PORTB
22P
PORTB
GND
22P
OSC1/CLK
4M
PIC16C84
5
2
16
PORTB
PORTB
6
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
7
8
9
10
11
12
13
3-2 회 로 분 석
•
내부적으로 시간에 따라 LED가 순차적으로 켜지
고 꺼짐
3-3 ASM 분석
자료 7번 참조
4. 문제 3번
4-1 회로도
4-2 회로분석
4-3 ASM 분석
4-1 회 로 도
4
VDD
MCLR
U7
14
VCC
PORTB
PORTB
PORTB
1
PORTB
15
OSC2/CLKOUT
PORTB
22P
PORTB
GND
22P
OSC1/CLK
4M
PIC16C84
5
2
16
PORTB
PORTB
6
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
330
LED
7
8
9
10
11
12
13
4-2 회 로 분 석
•
내부적으로 시간에 따라 LED가 순차적으로 켜지
고 꺼짐
4-3 ASM 분석
자료 8번 참조
E N D
Pic test borad
• con1과 con1-1은 led제어시
• con1과 con1-2은 fnd제어시
• pic16c84용 test borad
• 5v용 전원
VCC
VCC
VCC
330
1K
1K
1K
1K
J2
U1
14
VDD
RA0
RA1
RA2
1K
RA3
1
2
4
MCLR
RA4/TOCKI
17
1
18
1
1
1
2
1
SW1
2
SW2
2
SW3
2
SW4
2
3
J2
RESET
RB0/INT
RB1
RB2
15
OSC1/CLKIN
RB3
22p
RB4
16
22p
OSC2/CLKOUT
RB5
4Mhz
RB6
5
Vss
RB7
6
a
1
7
b
2
8
c
3
9
d
4
10
e
5
11
f
6
12
g
7
13
1
POWER
+5V
2
3
OFF
b
3
c
4
d
5
e
6
f
7
g
FND
J2
CON1
1
2
2
CON1-2
PIC16F84
ON
a
8
8
VCC
1
1
330
2
330
3
330
4
330
5
330
6
330
7
330
8
330
CON1-1