180 likes | 487 Views
제 6 장. 82C55 의 응용동작 ( 전광판 순차 점등 회로 ). 6.1 DATA BASE 의 활용 (DB) (1). 마이컴 동작 원리. 6.1 DATA BASE 의 활용 (DB) (2). 기본적으로는 프로그램을 하면“ ROM” 이라는 곳에 구워서 ( 프로그램을 기록 ) 사용한다 . 새로운 프로그램을 할 때마다 매번 굽는 번거로움을 해소하기 위해 MC-E01MM 보드는 RAM 에 프로그램을 다운받아 ( 기록하여 ) ROM 처럼 사용한다. 6.1 DATA BASE 의 활용 (DB) (3).
E N D
제 6 장 82C55 의 응용동작 (전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (1) • 마이컴 동작 원리 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (2) • 기본적으로는 프로그램을 하면“ROM”이라는 곳에 구워서(프로그램을 기록) 사용한다. • 새로운 프로그램을 할 때마다 매번 굽는 번거로움을 해소하기 위해 MC-E01MM 보드는 RAM에 프로그램을 다운받아(기록하여) ROM처럼 사용한다. 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (3) 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (4) • 마이컴을 제어하는 명령어들 이외에 디스플레이 값이나, 특정 데이터를 소스에 추가해서 사용할 수 있다. • 이러한 값들은 그 값(HEX 값) 그대로 ROM에 구워진다. • 사용자는 원하는 데이터 값을 DB로 만들어 그 값을 출력하여 원하는 순차회로를 만들 수 있다. 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (5) [ 그림 6-1 ] 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (6) • [그림 6-1 ] 을 소스파일로 만들면 LED_DB: ; 레이블(DB의 위치) DB 10000000B ; 실제 출력 값 DB 01000000B DB 00100000B DB 00010000B DB 00001000B DB 00000100B DB 00000010B DB 00000001B 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.1 DATA BASE 의 활용(DB) (7) • DB(Define Byte)는 한 바이트의 데이터를 정의할 때 사용 • 롬에 각각 1바이트로 매핑하고, 이런 값들은 데이터를 그대로 HEX값으로 바꾼다. • 실제 이 값들은 마이컴이 이해할 수 없는 값이다. 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (1) • LED 순차 점등회로는 위의 DB를 차례로 불러와 출력하는 것을 말함 • 일상생활에서 볼 수 있는 네온사인(옥외간판)등의 동작에 응용됨 • 간단한 순차점등을 만들어 보자 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (2) [ 그림 6-2 ] 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (3) • [그림 6-5] 에서, 소스 파일은 어셈블러를 거치면 HEX로 바뀌어 ROM에 매핑 된다. • 어셈블러는“LED_DB”라는 레이블을 ROM의 #0050H 번지로 인식 한다. 즉“LED_DB”레이블은 #0050H 번지를 나타낸다. • ROM에 있는 값을 읽어오기 위한 명령어는 “MOVC”를 사용한다. 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (4) • [MOV 명령어] 1) MOV A,#00H : 1바이트의 데이터를 A 레지스터로 이동 2) MOVX @DPTR,A : A 레지스터의 값을 램의 DPTR 번지로 WRITE함 3) MOVX A,@DPTR : A 레지스터에 램의 DPTR 번지의 값을 READ함 4) MOVC A,@A+DPTR : 롬의 (DPTR번지+A 값(변수))의 번지에서 값을 READ 해서 A 레지스터에 저장함 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (5) ORG 0000H START: JMP INITIAL ;; ORG 0035H INITIAL: NOP MOV R00,#00H ;; MAIN: MOV A,R00 MOV DPTR,#LED_DB MOVC A,@A+DPTR ;; INC R00 MOV A,R00 CJNE A,#08H,MAIN MOV R00,#00H JMP MAIN 데이터를 가져온다 제6장 82C55의 응용동작(전광판 순차 점등 회로)
6.2 LED 순차점등 알고리즘의 이해 (6) 메모리에 변환되어서 매핑된 경우 LED_DB: 0050H 번지 #0050H + #00H = #0050H번지 #0050H + #01H = #0051H번지 #0050H + #02H = #0052H번지 제6장 82C55의 응용동작(전광판 순차 점등 회로)
[ 실험 ] 1.LED 한 개씩 8개의 LED를 순차적으로 점등한다.(이때 8255의 PORT A를 이용한다) (1) [ 순서도 검토 ] NO(8보다 작다) 변수 ≥ #08H YES(8보다 크다) 제6장 82C55의 응용동작(전광판 순차 점등 회로)
1.LED 한 개씩 8개의 LED를 순차적으로 점등한다.(이때 8255의 PORT A를 이용한다) (2) [ 기본 프로그램 설명 (1/3) ] ORG 0000H ;시작번지를 0000번지로 한다 START: JMP INITIAL ;8051 초기 데이터(고정) ;; ORG 0035H ;프로그램 시작번지(35번지) INITIAL: MOV SP,#5FH ;스택포인터를 5FH로 잡는다 MOV IE,#00000000B ;인터럽트 모두해제(DISABLE) ;; MOV R00,#00H ;변수(R00 레지스터) 초기화 INIT_8255: MOV DPTR,#8003H ;8255의 컨트롤워드 입력 MOV A,#80H ;포트A,B,C 를 출력으로 한다 MOVX @DPTR,A ;8255에 입력한다. 제6장 82C55의 응용동작(전광판 순차 점등 회로)
1.LED 한 개씩 8개의 LED를 순차적으로 점등한다.(이때 8255의 PORT A를 이용한다) (3) [ 기본 프로그램 설명 (2/3) ] MAIN: MOV A,R00 ;변수를 가져온다 MOV DPTR,#LED_DB ;DB 값의 첫 번째를 가져온다 MOVC A,@A+DPTR ;DB 에서 값을 가져온다. MOV DPTR,#8000H ;8255의 포트A를 선택한다 MOVX @DPTR,A ;8255의 포트A로 출력한다 ;; CALL D_1S ;1초 시간 딜레이... ;; ;시간조정 가능*** INC R00 ;변수 1증가(순차증가) MOV A,R00 CJNE A,#08H,MAIN ;모두 8개의 데이터이므로... MOV R00,#00H ;변수 클리어(처음값 가져옴) JMP MAIN 제6장 82C55의 응용동작(전광판 순차 점등 회로)
1.LED 한 개씩 8개의 LED를 순차적으로 점등한다.(이때 8255의 PORT A를 이용한다) (4) [ 기본 프로그램 설명 (3/3) ] LED_DB: ; 레이블 (DB의 위치) DB 10000000B ; 실제 출력 값 DB 01000000B DB 00100000B DB 00010000B DB 00001000B DB 00000100B DB 00000010B DB 00000001B ;; $DELAY.INC ;시간지연함수 포함 END ;프로그램 종료 제6장 82C55의 응용동작(전광판 순차 점등 회로)