Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Нужна помощь попеределке asm в Си для AVR

Непрочитано 27.02.2009, 20:58  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию Нужна помощь попеределке asm в Си для AVR

Есть asm код, помогите переделать под Си, в асме ни бум бум.
Код:
ORG 0000H
KEY EQU P1.1 ; KEY PIN
KEY2 EQU P1.2 ;VOLUME
KEY3 EQU P1.3 ; CLK+
KEY4 EQU P1.6 ;CLKKEY5
EQU P1.7 ;TRANSMIT VOLUME,THEN ADDRESS
LED EQU P3.0 ;SHOW KEY PRESSED
SCL EQU P3.2 ;CLK PIN
SDA EQU P3.3 ;DATA PIN
RST EQU P3.4 ;RESET PIN
DAIFAZHI EQU 50H ;SEND CODE VALUE TEMP
VOICENUM EQU 51H ;VOLUME
CLKNUM EQU 52H ;CLK
MOV DAIFAZHI,#0H ;INITIAL SEND VALUE 0
MOV VOICENUM,#0F0H ; VOLUME INITIAL VALUE F0H
MOV CLKNUM,#2 ; DEFAULT SEND CODE 1MS
MOV R5,#8 ; LOOP EIGHT TIMES
SETB SCL
SETB SDA
SETB RST
MAIN:
JB KEY,KEY22
CLR LED
MOV R6,#5 ; DELAY 10MS
LCALL DELAY2MS
JB KEY,KEY22 ; KEY PRESS DEBOUNCE
JNB KEY,$ ;WAIT KEY PRESSED RELEASE
SETB LED
LCALL RESET
LCALL TWO_LINE ;TWO LINE SEND CODE SUBPROGRAM
INC DAIFAZHI ;CODE VALUE ADD 1
MOV A,DAIFAZHI
CJNE A,#37,XX2 ;WHETHER VOLUME REACH MAX. VALUE 128
XX2: JC KEY22
MOV DAIFAZHI,#0H
KEY22:
JB KEY2,KEY33
CLR LED
MOV R6,#5 ;DELAY 10MS
LCALL DELAY2MS
JB KEY2,KEY33 ;KEY PRESS DEBOUNCE
JNB KEY2,$ ;WAIT KEY PRESSED RELEASE
SETB LED
LCALL RESET
LCALL VOICE ;TWO LINE SEND CODE SUBPROGRAM
INC VOICENUM ;CODE VALUE ADD 1
MOV A,VOICENUM
CJNE A,#0F8H,XX4 ;WHETHER VOLUME REACH MAX. VALUE
XX4: JC KEY33
MOV VOICENUM,#0F0H
KEY33:
JB KEY3,KEY44
CLR LED
MOV R6,#5 ;DELAY 10MS
LCALL DELAY2MS
JB KEY3,KEY44 ; KEY PRESS DEBOUNCE
JNB KEY3,$ ;WAIT KEY PRESSED RELEASE
NOP
INC CLKNUM
SETB LED
KEY44:
JB KEY4,KEY55
CLR LED
MOV R6,#5 ; DELAY 10MS
LCALL DELAY2MS
JB KEY4,KEY55 ; KEY PRESS DEBOUNCE
JNB KEY4,$ ;WAIT KEY PRESSED RELEASE
XX5:
NOP
DEC CLKNUM
MOV A,CLKNUM
CJNE A,#0H,XX5 ; SEND CODE KEEP 100US AT LEAST
MOV CLKNUM,#1
SETB LED
KEY55:
JB KEY5,MAIN
CLR LED
MOV R6,#5 ; DELAY 10MS
LCALL DELAY2MS
JB KEY5,XX6 ;WAIT KEY PRESSED RELEASE
JNB KEY5,$ ;WAIT KEY PRESSED RELEASE
LCALL RESET
MOV VOICENUM,#0F6H
LCALL VOICE
LCALL TWO_LINE
LJMP MAIN
TWO_LINE: ;///VOICE ADDRESS SEND CODE SUBPROGRAM
CLR SCL
MOV R6,#2
LCALL DELAY1MS
MOV A,#0
LOOP1:
CLR SCL
RLC A
MOV SDA,C
MOV R6,CLKNUM
LCALL DELAY50US
SETB SCL
MOV R6,CLKNUM
LCALL DELAY50US
DJNZ R5,LOOP1
MOV R5,#08H
MOV A,DAIFAZHI
LOOP2:
CLR SCL
RLC A
MOV SDA,C
MOV R6,CLKNUM
LCALL DELAY50US
SETB SCL
MOV R6,CLKNUM
LCALL DELAY50US
DJNZ R5,LOOP2
MOV R5,#08H
RET
VOICE: ;////VOLUME VALUE SEND CODE SUBPROGRAM
CLR SCL
MOV R6,#2
LCALL DELAY1MS
MOV A,#0FFH
LOOP3:
CLR SCL
RLC A
MOV SDA,C
MOV R6,CLKNUM
LCALL DELAY50US
SETB SCL
MOV R6,CLKNUM
LCALL DELAY50US
DJNZ R5,LOOP3
MOV R5,#08H
MOV A,VOICENUM
LOOP4:
CLR SCL
RLC A
MOV SDA,C
MOV R6,CLKNUM
LCALL DELAY50US
SETB SCL
MOV R6,CLKNUM
LCALL DELAY50US
DJNZ R5,LOOP4
MOV R5,#08H
RET
RESET:
CLR RST
MOV R6,#3
LCALL DELAY1MS
SETB RST
MOV R6,#130
LCALL DELAY2MS
RET
DELAY2MS: ;DELAY 2MS SUBPROGRAM, CHANGE R6 VALUE CAN CHANGE DELAY TIME
L1: MOV R7,#248
L2: NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,L2
DJNZ R6,L1
RET
DELAY50US: ; DELAY 25UM SUBPROGRAM, CHANGE R4 VALUE CAN CHANGE DELAY TIME
L11: MOV R7,#6
L22:
NOP
NOP
DJNZ R7,L22
DJNZ R6,L11
RET
DELAY1MS: ; DELAY 1MS SUBPROGRAM, CHANGE R6 VALUE CAN CHANGE DELAY TIME
L31: MOV R7,#240
L32: NOP
NOP
DJNZ R7,L32
DJNZ R6,L31
RET
END
Реклама:
Saadov вне форума  
Непрочитано 27.02.2009, 21:39  
sanitar249
Почётный гражданин KAZUS.RUN
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,745
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Saadov, процессор какой?
Удачи!
__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
Непрочитано 27.02.2009, 21:40  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию

ATmega162, впринципе как я понял код особо к контроллеру не привязан
Saadov вне форума  
Непрочитано 27.02.2009, 21:48  
sanitar249
Почётный гражданин KAZUS.RUN
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,745
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Смысл переводить? Посмотрел, управление аудиопроцессором по квадратной шине, в принципе алгоритм понятен, могу подсказать по асму, если чего изменить нужно.
Удачи!
__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
Непрочитано 27.02.2009, 21:52  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию

Вывод индикации светодиодом можно выкинуть, функции задержки можно использовать библиотечные(пишу в CVavr).Хочется всетаки перевести его в С, чтоб удобнее было, наверно придется залезть в справочник, почитать про asm, что да какие слова обозначают...
Saadov вне форума  
Непрочитано 27.02.2009, 22:38  
sanitar249
Почётный гражданин KAZUS.RUN
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,745
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Сообщение от Saadov
Вывод индикации светодиодом можно выкинуть, функции задержки можно использовать библиотечные(пишу в CVavr).Хочется всетаки перевести его в С, чтоб удобнее было, наверно придется залезть в справочник, почитать про asm, что да какие слова обозначают...
Проще загнать в симулятор и посмотреть, какие подпрограммы за что отвечают и ненужные(вместе с вызовами) выкинуть. Прерывания здесь не используються-это упрощает задачу. А знание асма, очень полезительно!
ЗЫ LED, например это битовая переменная, обслуживающая бит порта(I/O) описанный с помощью EQU
Удачи!
__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
Непрочитано 28.02.2009, 03:30  
Saadov
Почётный гражданин KAZUS.RUN
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,010
Сказал спасибо: 348
Сказали Спасибо 1,023 раз(а) в 551 сообщении(ях)
Saadov на пути к лучшему
По умолчанию

Прилагаю рисунок.Кто силен в asm посмотрите на код и подскажите, какая задержка реализована между сигналом сброса и началом передачи.По диаграмме эта задержка стоит в 300 мс, что крайне меня не устраивает.В тех информации не сказано какая, т.е ›300мс или ‹300мс должна быть.
Вот хотелось бы в приведенном куске кода найти истину.
Заранее спасибо.

-- Прилагается рисунок: --

Saadov вне форума  
Непрочитано 28.02.2009, 20:03  
Vov123
Вид на жительство
 
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
Vov123 на пути к лучшему
По умолчанию

Я немного устарел наверно,асм 8051стал подходить на megaAVR?
Vov123 вне форума  
Непрочитано 28.02.2009, 20:29  
domowoj
Почётный гражданин KAZUS.RUN
 
Аватар для domowoj
 
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,019
Сказал спасибо: 10
Сказали Спасибо 71 раз(а) в 63 сообщении(ях)
domowoj на пути к лучшему
По умолчанию

В принципе, зная архитектуру и систему команд 51-ого,
(и имея схему устройства)
можно восстановить алгоритм работы программы.
А дальше по алгоритму написать для Меги хоть на СИ,
хоть на asm.
__________________
И на камнях растут деревья!
domowoj вне форума  
Непрочитано 28.02.2009, 21:05  
sanitar249
Почётный гражданин KAZUS.RUN
 
Аватар для sanitar249
 
Регистрация: 19.01.2007
Сообщений: 1,745
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
sanitar249 на пути к лучшему
По умолчанию

Сообщение от Saadov
Прилагаю рисунок.Кто силен в asm посмотрите на код и подскажите, какая задержка реализована между сигналом сброса и началом передачи.По диаграмме эта задержка стоит в 300 мс, что крайне меня не устраивает.В тех информации не сказано какая, т.е ›300мс или ‹300мс должна быть.
Вот хотелось бы в приведенном куске кода найти истину.
Заранее спасибо.
Код:
RESET: 
CLR RST 
MOV R6,#3 
LCALL DELAY1MS 
SETB RST 
MOV R6,#130 
LCALL DELAY2MS 
RET
Подпрограмма resеt, работает так сброс RST, закидывает в R6 длит. задерхки(аргумент для DELAY1MS)
вызывает DELAY1MS( отрабат задержка), Установака шины, и вот это значение MOV R6,#130 перед
LCALL DELAY2MS будет определять паузу до вызова следующей процедуры( время цикла DELAY2MS)...
Удачи!

-- Прилагается рисунок: --

__________________
Я, думаю, нужно подумать...
sanitar249 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по ASM для 16-битных PIC'ов realid Микроконтроллеры, АЦП, память и т.д 0 31.05.2008 15:21
ищу исходник asm для AVR - поиск устройств 1-wire chipman Микроконтроллеры, АЦП, память и т.д 3 12.11.2007 14:53
Знатоки AVR и I2C нужна помощь Vlad68 Микроконтроллеры, АЦП, память и т.д 0 23.05.2007 17:51
Help, нужно работать с 32 разр. числами в asm-е для AVR EugVor Микроконтроллеры, АЦП, память и т.д 6 16.12.2006 15:14
Для ознакомления с asm для 80с31.. киньте простые исходнички Mik Микроконтроллеры, АЦП, память и т.д 4 21.08.2003 10:20


Часовой пояс GMT +4, время: 01:41.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.