PIC16 시리즈 마이크로컨트롤러의 주변 회로를 구성하고 어셈블리어를 사용하여 마이크로프로세서의 기본 원리를 학습하였습니다. 그리고, 어떻게 작은 규모의 시스템을 설계하는지는 공연용 프로젝트를 통해 배웠습니다.
MPLAB 사용법을 배우고 인터럽트 기본 소자들의 동작원리를 이용하여 타이머가 있는 초시계를 구현하였습니다.
Switch는 PORTB의 3,4,5 PIN과 접지와 연결되어 있어서 누르면 PB3,4,5가 0이 된다.
LED는 PORTB의 7PIN과 RORTC의 5,6,7 PIN과 연결되어 있고 또한 7-SEGMENT의 A,B,C PIN과 연결되어 있어 COMMON단자(DIGIT)로 LED가 도통되어 주의해야 한다. (LED와 7-SEGMENT를 동시에 켜기 어렵다.)
부저는 PORTA의 4PIN과 VDD와 연결되어 0이 되면 울린다.
7-SEGMENT는 CC타입으로 PORTC의 0,1,2,5,6,7와 PORTA의 0,1이 SEGMENT DATA에 연결되어 있고 DIGIT DATA가 RORTA2,3과 PORTB1,2와 연결되어 있다.
PB3과 연결되어 있는 S/W1을 짧게 누르면 모드가 바뀐다. S/W1를 길게 누른 다음에 S/W2을 누르면 시간을 설정할 수 있다. 시간을 설정할 때 S/W2을 누르면 DIG4가 증가하고 S/W3을 누르면 DIG2가 증가
AM일 때 LED가 ON되고 PM일 때 LED가 OFF가 된다.
알람모드에서 설정한 시간이 되면 알람이 울리고 S/W3를 누르면 꺼진다.
7-SEGMENT는 모드1에선 현재 시간을, 모드2에선 설정하고 싶은 알람시간을, 모드3에선 스탑워치의 시간을 보여준다.
*모드 ①모드1: 시, 분을 4개의 7 Segment에 표시(AM일 때 LED ON, PM일 때 LED OFF) (Ex. 오전 11시 20분이면 7 Segment에 1120 표시, LED ON)
②모드2: 원하는 시, 분을 알람으로 설정하여 모드1의 시간이 모드2의 시간이 되었을 때 부저가 울림. (끌려면 S/W3를 누름) (Ex. 모드2에서 알람을 11시 30분으로 맞추어 놓은 상태에서 모드1의 시간이 1130이 되면 부저가 울림
③모드3: 스탑워치기능으로 시작하면 0초부터 1초씩 증가하여 정지를 원하는 시간에 멈출수 있고 다시 시작하거나 초기화를 시킬 수 있다. (Ex. 시작하면 00부터 1초씩 증가하며 15초일 때(15) 정지하였다가 10초동안 멈추었다가 다시 시작하여 30초가 지나고(45) 이 때,초기화(00)를 할 수 있음)
*설정 모드는 1->2->3->1->2로 순차적으로 변경할 수 있도록 하고 모드 변경 방법은 S/W1을 살짝 누르는 방법으로 통일한다.
모든 모드에서 S/W1를 누르고 S/W2를 누르면 시간값을 설정하는 상태로 변경된다. 이 상태에서 S/W2를 누르면 7-Seg의 3,4가 증가하고, S/W3를 누르면 7-Seg의 1,2가 증가한다.
모드 2(스탑워치)에서 S/W2을 누르면 1초씩 카운트되며 한 번 더 누르면 멈추게 하고 S/W3을 누르면 0초로 초기화된다.