Смекни!
smekni.com

Разработка программной и аппаратной поддержки к методическим указаниям Программирование микроконтроллеров (стр. 17 из 18)

- Rd: Результирующий (и исходный) регистр в регистровом файле

- Rr: Исходный регистр в регистровом файле

- b: Константа (3 бита), может быть константное выражение

- s: Константа (3 бита), может быть константное выражение

- P: Константа (5-6 бит), может быть константное выражение

- K6; Константа (6 бит), может быть константное выражение

- K8: Константа (8 бит), может быть константное выражение

- k: Константа (размер зависит от инструкции), может быть константное выражение

- q: Константа (6 бит), может быть константное выражение

- Rdl: R24, R26, R28, R30. Для инструкций ADIW и SBIW

- X,Y,Z: Регистры косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30)

ПРИЛОЖЕНИЕ 2.
Таблица регистров микроконтроллера
AT90S1200

Адрес

Название

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

$3F

SREG

I

T

H

S

V

N

Z

C

$3E

з а р е з е р в и р о в а н

$3D

з а р е з е р в и р о в а н

$3C

з а р е з е р в и р о в а н

$3B

GIMSK

-

INT0

-

-

-

-

-

-

$3A

з а р е з е р в и р о в а н

$39

TIMSK

-

-

-

-

-

-

TOIE0

-

$38

TIFR

-

-

-

-

-

-

TOV0

-

$37

з а р е з е р в и р о в а н

$36

з а р е з е р в и р о в а н

$35

MCUCR

-

-

SE

SM

-

-

ISC01

ISC00

$34

з а р е з е р в и р о в а н

$33

TCCR0

-

-

-

-

-

CS02

CS01

CS00

$32

TCNT0

Таймер / счетчик 0 (8 бит)

з а р е з е р в и р о в а н

$21

WDTCR

-

-

-

-

WDE

WDP2

WDP1

WDP0

з а р е з е р в и р о в а н

$1E

EEAR

Регистр адреса энергонезависимой памяти

$1D

EEDR

Регистр данных энергонезависимой памяти

$1C

EECR

-

-

-

-

-

-

EEWE

EERE

з а р е з е р в и р о в а н

$18

PORTB

PORTB7

PORTB6

PORTB5

PORTB4

PORTB3

PORTB2

PORTB1

PORTB0

$17

DDRB

DDB7

DDB6

DDB5

DDB4

DDB3

DDB2

DDB1

DDB0

$16

PINB

PINB7

PINB6

PINB5

PINB4

PINB3

PINB2

PINB1

PINB0

з а р е з е р в и р о в а н

$12

PORTD

-

PORTD6

PORTD5

PORTD4

PORTD3

PORTD2

PORTD1

PORTD0

$11

DDRD

-

DDD6

DDD5

DDD4

DDD3

DDD2

DDD1

DDD0

$10

PIND

-

PIND6

PIND5

PIND4

PIND3

PIND2

PIND1

PIND0

з а р е з е р в и р о в а н

$08

ACSR

ACD

-

ACO

ACI

ACIE

-

ACIS1

ACIS0

з а р е з е р в и р о в а н

$00

з а р е з е р в и р о в а н


ПРИЛОЖЕНИЕ 3.
Программа для измерителя звуковой частоты


.include "8515def.inc"

.equ last_seg =4

.equ zero =0

.equ start_addr= 8

.def capture_l =r2

.def capture_h =r3

.def char =r5

.def char_pointer =r6

.def temp =r16

.def temp1 =r17

.def ZerRol =r18

.def char0 =r20

.def char1 =r21

.def char2 =r22

.def char3 =r23

.def char4 =r24

.def out_char0 =r8

.def out_char1 =r9

.def out_char2 =r10

.def out_char3 =r11

.def out_char4 =r12

.def out_counter =r13

.eseg ;EEPROM segment

.org 0

eetbl3:.db 0x3F,0x06

; ;0 1

.db 0x5B,0x4F

; ;2 3

.db 0x66,0x6D

; ;4 5

.db 0x7D,0x07

; ;6 7

.db 0x7F,0x6F

; ;8 9

.cseg

.org 0

rjmp reset

reti ;

reti ;

rjmp TIM1_CAPT

.org $006

rjmp TIM1_OVF

rjmp TIM0_OVF

;***********************************

;* Main Code

reset: ; Make Stack:

ldi temp, high(RAMEND)

out SPH, temp

ldi temp, low(RAMEND)

out SPL, temp

ldi temp, 0xC3 ;

out TCCR1B, temp ;

ldi temp, 0x8A ;

out TIMSK, temp

ldi temp, 0x3 ;

out TCCR0, temp

sei

ldi temp, zero

mov char_pointer, temp

ldi temp, 0xFF

out DDRA, temp

out DDRC, temp

ldi char0, 8

ldi char1, 8

ldi char2, 8

ldi char3, 8

ldi char4, 8

ldi ZH, 0

ldi ZL, start_addr

ldi ZerRol,0xFE

clt

clr out_counter

forever:

brtc forever

clt

mov dv16uL, capture_l ;tmp16a

mov dv16uH, capture_h ;tmp16b

ldi dd16uL, low(62500)

ldi dd16uH, high(62500)

; пробразование в Гц:

rcall div16u

; преобразование в десятичные цифры

ldi tmp16a, low(10000)

ldi tmp16b, high(10000)

rcall bin2ASCII_digit

mov tASCII4, cnt16a

ldi tmp16a, low(1000)

ldi tmp16b, high(1000)

rcall bin2ASCII_digit

mov tASCII3, cnt16a

ldi tmp16a, low(100)

ldi tmp16b, high(100)

rcall bin2ASCII_digit

mov tASCII2, cnt16a

ldi tmp16a, low(10)

ldi tmp16b, high(10)

rcall bin2ASCII_digit

rjmp forever

;* End Main Code

;************************************

;************************************

;* bin2ASCII_digit