Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС_курсач_СДВ_8535даша.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
569.86 Кб
Скачать

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