Написание программы, использующей микроконтроллер Intel 80C51GB так, чтобы светодиоды на панели микроконтроллера имитировали работу светофора

Страницы работы

Содержание работы

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

Факультет технической кибернетики

—————————

Кафедра систем автоматического управления

ОТЧЕТ

по лабораторной работе №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: 

Внут-ри цикла

Tim3

 
      mov 0xA6, #0E1H     ;1

Внутри цикла Tim1

 

Внутри цикла Tim2

 
       mov 0xA6, #01EH     ;1

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

Похожие материалы

Информация о работе