bigen 0 8 июля, 2004 Опубликовано 8 июля, 2004 · Жалоба Кто поможет разобраться с куском проги на асс для меги128? Нужен Ваш адрес - пришлю.(10К) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nml 0 8 июля, 2004 Опубликовано 8 июля, 2004 · Жалоба Кто поможет разобраться с куском проги на асс для меги128? Нужен Ваш адрес - пришлю.(10К) [email protected] а пиво как слать будешь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 8 июля, 2004 Опубликовано 8 июля, 2004 · Жалоба Засылайте. Разберёмся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bigen 0 8 июля, 2004 Опубликовано 8 июля, 2004 · Жалоба Засылайте. Разберёмся. Ситуация такая: на порт А подключены дисплей лсд и мл. разряды устройства 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться