본문 바로가기

80c196kc

80c196kc - (8) HSO 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 8.HSO 알람시계를 써본적이 있을 것이다. 임의의 시간을 예약해놓고 그 시간이 되면 알람이 울리게 하는 알람 시계... MCS-96 계열의 마이크로컨트롤러도 일종의 알람기능이 있는데 바로 HSO 이다. 자..그렇다면 알람을 울리는 일 대신 CPU에게 예약시켜줄 수 있는 일은 어떤 것이 있는지 알아보자. 참고로 High Speed Output의 약자로서 포트를 순간적으로 많이 써도 하드웨어가 직접적으로 처리하기 때문에 CPU에 부하를 덜주게되는 뭐 그런거란다. ◈예약할수 있는 사건 -고속 출력 포트 1개 이상을 0 or 1로 만들 수 있다. -->hso 인터럽트 발생 -A/D 컨버젼 스타트 -타이머 2 리셋 -4개의 소프트.. 더보기
80c196kc - (7) PWM( pulse width modulation ) 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 7..PWM(pulse width modulation) 이름에서 대충 집작할 수 있듯이 펄스를 주되 너비를 변화시켜주면서 뭘 어떻게 해보겠다는 것이다. 그럼 과연 무엇을 할수 있을까... 뭐 여러 가지가 있겠지만 모터를 동작시킬수도 있고 PWM출력단에 부가회로를 구성하여 D/A 컨버터로도 활용할 수 있다. 응용에 관한 것은 스스로 찾아보기바란다. 나두 뭐 별로 써먹어본건 없다...-.- ☞알아야할 단어 --->‘듀티비’펄스의 한주기중 high(5V)가 갖는 비율. 마이크로컨트롤러가 PWM 기능을 제공한다는 것은 별다른 회로를 설계할 필요없이 원하는 듀티비만 세팅해주면 고것에 맞게 알아서 사각파가 출력된다는 것을 말한다. 하.. 더보기
80c196kc - (6) 타이머 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 6. 타이머 80c196kc는 16bit로 두 개의 타이머가 있는데 우선 용어 타이머 VS 카운터의 차이부텀 알아보자. ※타이머 : 일정한 시간마다 증가 카운터 : 신호가 들어오면 하나씩 증가시켜 나감 타이머 1 : 타이머 일정한 시간마다 증가 타이머 2 : 타이머 + 카운터 타이머1은 타이머로서의 순수한 기능으로 고속 입출력의 기준시간으로 사용되지만 타이머 2는 그것뿐만아니라 증가 or 감소 카운터,외부사건 캡쳐의 기준으로 사용되거나 외부카운터로 사용된다. 80c196kc의 타이머의 장점이라면 HSI및 HSO를 동작시키는데 기준시간이 되어 상당히 유용하게 이용할수 있어 좋다. 나중에 HSO 관련 프로그래밍을 짠다면 느낄것.. 더보기
80c196kc - (5) 포트를 이용하자. 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 5.. 포트를 이용하자. 80c196kc는 8비트씩 5개의 입출력 포트를 가지고 있다. -포트 0 ---A/D 컨버터를 위한 아날로그/디지탈 입력전용 -포트1 --- 준 양방향 포트 -포트 2 --- 세가지 종류(준 양방향 입력과 출력) -포트 3,4 --- 어드레스/데이터 버스 겸한 오픈드레인 양방향 포트 5-1.준양방향성 포트 준양방향 포트란 입력,출력,또는 입출력으로 다 사용할수 있는 만능(?) 포트이다. 단,사용자가 몇가지 조건을 맞추어주어야 하는데 어떤 것이 있는지 보자. (이것 때문에 ‘쌍’이 아닌 ‘준’이라는 이름이 붙었다고 함...) ◈입력으로 쓸 때 준양방향성 포트에서 신호를 읽어들이려면 먼저 해당 포트에 .. 더보기
80c196kc - (4) 인터럽트 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 .인터럽트 ◆인터럽트 해당 번지로 점프하여 일을수행하고 원래자리로 돌아온다. ◆인터럽트벡터테이블 인터럽트가 발생되면 어디로 가서 인터럽트 처리 루틴을 수행해야 되는지 기록되어 있는 곳으로 80c196kc는 2000H 번지부터 시작된다. (CPU 설계한 사람 마음) .. .. 2004H 2002H A/D 변환 완료 2000H 타이머 오버플로 ◆인터럽트 발생 후 무슨 일이 벌어지는가... 만약 타이머 오버플로 인터럽트가 발생하면 그것에 해당하는 2000H로 간다. 그런데 여기는 ROM영역이라 사용자가 인터럽트 처리 루틴을 써넣을 수가 없다. 이곳엔 그냥 16비트 주소값이 저장되어있고 그 번지로 점프한다. 점프할 주소는 사용자가.. 더보기
80c196kc - (3) 개발 환경 설정 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 3.개발환경 설정 윈도용 기반에서 어플리케이션을 작성할때는 프로그램 짜서 컴파일 시켜버리면 된다. 실행파일이 어찌되든 그건 모두 OS가 알아서 해준다. 하지만 마이크로컨트롤用 프로그램은 실행 프로그램이 RAM에 저장하여 실행하는경우도 있고 ROM에서 실행하는 경우도 있다. 프로그래머 맘에 따라 실행파일의 실행번지가 틀리게 되는데 이것을 어디서 설정해주면 되는가? 바로 링커이다. 그외에 개발시 알아야할 툴의 설정에 대해 알아보자. ◆링커란? 컴파일후 생성된 목적 화일을 다른 목적 모듈과 연결하여 최후의 실행 화일을 만들어 내는 것 ◆스타트업 코드 C 프로그램을 할 때 꼭 하나 있어야 할 함수 바로 main이다. 그런데 이것은.. 더보기
80c196kc - (1) 회로도 보고 메모리 파악하기 1.회로도 보고 메모리 파악하기 마이크로컨트롤러회로의 기본구성은 CPU+롬+램+발진+리셋회로이며 그외에 전원부 + 통신부가 있을 수 있다. 아래 회로는 인터넷에서 흔히 접해볼수 있는 아주 기본적인 회로인데 이것으로 메모리와 매칭시켜보자. 우선 나와있는 소자만 봐도 메모리맵을 머리속으로 그릴수 있어야한다. 어떻게 그리냐구? ◆ 롬 29C256 --->256Kbit = 32KB ◆ 램 62256 --->256Kbit = 32KB 196이 가질수 있는 최대 메모리 크기는 64K라고 했다. 이것을 롬,램이 사이좋게 각각 32K씩 나누어썼다는 것을 알수 있다. 그 다음 단계...............32KB를 hexa로 바꾸면 32*1024byte = 32768 =8000H이며 결국 롬은 0000~7FFFH 램은.. 더보기
196외부메모리및 기본 회로도 더보기
80C196KC DATASHEET 더보기
196 핀 번호 출처 : 임베디드 커뮤니티 [W.O.E] cafe.naver.com/okh0217 196KC PLCC TYPE'S PIN ARRAY(VIEW TO FRONT) ● 9 P0.7 ● 7 P0.2 ● 5 P0.1 ● 3 NMI ● 1 Vcc ● 67 XTAL1 ● 65 CLKOUT ● 63 INST ● 61 RD ● 10 P0.5 ● 11 P0.4 ● 8 P0.6 ● 6 P0.0 ● 4 P0.3 ● 2 EA ● 68 Vss ● 66 XTAL2 ● 64 BUSW ● 62 ALE/ADV ● 60 P3.0 ● 12 ANGND ● 13 Vref ● 59 P3.1 ● 58 P3.2 ● 14 Vss ● 15 P2.2 ● 57 P3.3 ● 56 P3.4 ● 16 RESET ● 17 P2.1 ● 55 P3.5 ● 54 P3.. 더보기
MDE 80196 KIT, LCD 제어 여기 이넘은 간단하게 LCD를 제어할수가 있다. 일단 소스. ------------------------------------------------- R0 EQU 0000H SP EQU 18H BREG1 EQU 20H BREG2 EQU 21H BREG3 EQU 22H WBUF EQU 24H WREG EQU 26H LCDC EQU 0F000H LCDD EQU LCDC+2 LCDS EQU LCDC+4 CSEG AT 4000H LD SP,#00E0H START: SCALL ALLCLR LD WBUF,#DATA1 SCALL STR_0 SCALL LN21 LD WBUF,#DATA2 SCALL STR_0 SCALL LN31 LD WBUF,#DATA3 SCALL STR_0 SCALL LN41 LD WBUF,#DATA.. 더보기
MDE 80196 KIT, LED 점멸 80196 키트로 만든 간단한 LED점멸.. 이키트는 P1.0~P1.3까지 4개의 LED의 조정이 가능하다. LED에 불을 키려면 해당포트에 LOW를 주면된다(0), 상위의 4비트가 키보드에 연결되어있기때문에, 하위 4비트만을 이용해서 컨트롤. 시작번지가 4000번지(이후 모델들은 2080) 간단하게 레지스터에 값을 넣어서 SHIFT RIGHT해서 LED 점멸시킨다. LED.A96 --------------------------------------------------------------------- BREG1 EQU 20H WREG EQU 22H P1 EQU 0FH CSEG AT 4000H START: LDB BREG1,#1110111B LOOP: SHRB BREG1,#1 ORB BREG1,#0F0.. 더보기
MDE kit 80196 아~주 오래된 kit. 정리하다 나온놈 위에 전원이있고, 직렬 케이블리 연결되어있다. 16*4 사이즈 lcd가 있고, 키패드로도 입력이 가능하다. LCD부위, 8251로 rs232포트를 제어한다. 이 키트에는 rs232포트가 2개있다. 사진에 보인당... 키패드 바로위에는 74시리즈 74LS393이 있고(u14) 가장왼쪽엔 금성(^^)의 6264 두넘이 떡하니 자리 잡고 있다. 그옆엔 약간 짤린 27512 두넘도 보인다 플래시가 터지는 바람에 잘안나와 버렸다. I/O 인터페이스 부분, 좌측하단에 DIP스위치도 있고, LED 테스트 할수 있는(4개) 곳도 있다. 키패드 부분. RES로 리셋시키고, AD는 주소, DA는 데이터 저기 중간쯤 희미~~~ 하게 보이는게 2.4576MHz 를 내뿜고 있다 더보기
196을 배워보자 2. 196을 배워보자 http://www.roboblock.co.kr/info/info5-4.htm II. 196 Assember II-II. 본격적인 196 어셈블리어 지난 시간에 언급한대로 196 어셈블리어의 명령을 기능에 따라 몇가지로 분류해보면 다음과 같다. ① 데이터 전송 명령 : 데이터의 이동에 관한 명령 ② 산술 연산 명령 : 산술 연산(addition, subtraction, multiplication, division)에 관한 명령 ③ 논리 연산 및 shift 명령 : 논리 연산과 shift 명령 ④ branch 명령 : 일반 분기(jump) 및 비교(compare), 조건 분기에 관한 명령 ⑤ Stack과 subroutine 및 system 제어 명령 : subroutine call,.. 더보기
2. 196을 배워보자 2. 196을 배워보자 http://www.roboblock.co.kr I. 196의 내부 구조 1. 196의 특징 20MHz operation RALU 488 byte internal RAM 28개 interrupt source, 16개 interrupt vector 1.4us의 16bit X 16bit multiplication (at 20MHz) Power down mode, Idle mode 16bit watchdog timer full duplex serial port 동적 구조의 8bit/16bit external BUS width Capture 기능이 있는 16bit up/down counter 8/10bit ADC with Sample/Hold 232 byte register file Re.. 더보기