Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.02.2009, 20:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Нужна помощь попеределке 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 |
|
|
|
|
27.02.2009, 21:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Saadov, процессор какой?
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
27.02.2009, 21:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
ATmega162, впринципе как я понял код особо к контроллеру не привязан
|
|
|
|
27.02.2009, 21:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Смысл переводить? Посмотрел, управление аудиопроцессором по квадратной шине, в принципе алгоритм понятен, могу подсказать по асму, если чего изменить нужно.
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
27.02.2009, 21:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Вывод индикации светодиодом можно выкинуть, функции задержки можно использовать библиотечные(пишу в CVavr).Хочется всетаки перевести его в С, чтоб удобнее было, наверно придется залезть в справочник, почитать про asm, что да какие слова обозначают...
|
|
|
|
27.02.2009, 22:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Сообщение от Saadov
|
Вывод индикации светодиодом можно выкинуть, функции задержки можно использовать библиотечные(пишу в CVavr).Хочется всетаки перевести его в С, чтоб удобнее было, наверно придется залезть в справочник, почитать про asm, что да какие слова обозначают...
|
Проще загнать в симулятор и посмотреть, какие подпрограммы за что отвечают и ненужные(вместе с вызовами) выкинуть. Прерывания здесь не используються-это упрощает задачу. А знание асма, очень полезительно!
ЗЫ LED, например это битовая переменная, обслуживающая бит порта(I/O) описанный с помощью EQU
Удачи!
__________________
Я, думаю, нужно подумать...
|
|
|
|
28.02.2009, 03:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Прилагаю рисунок.Кто силен в asm посмотрите на код и подскажите, какая задержка реализована между сигналом сброса и началом передачи.По диаграмме эта задержка стоит в 300 мс, что крайне меня не устраивает.В тех информации не сказано какая, т.е ›300мс или ‹300мс должна быть.
Вот хотелось бы в приведенном куске кода найти истину.
Заранее спасибо.
-- Прилагается рисунок: --
|
|
|
|
28.02.2009, 20:03
|
|
Вид на жительство
Регистрация: 03.06.2007
Сообщений: 368
Сказал спасибо: 3
Сказали Спасибо 59 раз(а) в 52 сообщении(ях)
|
Я немного устарел наверно,асм 8051стал подходить на megaAVR?
|
|
|
|
28.02.2009, 20:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 09.12.2007
Адрес: Новосибирск
Сообщений: 1,021
Сказал спасибо: 10
Сказали Спасибо 70 раз(а) в 63 сообщении(ях)
|
В принципе, зная архитектуру и систему команд 51-ого,
(и имея схему устройства)
можно восстановить алгоритм работы программы.
А дальше по алгоритму написать для Меги хоть на СИ,
хоть на asm.
__________________
И на камнях растут деревья!
|
|
|
|
28.02.2009, 21:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.01.2007
Сообщений: 1,747
Сказал спасибо: 2
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Сообщение от 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)...
Удачи!
-- Прилагается рисунок: --
__________________
Я, думаю, нужно подумать...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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 09:20 |
Часовой пояс GMT +4, время: 19:59.
|
|