Скачиваний:
15
Добавлен:
01.05.2014
Размер:
39.94 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

Кафедра ВТ

Микропроцессорные системы

Отчет по лабораторной работе №5

Вариант 1

Выполнили: Попов А.

Таранюк М.

Гр.2372

Проверила: Головина Л.К.

Санкт-Петербург

2006

Форматы управляющих слов

При программировании подсистемы прерываний использовались следующие управляющие слова:

SETB EA ; enable all interrupts

SETB ET1 ; enable interrupt request from T/C0

SETB EX0 ; enable internal interrupt

SETB IT0 ; programming interrupts

SETB PX0 ; high priority int0

Коды программ

Пункт1 – реализация бегущего огня и вывод на экран по прерыванию 55h

$NOMOD51

#include <reg932.h>

Blinking SEGMENT CODE ; segment declaration

; defines a segment with the name 'Blinking' and the memory class CODE

RSEG Blinking ; switch to this code segment

JMP punkt1

org 03h ; internal interrupt

clr EA

PUSH PSW

PUSH ACC

mov p2,#055h

mov r5,#0FFh

delay:

DJNZ R5, delay

POP ACC

POP PSW

setb EA

RETI

ORG 01Bh ; 01BH is address for Timer 1 interrupt

clr EA

PUSH PSW

PUSH ACC

MOV P2, R7

DJNZ R6, next

MOV R6, #0FFh

CJNE R7, #10000000b, shift

MOV R7, #00000001b

JMP next

shift:

MOV A, R7

RL A

MOV R7, A

next: POP ACC

POP PSW

setb EA

RETI

punkt1:

MOV P2M1, #00h ; configure Port 2 as Quasi-bidirectional

MOV R7, #00000001b

MOV R6, #0FFh

MOV TMOD, #010h ; configure Timer 0 in mode 1 (16-bit counter)

; programming interrupt logic

SETB EA ; enable all interrupts

SETB ET1 ; enable interrupt request from T/C0

SETB TR1 ; run Timer

SETB EX0 ; enable internal interrupt

// SETB IT0 ; programming interrupts

jmp forever

forever:

JMP forever

END

Пункт 2,3 – по прерыванию меняется направление бегущего огня

$NOMOD51

#include <reg932.h>

Blinking SEGMENT CODE ; segment declaration

; defines a segment with the name 'Blinking' and the memory class CODE

RSEG Blinking ; switch to this code segment

JMP punkt1

org 03h ; internal interrupt

PUSH PSW

PUSH ACC

mov a,r4

cpl a

anl a,#01h

mov r4,a

mov r5,#0FFh

delay:

DJNZ R5, delay

POP ACC

POP PSW

RETI

ORG 01Bh ; 01BH is address for Timer 0 interrupt

PUSH PSW

PUSH ACC

MOV P2, R7

DJNZ R6, next

MOV R6, #0FFh

CJNE R4, #01h, right

left:

CJNE R7, #10000000b, shift_left

MOV R7, #00000001b

JMP next

shift_left:

MOV A, R7

RL A

MOV R7, A

jmp next

right:

CJNE R7, #00000001b, shift_right

MOV R7, #10000000b

JMP next

shift_right:

MOV A, R7

RR A

MOV R7, A

jmp next

next: POP ACC

POP PSW

RETI

punkt1:

MOV P2M1, #00h ; configure Port 2 as Quasi-bidirectional

MOV R7, #00000001b

MOV R6, #0FFh

MOV TMOD, #010h ; configure Timer 0 in mode 1 (16-bit counter)

; programming interrupt logic

SETB EA ; enable all interrupts

SETB ET1 ; enable interrupt request from T/C1

SETB TR1 ; run timer

SETB EX0 ; enable int0

SETB PX0 ; high priority int0

mov r4,#01h

// SETB IT0

jmp forever

forever:

JMP forever

END

4

Соседние файлы в папке Лабораторная работа 5