
- •1 Функциональная схема
- •2 Выбор типа управляющего устройства
- •3 Разработка и описание принципиальной схемы системы управления
- •3.1 Выбор требуемых источников питания
- •3.2 Выбор силовых ключей
- •3.3 Выбор коммутационной аппаратуры, элементов управления и индикации
- •3.4 Составление принципиальной схемы системы
- •3.4.1 Выбор резисторов
- •3.4.2 Выбор конденсаторов
- •4 Расчет временных диаграмм работы элементов системы
- •5 Разработка программы управляющего устройства (для контроллера aTmega8535)
- •5.1 Описание выбора и расчета элементов программы
- •5.2 Листинг программы
- •Библиографический список
5.2 Листинг программы
.include"m8535def.inc"
.cseg
.org 0
rjmp reset
.org 4 ;вектор прерывания Т2
rjmp T2
.org $008 ;вектор прерывания Т1
rjmp T1 ;по переполнению
.org $20
.def vhod=r19
.def star=r20
.def ml=r21
.def obmotka=r22
.def hg=r23
.def smesh=r24
reset:
ldi r16,$5F;инициализация стека
out spl,r16
ldi r16,$2
out sph,r16
;инициализация портов
ldi r16, $FF
clr r17
out DDRA, r17 ;порт В на вход
out PORTA, r16 ; подтягиваем резисторы
out DDRС, r16
out DDRB, r16
out DDRD, r16 ; порты B,С и D на выход
; инициализация таймера T2
ldi r16,0;остановка Т2
out TCCR2,r16
out TCNT2,r16 ;f=490 Гц
ldi r16, $04 ; Кдел=64
out TCCR2,r16
ldi r16,$40 ;разрешение прерываний по переполнению Т1 и Т2
out TIMSK,r16
;инициализация Т1
ldi r16,0
ldi r17,$FF
out TCCR1A,r16 ; остановка таймера Т1
out TCCR1B,r16
out TCNT1L, r16
out TCNT1H, r17
ldi r16,0x05
out TCCR1B,r16
ldi r16,0x44; разрешение прерываний по переполнению Т1 и Т2
out TIMSK,r16
ldi r31,2
ldi obmotka, $01
ldi hg, $01
clr smesh
SEI ;глобальное разрешение
main:
in vhod, PINA ; в зависимости от состояния входа задаем скорость
andi vhod,$0F
cpi vhod,3
breq skor1
cpi vhod,$05
breq skor2
cpi vhod,$07
breq skor3
cpi vhod,$09
breq skor4
cpi vhod,$0B
breq skor5
cpi vhod,$0D
breq skor6
cpi vhod,$0F
breq skor7
skor0:
ldi star,$FF
ldi r30,0
rjmp main
skor1:
ldi r30,3
ldi star, $F6
ldi ml,$BF
rjmp main
skor2:
ldi r30, $06
ldi star, $FB
ldi ml,$5E
rjmp main
skor3:
ldi r30, $09
ldi star, $FD
ldi ml,$AF
rjmp main
skor4:
ldi r30, $0C
ldi star, $FE
ldi ml, $D7
rjmp main
skor5:
ldi r30, $0F
ldi star, $FF
ldi ml, $E7
rjmp main
skor6:
ldi r30, $12
ldi star, $FF
ldi ml, $F3
rjmp main
skor7:
ldi r30, $15
ldi star, $FF
ldi ml, $F9
rjmp main
T1:
out TCNT1L, ml
out TCNT1H, star
clc
sbis PINA,0 ; если нет «разрешения» (0-ой бит порта А) прыгай на метку
rjmp m2
cpi vhod,1 ;если скорость не задана прыгаем на метку
breq m2
rol obmotka
cpi obmotka, $10
brne met1
ldi obmotka,1
met1:
out PORTB, obmotka
RETI
m2:
clr r26
out PORTB,r26
RETI
T2:
clc
cpi hg, $08 ;перейти, если не равно
brne met2
ldi hg,$01
clr smesh ;очистка смещения
met2:
add r30, smesh ;задаем адрес цифры во FLASH
lpm
out PORTD, r0 ;выводим код цифры на индикаторы
out PORTC, hg ;задаем нужный катод индикатора
clc
inc smesh ;инкрементируем смещение
rol hg ;сдвигаем влево номер индикатора
RETI
.org $100 ;значение адреса
.db 0x3F,0,0,0x06,0,0,0x5B,0,0,0x66,0,0,0x7F,0,0,0x3F, 0x3F, 0x06,0x3F, 0x3F, 0x5B, 0x3F, 0x3F, 0x66 ; запись кодов цифр во ФЛЕШ
;«0» - 0,0,0x3F
; «1» - 0,0,0x06
; «2» - 0,0,0x5B
; «4» - 0,0,0x66
; «8» - 0,0,0x7F
; «100» - 0x06,0x3F,0x3F
; «200» - 0x5B,0x3F,0x3F
; «400» - 0x66,0x3F,0x3F