Machine Code 예제 LED가 정해진 시간마다 동시에 점멸하기 MCS80196 P1.0 P1.1 P1.2 P1.3
djnzw on_time, delay_on djnzw off_time, delay_off Machine Code 예제(JOE6.ASM) Ioport1 equ 0fh on_time equ 22h off_time equ 24h rseg at 20h cseg at 2080h Ldb ioport1, #0h ; 초기치 setting Start: Ldb ioport1, #0fh ; ioport를 1 로 set Ld on_time, #0ffffh ; LED on 시간값 로드 delay_on : djnzw on_time, delay_on ; LED on Ldb ioport1, #0fh ; ioport를 0 로 set Ld off_time, #0ffffh ; LED off 시간값 로드 delay_off : djnzw off_time, delay_off ; LED off Sjmp start end
djnzw on_time, delay_on djnzw off_time, delay_off Machine Code 예제 -3은 3를인버터후 +1. 고로 0000 0011 을 처리하면 FD (본 명령후 PC값은1이 증가된상태) Ioport1 equ 0fh on_time equ 22h off_time equ 24h rseg at 20h cseg at 2080h B1 00 0F Ldb ioport1, #0h ; 초기치 setting B1 0F 0F Start: Ldb ioport1, #0fh ; ioport를 1 로 set A1 FF FF 22 Ld on_time, #0ffffh ; LED on 시간값 로드 d_on : djnzw on_time, delay_on ; LED on E1 22 FD Ldb ioport1, #0fh ; ioport를 0 로 set B1 00 0F Ld off_time, #0ffffh A1 FF FF 24 d_off : djnzw off_time, delay_off E1 24 FD ; LED off Sjmp start 27 EA end
djnzw on_time, delay_on djnzw off_time, delay_off Machine Code 예제 22를 HEX로 표시하면 000 0001 0110 -22를 만들려면 인버터후 +1 고로 0001 0110을 처리하면 EA Ioport1 equ 0fh on_time equ 22h off_time equ 24h rseg at 20h cseg at 2080h B1 00 0F Ldb ioport1, #0h ; 초기치 setting B1 0F 0F Start: Ldb ioport1, #0fh ; ioport를 1 로 set A1 FF FF 22 Ld on_time, #0ffffh ; LED on 시간값 로드 d_on : djnzw on_time, delay_on ; LED on E1 22 FD Ldb ioport1, #0fh ; ioport를 0 로 set B1 00 0F A1 FF FF 24 Ld off_time, #0ffffh d_off : djnzw off_time, delay_off E1 24 FD ; LED off Sjmp start 27 EA end
Machine Code 각 조별 과제물 작성 1. 하나씩 왼쪽으로 시프트 2. 하나씩 오른쪽으로 시프트 3. 두개씩 오른쪽 4. 두개씩 왼쪽 5. 1을 인버터 6. 2를 인버터 7. 3을 인버터 8. 4를 인버터