Санкт-Петербургский государственный политехнический университет
Факультет технической кибернетики
—————————
Кафедра систем автоматического управления
ОТЧЕТ
по лабораторной работе №5
«Светофор»
по курсу «ВМ, системы и сети»
Студент: |
Ву Ван |
гр. /2 |
|
Преподаватель: |
|
Санкт-Петербург — 2010
Написать программу, использующую микроконтроллер Intel 80C51GB так, чтобы светодиоды на панели микроконтроллера имитировали работу светофора. Для создания задержек следует использовать вложенные циклы.
Для написания данной программы нужно ознакомиться со структурой микроконтроллера. На передней панели находятся три светодиода, которые должны гореть в заданный момент. Для управления этими диодами используется порт Р5. Чтобы записать в память программы действие этих светодиодов используется регистр специальных функций (РСФ), имеющий адрес F8. У этого регистра доступна побитовая адресация при прямом обращении. По умолчанию значение регистра 00000000. Для того, чтобы загорелся красный светодиод, необходимо, чтобы четвёртый бит регистра был равен 1, для жёлтого – пятый бит должен быть равен 1, для зелёного – шестой.
Для изменения необходимых битов регистра P5 будем использовать маски, чтобы не повредить информацию в других битах регистра.
Для задержки будем использовать вложенные циклы.
Рассчитаем время выполнения задержки
MOV R1,#TIm1
DO1:
mov 0xA6, #0E1H ;1 – количество тактов выполнения одной команды
mov 0xA6, #01EH ;1
MOV R2,#tim2 ;1
DO2:
mov 0xA6, #0E1H ;1
mov 0xA6, #01EH ;1
MOV R3,#TIm3 ;1
DO3:
|
|
|
DEC R3 ;1
MOV A,R3 ;2
JNZ DO3 ;2
EDO3:
DEC R2 ;1
MOV A,R2 ;2
JNZ DO2 ;2
EDO2:
DEC R1 ;1
MOV A,R1 ;2
JNZ DO1 ;2
EDO1:
Время выполнения одного прохода цикла Tim3:
Время выполнения одного прохода цикла Tim2:
Время выполнения одного прохода цикла Tim1:
Время выполнения цикла Tim1:
В программе в итоге получаем:
Tim1=4, Tim2=100, Tim3=100
T=((7.100+8).100+4).4+1=283217 тактов
В результате работы программы светодиоды лицевой панели микроконтроллера Intel 80C51GB имитировали работу светофора.
В ходе работы мы изучили работу светодиодов микроконтроллера и сделали программу, управляющую ими. В процессе отладки программы мы столкнулись с проблемой запуска программы на микроконтроллере.
A51 MACRO ASSEMBLER PROG 11/25/2010 21:00:41 PAGE 1
MACRO ASSEMBLER A51 V8.01
OBJECT MODULE PLACED IN prog.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE prog.a51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;SVETOFOR
2 ;=============================
8000 3 org 8000h
00F8 4 P5 EQU 0F8H
0010 5 red equ 00010000b
0020 6 yel equ 00100000b
0040 7 gre equ 01000000b
008F 8 off equ 10001111b
0004 9 TIm1 EQU 4D
0064 10 TIm2 EQU 100D
0064 11 TIm3 EQU 100D
12 ;=============================
8000 13 BEG:
14 ;----------------------------15 ;vicl vse svetodiodi
8000 E5F8 16 MOV A,P5
8002 548F 17 ANL A,#OFF
8004 F5F8 18 MOV P5,A
19 ;----------------------------20 ;vcl krasniy
8006 E5F8 21 MOV A,P5
8008 4410 22 ORL A,#RED
800A F5F8 23 MOV P5, A
24 ;----------------------------25 ;timer
800C 7904 26 MOV R1,#TIm1
800E 27 DO1:
800E 75A6E1 28 mov 0xA6, #0E1H
8011 75A61E 29 mov 0xA6, #01EH
8014 7A64 30 MOV R2,#tim2
8016 31 DO2:
8016 75A6E1 32 mov 0xA6, #0E1H
8019 75A61E 33 mov 0xA6, #01EH
801C 7B64 34 MOV R3,#TIm3
801E 35 DO3:
801E 75A6E1 36 mov 0xA6, #0E1H
8021 75A61E 37 mov 0xA6, #01EH
8024 1B 38 DEC R3
8025 EB 39 MOV A,R3
40
8026 70F6 41 JNZ DO3
8028 42 EDO3:
8028 1A 43 DEC R2
8029 EA 44 MOV A,R2
45
802A 70EA 46 JNZ DO2
802C 47 EDO2:
802C 19 48 DEC R1
802D E9 49 MOV A,R1
50
802E 70DE 51 JNZ DO1
8030 52 EDO1:
53 ;----------------------------54 ;vkl zheltogo
8030 E5F8 55 MOV A,P5
8032 4420 56 ORL A,#YEL
8034 F5F8 57 MOV P5,A
58 ;-----------------------------
A51 MACRO ASSEMBLER PROG 11/25/2010 21:00:41 PAGE 2
59 ;timer
8036 7904 60 MOV R1, #TIm1
8038 61 DO12:
8038 75A6E1 62 mov 0xA6, #0E1H
803B 75A61E 63 mov 0xA6, #01EH
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.