Перейти к содержанию
    

Прога на асс для меги128

Кто поможет разобраться с куском проги на асс для меги128? Нужен Ваш адрес - пришлю.(10К)

[email protected]

а пиво как слать будешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Засылайте. Разберёмся.

Ситуация такая: на порт А подключены дисплей лсд и мл. разряды устройства IDE, пытаюсь прочитать регистр STATUS из IDE и отбразить "его"(я просто к ниблам данных прибавляю 0Х30) на дисплее. Вместо 00(IDE не подключен) получаю на экране 0х35 - это остаток от цифры 55, которую отображаю в начале.

Создается такое впечатление, что я неправильно настраиваю направление передачи и читаю защелку.

Где-то есть ошибки.

С AVRами работаю впервые.

 

Вставлять файл не знаю как, так что прога прямо здесь.

 

Заранее благодарен, Игорь

 

.INCLUDE "m128def.inc"

 

.CSEG

 

.ORG 000

BEGIN: JMP START

 

.ORG 0x100

 

;############## НАСТРОЙКА ATMEGA

 

START: LDI YL,0xFF ;СТЕК - 0FFF

LDI YH,0x0F

OUT SPL,YL

OUT SPH,YH

 

; НАСТРОЙКА ПОРТОВ F,G НА ВЫВОД

LDI R18,0xFF

NOP

STS DDRF,R18

LDI R18,0x1F

NOP

STS DDRG,R18

LDI R16,0x20

STS PORTF,R16

LDI R16,0xF

STS PORTG,R16

;############# НАСТРОЙКА ДИСПЛЕЯ

 

LDI R18,0xFF

NOP

OUT DDRA,R18 ;порт А на вывод

OUT DDRD,R18 ;ПРОРТ D НА ВЫВОД

CBI PORTD,PIND5 ;RS=0

CBI PORTD,PIND6 ;RW=0

SBI PORTD,PIND7 ;E=1

CALL DEL41

CALL DEL41

CALL DEL41

 

LDI R18,0x38

OUT PORTA,R18

CALL COMMB

CALL DEL41

 

LDI R18,0x38

OUT PORTA,R18 ;2 СТРОКИ, МАТРИЦА 5Х7 ТОЧЕК

CALL COMMB

CALL DEL100

LDI R18,0x0C

OUT PORTA,R18 ;ВКЛЮЧЕНИЕ ДИСПЛЕЯ

CALL COMMB

LDI R18,0x01

OUT PORTA,R18 ;ОЧИСТКА ДИСПЛЕЯ

CALL COMMB

 

LDI R18,0x80 ;ЗАПИСЬ В ПЕРВУЮ СТРОКУ

OUT PORTA,R18

CALL COMMB

; JMP T1

 

LDI R16,0x55

 

BB:

MOV R15,R16

ANDI R16,0xF0

SWAP R16

LDI R17,0x30

ADD R16,R17

MOV R10,R16

MOV R16,R15

ANDI R16,0x0F

LDI R17,0x30

ADD R16,R17

MOV R12,R16

MOV R16,R10

CALL M

MOV R16,R12

CALL M

JMP T1

M: OUT PORTA,R16

CALL DATB

CALL DEL41

RET

 

T1:

LDI R16,0x37

CALL RUTR

;BB:

JMP BB

;

RUTR:

STS PORTF,R16

LDI R18,0

NOP

OUT DDRC,R18

LDI R16,0x0B

STS PORTG,R16; ИМПУЛЬC RD

NOP

NOP

LDI R18,0

NOP

OUT DDRA,R18

IN R16,PINA

LDI R17,0xF

STS PORTG,R17

LDI R17,0xFF

STS PORTF,R17

NOP

OUT DDRA,R17

OUT DDRC,R17

RET

 

;JMP T1

 

COMMB: CBI PORTD,PIND5 ;RS

JMP BDEL

DATB: SBI PORTD,PIND5 ;RS

NOP

NOP

NOP

NOP

BDEL: CBI PORTD,PIND6 ;RW

CBI PORTD,PIND7 ;E

NOP

NOP

NOP

NOP

SBI PORTD,PIND7 ;E

NOP

 

;ПРОВЕРКА НА ЗАНЯТОСТЬ ДИСПЛЕЯ

; RET ;#########

LDI R18,0x00

NOP

OUT DDRA,R18 ;PORTA НА ВВОД

SBI PORTD,PIND6 ;RW=1

CBI PORTD,PIND5 ;RS=0

CBI PORTD,PIND7 ;E=0

NOP

NOP

NOP

SBI PORTD,PIND7 ;E=1

BLOOP: NOP

IN R17,PINA

ANDI R17,0x80

CPI R17,0x80

BREQ BLOOP

;ДВОЙНАЯ ПРОВЕРКА

TWICE: IN R17,PINA

ANDI R17,0x80

CPI R17,0x80

BREQ TWICE

CBI PORTD,PIND6 ;RW=0

LDI R18,0xFF

NOP

OUT DDRA,R18

 

RET

 

DEL41: ; ПП ЗАДЕРЖКИ 4,1mS

LDI R22,0x28

LDI R23,0xFF

M1: DEC R23

CPI R23,00

BRNE M1

DEC R22

CPI R22,0

BRNE M1

RET

 

DEL100: ;ПП ЗАДЕРЖКИ 100uS

LDI R22,0xF8

M2: DEC R22

CPI R22,0

BRNE M2

RET

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...