Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4 / ЗаданЛабраб 4 Таймеры 0,1

.docx
Скачиваний:
0
Добавлен:
21.03.2026
Размер:
19.88 Кб
Скачать

Исследование работы Таймеров Т0, Т1 на симуляторе.

  1. Запустите программный имитатор микроконтроллера.

  2. Управление периодом работы таймера. 2.1     Расположите в поле редактора программу: ; Update Freq установить 200

;кнопки 7,6,5,4,3,2,1,0 задают код в регистре TH0 (коэффициент счёта)

ORG 0

JMP START

ORG 0BH

SETB P1.7 ;высокий уровень импульса на Scope = 128+64

NOP ;длительность

NOP ;единицы

NOP ;задаём

NOP ;количеством

NOP ;команд NOP

NOP

CLR P1.7

SETB P0.7 ;вывод на осциллограф

CLR P0.7

RETI

START: MOV TMOD,#00000010B ;таймер Т0 в режиме 2 автозагрузка

SETB TR0

MOV IE,#10000010B

MOV P1,#64 ;низкий уровень импульса на Scope

PR: MOV TH0,P2

JMP PR

END

2.2     Транслируйте программу. Установите в окне Update Freq 200.

2.3 Запустите программу. Поочередно нажимая кнопки 7 … 2 наблюдайте на осциллографе изменение периода счёта Т0.

3 Включение/выключение и совместная работа таймеров Т0 и Т1. 3.1    Расположите в поле редактора программу: ORG 0 JMP START

ORG 0BH

CPL P1.7 ;прерывание Т0

SETB P0.7

CLR P0.7

RETI

ORG 01BH

CPL P1.7 ;прерывание Т1

SETB P0.7

CLR P0.7

RETI START: MOV TMOD,#00100010B ;автозагрузка Т0 и Т1

MOV TH0,#221 ;период Т0=35 машинных циклов

MOV TL0,TH0

MOV TH1,#216 ;период Т1=40 машинных циклов

MOV TL1,TH1

SETB TR0

SETB TR1

MOV IE,#10001010B

MOV P1,#64 ;нижний уровень сигнала на Scoup

PR: MOV C,P2.0

MOV TR0,C ;пуск/остановка Т0 кнопкой SW0

MOV C,P2.1

MOV TR1,C ;пуск/остановка Т1 кнопкой SW1

JMP PR

END

;прерывания Т0 и Т1 изменяют уровень сигнала ;на экране осциллографа на 128 единиц

3.2 Транслируйте и запустите программу.         3.3  Кнопками 0 и 1 включайте таймеры по одному. Наблюдайте изменение периода импульса на осциллографе.

3.4 Включите оба таймера одновременно. Объясните получившуюся осциллограмму.

4. Совместное формирование таймерами Т0 и Т1 сигнала широтно-импульсной модуляции (ШИМ).

4.1 Расположите в поле редактора программу:

ORG 0

JMP START

ORG 0003H

JMP NX0 ;переход на прерывание INТ0

ORG 000BH ;прерывание Т0

SETB TR1 ;пуск таймера Т1

SETB P1.6 ;высокий уровень на осцилл.

JMP PL_MN ;на подпрограмму +/-

ORG 0013H

JMP NX1 ;переход на прерывание INТ1

ORG 001BH ;прерывание Т1

CLR TR1 ;остановка таймера Т1

CLR P1.6 ;низкий уровень на осцилл.

CALL DAC ;запись уровня в ЦАП

RETI

START: SETB IT0 ;прерывания по перепаду Р3.2

SETB IT1 ; прерывания по перепаду Р3.3

MOV TMOD,#00100010B ;автозагрузка

MOV TH1,#204 ;средняя длительность

MOV TL1,TH1 ; импульса

MOV TH0,#127 ;период ШИМ

MOV TL0,TH0

MOV IE,#10001111B;разреш.прерывания

MOV P1,#150 ;нижний уровень на осц.

CALL DAC

SETB TR0 ;пуск таймера Т0

PR: JMP PR ;основной бесконечный цикл NX0: ;INT0 увеличивает длительность импульса MOV A,TH1

CJNE A,#140,K_NX0 ;«концевой» выключатель

RETI

K_NX0:

DEC TH1

RETI

NX1: ;INT1 уменьшает длительность импульса

MOV A,TH1

CJNE A,#255,K_NX1 ;«концевой» выключатель

RETI

K_NX1:

INC TH1

RETI PL_MN: ;выполняем один раз в период ШИМ

CALL DAC

JB P2.0,MINUS

CLR P3.2 ;аппаратный вызов INT0

SETB P3.2

RETI

MINUS:

JB P2.1,FIN

CLR P3.3 ;аппаратный вызов INT1

SETB P3.3

FIN: RETI

DAC: CLR P0.7 ;запись уровня в ЦАП

SETB P0.7

RET

END

;Таймер Т0 формирует период, таймер Т1 – формирует длительность импульса .

4.2 Транслируйте программу. Установите Update Freq = 200. Запустите программу кнопкой “Run”.

4.3 Изменяйте длительность импульса в сигнале ШИМ, нажимая кнопки «0» и «1».

Наблюдайте результат на осциллографе.

5. В отчёте приведите программы с комментариями и осциллограммы сигналов с указанием, какие входные воздействия были применены.

Соседние файлы в папке 4