 
        
        - •1 . Два светодиода моргают, необходимо нажать, пока горит второй светодиод. Период горения светодиодов — 0,5 сек.
- •Выход из подпрограммы обработки прерывания
- •Запрет прерываний от порта p1.2, снятие флага прерывания (не обязательно), включение led1 и led2 (happy end)
- •Выход из подпрограммы обработки прерывания
- •Блок-схемы к задаче №1
- •Блок-схема к задаче №2(а)
- •Зацикливание (ожидание прерывания)
- •Блок-схемы к задаче №2(б)
- •Зацикливание (ожидание прерывания)
- •Вход в подпрограмму обработки прерывания от таймера а, проверка на первый измеряемый импульс, в случае подтверждения запуск таймера
- •Выход из подпрограммы обработки прерывания
- •Блок-схемы к задаче №2(в)
- •Зацикливание (ожидание прерывания)
- •Блок-схемы к задаче №3
- •Блок-схемы и иллюстрация операции к задаче №4
- •5. Программно-аппаратный делитель частоты входного сигнала.
- •Зацикливание (ожидание прерывания)
- •Блок-схемы к задаче №5
Блок-схемы к задаче №3
4. Синтезировать заданную импульсную последовательность с параметрами: T1=1 мкс, T2=5 мкс, T3=7 мкс, T4=10 мкс.
 
И спользуется
кварц с частотой 5 МГц, поэтому T1=5T,
T2=25T, T3=35T,
T4=50T, где T1=1/(5 МГц)=0,2
мкс.
спользуется
кварц с частотой 5 МГц, поэтому T1=5T,
T2=25T, T3=35T,
T4=50T, где T1=1/(5 МГц)=0,2
мкс.
NAME main
PUBLIC main
#include "msp430x16x.h"
ORG 0FFFEh
DC16 main
ORG 0FFEAh
DC16 Timer_A1
RSEG CODE
main:
mov #(WDTPW+WDTHOLD), &WDTCTL
mov #09FEh, SP ; инициализация стека
b 
	Инициализация системы
	тактирования ic
#OSCOFF, SR ;
по
умолчанию
ic
#OSCOFF, SR ;
по
умолчанию
bis.b #XTS, &BCSCTL1
b 
	Инициализация портов
	P1.2-P1.3
bis.b #((1<<2)|(1<<3)), &P1SEL
bis.b #((1<<2)|(1<<3)), &P1DIR
m 
	Инициализация таймера
	А:  блоки 1-2  в режиме сравнения, задание
	констант (пределов) счёта; разрешение
	прерывания от блока 1;  OUT1=0,
	OUT2=1,
	установка выходов OUT1
	и OUT2
	в режим «переключение» и «сброс/установка»
	соответственно; работа таймера от ACLK,
	/1, запуск в режиме «вверх» ov
#32h, &TACCR0 ;
T4=50T=10
мкс
ov
#32h, &TACCR0 ;
T4=50T=10
мкс
mov #5h, &TACCR1 ; T1=5T=1 мкс
mov #19h, &TACCR2 ; T2=25T=5 мкс
mov #CCIE, &TACCTL1
bic #OUT, &TACCTL1 ; по умолчанию
bis #OUT, &TACCTL2
bis #OUTMOD_2, &TACCTL1
bis #OUTMOD_7, &TACCTL2
mov #(TASSEL_1+ID_0+MC_1), &TACTL
eint ; Разрешение маскируемых прерываний
L 
	Зацикливание (ожидание
	прерывания)
jmp L1
T imer_A1:
c 
	Подпрограмма обработки
	прерывания от блока 1 таймера А: задание
	момента времени формирования перепада
	сигнала на P1.2 
	
	
jl T1
mov #5h, &TACCR1 ; 1 мкс
reti
T1: mov #23h, &TACCR1; 7 мкс
reti
end main
 
 
Блок-схемы и иллюстрация операции к задаче №4
5. Программно-аппаратный делитель частоты входного сигнала.
Д еление
на 3 с использованием прерывания от
порта P1.0
еление
на 3 с использованием прерывания от
порта P1.0
NAME main
PUBLIC main
#include "msp430x16x.h"
ORG 0FFFEh
DC16 main
ORG 0FFE8h
DC16 Input
RSEG CODE
main:
mov #(WDTPW+WDTHOLD), &WDTCTL
m 
	Инициализация системы
	тактирования
b ic #XT2OFF, SR ; по умолчанию
bis.b #SELM_2, &BCSCTL2
mov #0h, R4 ; R4=0
b ic.b
#((1<<0)|(1<<1)), &P1SEL
; по
умолчанию
ic.b
#((1<<0)|(1<<1)), &P1SEL
; по
умолчанию
b 
	Инициализация портов
	P1.0-P1.1
bis.b #(1<<1), &P1DIR
bic.b #(1<<1), &P1OUT ; по умолчанию
b
 
	Разрешение прерываний
	от порта P1.0 по фронту сигнала, разрешение
	маскируемых прерываний
bis.b #(1<<0), &P1IE
eint
LЗацикливание (ожидание прерывания)
1:
jmp L1
	Вход в подпрограмму
	обработки прерывания от P1.0
	и запрещение маскируемых прерываний
Input:
d
 
	Очистка флага прерывания
	от P1.0 и изменение срабатывания прерывания
	по фронту/спаду
bic.b #(1<<0), &P1IFG
xor.b #(1<<0), &P1IES
c
 
	Если R4=0, то смена уровня
	выходного сигнала (P1.1),
	R4=коэффициенту деления
jnz L2
xor.b #(1<<1), &P1OUT
mov #3h, R4
L
 
	Декрементация R4, разрешение
	маскируемых прерываний, выход из
	подпрограммы
eint
r eti
eti
end main
 
Блок-схемы к задаче №5
	 
		
