Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Задачка по мк51
разработать программу, формирующую в регистре DPTR дополнительный код числа минус 5000 (двухбайтовый формат);
Сделал во такую программку:
MOV DPH,#10H ;
MOV DPL,#00H ;
MOV A,#ECH ;первый байт кода в аккумуляторе
MOVX @DPTR,A ;первый байт кода в памяти программы
MOV A,#78H ;второй байт кода в аккумуляторе
MOVX @DPTR,A ;второй байт кода в памяти
INC DPTR ;наращивание указателя памяти
END
Компилятор ругается вот так:
1 ;начало программы
2 0000 758310 MOV DPH,#10H ;
3 0003 758200 MOV DPL,#00H ;
Error in 4: Undefined label: ECH
MOV A,#ECH ;первый байт кода в аккумуляторе
^
4 0006 7400 MOV A,#ECH ;первый байт кода в аккумуляторе
5 0008 F0 MOVX @DPTR,A ;первый байт кода в памяти программы
6 0009 7478 MOV A,#78H ;второй байт кода в аккумуляторе
7 000B A3 INC DPTR ;наращивание указателя памяти
8 000C F0 MOVX @DPTR,A ;второй байт кода в памяти
9 000D END
Errors: 1 #######
Bytes: 13 # iz2 #
CRC: EFC8 #######
Подскажите возможные ошибки или предложите свою прогу.Заранее спасибо.
Сделал во такую программку:
MOV DPH,#10H ;
MOV DPL,#00H ;
MOV A,#ECH ;первый байт кода в аккумуляторе
MOVX @DPTR,A ;первый байт кода в памяти программы
MOV A,#78H ;второй байт кода в аккумуляторе
MOVX @DPTR,A ;второй байт кода в памяти
INC DPTR ;наращивание указателя памяти
END
Компилятор ругается вот так:
1 ;начало программы
2 0000 758310 MOV DPH,#10H ;
3 0003 758200 MOV DPL,#00H ;
Error in 4: Undefined label: ECH
MOV A,#ECH ;первый байт кода в аккумуляторе
^
4 0006 7400 MOV A,#ECH ;первый байт кода в аккумуляторе
5 0008 F0 MOVX @DPTR,A ;первый байт кода в памяти программы
6 0009 7478 MOV A,#78H ;второй байт кода в аккумуляторе
7 000B A3 INC DPTR ;наращивание указателя памяти
8 000C F0 MOVX @DPTR,A ;второй байт кода в памяти
9 000D END
Errors: 1 #######
Bytes: 13 # iz2 #
CRC: EFC8 #######
Подскажите возможные ошибки или предложите свою прогу.Заранее спасибо.
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Задачка по мк51
alyarma писал(а):Подскажите возможные ошибки
Код: Выделить всё
MOV A,#ECH ;первый байт кода в аккумуляторе..т.е. сделать все за Вас ?alyarma писал(а):....предложите свою прогу.
Re: Задачка по мк51
Дополнительный код -5000 дес = 0хEC78
Если задание поместить этот код в dptr, то тогда
mov dph,#ech
mov dpl,#78h
и все.
Если у вас задание разместить этот код в памяти по адресу 0х1000 используя dptr , то тогда вы не сильно ошиблись:
mov dph,#10h
mov dpl,#00h
mov a,#ech
movx @dptr,a
inc dptr
mov a,#78h
movx @dptr,a
inc dptr (если надо)
Для компилятора пишите текст программы только маленькими буквами.
Прилагаю архив, там программатор для АТ89с1051(2051,4051) схема+программа на паскале +описание , схема+прошивка+описание часов на АТ89С2051 и проект на асме вместе с компилятором для мк51(и не только). Посмотрите. Есть бета версия прошивки для этой конструкции часов (кое-что переписано и исправлено, добавлены мелодии) - это если понадобится кому-то, выложу
Если задание поместить этот код в dptr, то тогда
mov dph,#ech
mov dpl,#78h
и все.
Если у вас задание разместить этот код в памяти по адресу 0х1000 используя dptr , то тогда вы не сильно ошиблись:
mov dph,#10h
mov dpl,#00h
mov a,#ech
movx @dptr,a
inc dptr
mov a,#78h
movx @dptr,a
inc dptr (если надо)
Для компилятора пишите текст программы только маленькими буквами.
Прилагаю архив, там программатор для АТ89с1051(2051,4051) схема+программа на паскале +описание , схема+прошивка+описание часов на АТ89С2051 и проект на асме вместе с компилятором для мк51(и не только). Посмотрите. Есть бета версия прошивки для этой конструкции часов (кое-что переписано и исправлено, добавлены мелодии) - это если понадобится кому-то, выложу
- Вложения
-
- progx051.rar
- (408.08 КБ) 1427 скачиваний
C0FFEE=12648430
Re: Задачка по мк51
Проблема с ECH устранена,действительно нужно было написать 0ECH.
Прога компилируется,но сам ассемблер теперь ругается вот так:
На строчке - MOVX @DPTR,A
Ошибка: Trap:Undefined address:X=1000H
Листинг проги:
mov dph,#10h
mov dpl,#00h
mov a,#0ech
movx @dptr,a
inc dptr
mov a,#78h
movx @dptr,a
end
Прога компилируется,но сам ассемблер теперь ругается вот так:
На строчке - MOVX @DPTR,A
Ошибка: Trap:Undefined address:X=1000H
Листинг проги:
mov dph,#10h
mov dpl,#00h
mov a,#0ech
movx @dptr,a
inc dptr
mov a,#78h
movx @dptr,a
end
Re: Задачка по мк51
Мяу всем..
Странно, у мя не ругается:
Может у тя ассемблек "кривой" или хочет что-бы перед программой ему что-то определили, адреса или прочее..
Попробуй написать в начале директиву ORG, как у мя написано..
Пользуюсь Металинк-асмом..
P.S. pyzh_man, благодарю за протекцию..
Странно, у мя не ругается:
Код: Выделить всё
1 $NOMOD
2 $NOLIST
174 $LIST
175 $TITLE(Encoder_mini)
176 $PAGEWIDTH(132)
177 $NOPAGING
178 ;----------
179 ; Начало программы.
180 ;----------
0000 181 org 0h
182 ;
0000 758310 183 mov dph,#10h
0003 758200 184 mov dpl,#00h
0006 74EC 185 mov a,#0ECh
0008 F0 186 movx @dptr,a
0009 A3 187 inc dptr
000A 7478 188 mov a,#78h
000C F0 189 movx @dptr,a
190 ;
191 end
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUNDМожет у тя ассемблек "кривой" или хочет что-бы перед программой ему что-то определили, адреса или прочее..
Попробуй написать в начале директиву ORG, как у мя написано..
Пользуюсь Металинк-асмом..
P.S. pyzh_man, благодарю за протекцию..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Задачка по мк51
МитяРа писал(а):Мяу всем..
Странно, у мя не ругается:Код: Выделить всё
1 $NOMOD
2 $NOLIST
174 $LIST
175 $TITLE(Encoder_mini)
176 $PAGEWIDTH(132)
177 $NOPAGING
178 ;----------
179 ; Начало программы.
180 ;----------
0000 181 org 0h
182 ;
0000 758310 183 mov dph,#10h
0003 758200 184 mov dpl,#00h
0006 74EC 185 mov a,#0ECh
0008 F0 186 movx @dptr,a
0009 A3 187 inc dptr
000A 7478 188 mov a,#78h
000C F0 189 movx @dptr,a
190 ;
191 end
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
Может у тя ассемблек "кривой" или хочет что-бы перед программой ему что-то определили, адреса или прочее..
Попробуй написать в начале директиву ORG, как у мя написано..
Пользуюсь Металинк-асмом..
P.S. pyzh_man, благодарю за протекцию..
Поставил,без изменений.
Компиляция и у меня проходит без ошибок.Ругается именно ассемблер,когда пытаешься запустить прогу.
Re: Задачка по мк51
Давай в начале с терминологией разберёмся..alyarma писал(а):Компиляция и у меня проходит без ошибок.Ругается именно ассемблер,когда пытаешься запустить прогу.
Компилятор и есть ассемблер..
Запустить программу ты можешь в симуляторе или в отладчике..
После компиляции программы в машинный код ты что запускаешь?
P.S. не цитируй предыдущий пост если сразу за ним отвечаешь, или цитируй только часть, на которую отвечаешь..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Задачка по мк51
скорее всего латиница-кирилица где-то прермешались
"Error in 4: Undefined label: ECH
MOV A,#ECH ;первый байт кода в аккумуляторе"
в данном случае #ech воспиринято как имя метки (сгенерирован по ошибке почему-то код 7400), при том,
что в других случаях компилятор отработал верно (MOV A,#78H = 7478)
перепиши внимательно заново текст исходника
брр... оффтоп...
пользуйтесь компиляторами с хорошо изученными иописаниями...
"Error in 4: Undefined label: ECH
MOV A,#ECH ;первый байт кода в аккумуляторе"
в данном случае #ech воспиринято как имя метки (сгенерирован по ошибке почему-то код 7400), при том,
что в других случаях компилятор отработал верно (MOV A,#78H = 7478)
перепиши внимательно заново текст исходника

брр... оффтоп...
пользуйтесь компиляторами с хорошо изученными иописаниями...
- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Задачка по мк51
Что-то мне подсказывает, что у топик-стартера задача заключается не в подсчете на калькуляторе дополнительного кода числа 5000 и отправке его (зачем?) в ячейку внешней памяти по адресу 1000h. А именно в том, чтобы вычислить программно этот код и поместить в dptr:
Проверено в Keil µVision4:
Это может выглядеть так, вариант:alyarma писал(а):разработать программу, формирующую в регистре DPTR дополнительный код числа минус 5000 (двухбайтовый формат);
Код: Выделить всё
org 0
jmp start
start:
mov dptr, #5000 ; помещаем 5000 в dptr временно
mov a, dpl ; мл. байт числа в аккумулятор
cpl a ; инвертируем акк.
mov dpl, a ; отправляем обратно
mov a, dph ; ст. байт числа в аккумулятор
cpl a ; инвертируем акк.
mov dph, a ; отправляем обратно
inc dptr ; добавляем 1
; все, у нас в dptr дополнительный код числа 5000, что и означает -5000 или 0ec78h
endКод: Выделить всё
Build target 'Target 1'
linking...
Program Size: data=8.0 xdata=0 code=16
"irr1" - 0 Error(s), 0 Warning(s).- IM1
- Грызет канифоль
- Сообщения: 268
- Зарегистрирован: Вт фев 16, 2010 12:10:38
- Откуда: Воронеж, Россия
Re: Задачка по мк51
Осмелюсь поинтересоваться, а что у Вас с программой? Столько народу советы давали, получилось запустить (сдать)?alyarma писал(а):разработать программу, формирующую в регистре DPTR дополнительный код числа минус 5000 (двухбайтовый формат);
Задачка по мк51.Требуется помощ магистров!
Задача:Карта опроса 16 датчиков (массив однобайтовых чисел без знака) записана в ОЗУ МП серии МК51 начиная с ячейки 20H. Начиная с ячейки 30Н сформировать копию массива, изменив порядок следования чисел на обратный, а минимальное значение вывести на светодиоды порта вывода Р1.
Первая часть задачки реализована, а вот вторая (выделенная большим шрифтом) что-то не получается.
Подскажите в чём проблема.Заранее спасибо.
Скриншот ошибки.
Первая часть задачки реализована, а вот вторая (выделенная большим шрифтом) что-то не получается.
Подскажите в чём проблема.Заранее спасибо.
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV P1,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
M2: MOV R3,#10H
MOV A,P1
SUBB A,@R0
JC M3
M3: MOV P1,A
INC R0
DJNZ R3,M2
END Скриншот ошибки.
Re: Задачка по мк51.Требуется помощ магистров!
Очень смущает вот эти строчки:
Код: Выделить всё
JC M3
M3: MOV P1,A[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Задачка по мк51.Требуется помощ магистров!
Во-первых: второй цикл сделан не правильно - R3 забыли уменьшать, и метка M2 должна быть на следующей строке после присвоения R3 количества проходов.
Во-вторых МитяРа написал.
PS: И лучше не хранить информацию в P1, а использовать регистр, и в конце программы вывести его значение в порт.
Во-вторых МитяРа написал.
PS: И лучше не хранить информацию в P1, а использовать регистр, и в конце программы вывести его значение в порт.
Re: Задачка по мк51.Требуется помощ магистров!
Например B..Engineer_Keen писал(а):информацию в P1, а использовать регистр,
P.S. alyarma, а чё, с виндовыми симуляторами напряг?
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Задачка по мк51.Требуется помощ магистров!
P.P.S. Только щас вспомнил, alyarma, ты зачем ещё одну тему создал? У тя-же уже есть одна: viewtopic.php?t=58472
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Задачка по мк51.Требуется помощ магистров!
МитяРа писал(а):P.P.S. Только щас вспомнил, alyarma, ты зачем ещё одну тему создал? У тя-же уже есть одна: viewtopic.php?t=58472
Ту тему забыл закрыть,сейчас закрою.
Просто эта тема про мк51)Вот и создал новую)
Поправил,теперь код выглядит вот так,но всё равно не записывает минимальное значение в порт P1:
Код: Выделить всё
ORG 0
MOV R0,#2FH
MOV R1,#30H
MOV R3,#10H
MOV B,#0FFH
M1: MOV A,@R0
MOV @R1,A
DEC R0
INC R1
DJNZ R3,M1
MOV R3,#10H
M2: MOV A,B
SUBB A,@R0
JC M3
M3: INC R0
DJNZ R3,M2
MOV P1,B
END - Вложения
-
- 222.JPG
- (94.66 КБ) 1500 скачиваний
Последний раз редактировалось alyarma Чт ноя 24, 2011 14:25:39, всего редактировалось 1 раз.
Re: Задачка по мк51.Требуется помощ магистров!
А там про што была? Про мк52 что-ли?alyarma писал(а):Просто эта тема про мк51
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Re: Задачка по мк51.Требуется помощ магистров!
МитяРа писал(а):А там про што была? Про мк52 что-ли?alyarma писал(а):Просто эта тема про мк51
мк48:)
И R3 я не забыл уменьшать.Оно уменьшается в метке M3,где происходит зацикливание.
Re: Задачка по мк51.Требуется помощ магистров!
alyarma писал(а):Поправил,теперь код выглядит вот так
Повторю: поясни назначение вот этих двух строчек:
Код: Выделить всё
JC M3
M3: INC R0Мя понимаю, что у них мнемоника команд практически одинакова, но название темы-то было про МК51..alyarma писал(а):мк48:)
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]