реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> среда программирования Keil uVision 4, ошибки в данной среде, отладка программы
NightVamp
сообщение Jan 8 2012, 10:55
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Здравствуйте! Пишу программу для мк АТ89С51RC в Keil uVision 4, впервые работаю в этой среде программирования, кроме того пишу программу полностью на ассемблере. Проблема в том, что не знаю с чего должна начинаться программа, с каких модулей и т.п. в это среде. Это раз. И ещё, при попытке компиляции возникает непонятная ошибка. Вот она:

Build target 'Target 1'
compiling main.c...
MAIN.C(3): error C129: missing ';' before 'EQU'
Target not created.

Дело не в переводе, никаких знаков препинания до EQU стоять не должно. Подскажите, как исправить ошибку и надо ли что-то написать в начале программы.

Прикрепленные файлы
Прикрепленный файл  __________________.txt ( 7.1 килобайт ) Кол-во скачиваний: 88
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 8 2012, 11:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(NightVamp @ Jan 8 2012, 14:55) *
compiling main.c...
MAIN.C(3): error C129: missing ';' before 'EQU'

Ваша программа находится в файле main.c ?
Расширение файла .с зарезервировано за файлами на языке Си. Keil пытается применить к Вашему файлу транслятор Си. Для ассемблера - расширение .а51
Go to the top of the page
 
+Quote Post
barabek
сообщение Jan 8 2012, 11:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(NightVamp @ Jan 8 2012, 20:55) *
Здравствуйте! Пишу программу для мк АТ89С51RC в Keil uVision 4, впервые работаю в этой среде программирования, кроме того пишу программу полностью на ассемблере. Проблема в том, что не знаю с чего должна начинаться программа, с каких модулей и т.п. в это среде. Это раз. И ещё, при попытке компиляции возникает непонятная ошибка.

Во-первых, на асме коментарии не как на Си, а ";".

Во-вторых, возьмите любой пример из examples и на базе его стройте.


Go to the top of the page
 
+Quote Post
NightVamp
сообщение Jan 8 2012, 11:22
Сообщение #4





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Цитата(Палыч @ Jan 8 2012, 19:11) *
Ваша программа находится в файле main.c ?
Расширение файла .с зарезервировано за файлами на языке Си. Keil пытается применить к Вашему файлу транслятор Си. Для ассемблера - расширение .а51


Я так и думала, что надо было сразу поменять расширение...Благодарю за помощь. Ещё один момент: не подскажете, как вставить в программу таблицу символов для клавиш клавиатуры и связать её с программой?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 8 2012, 11:39
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(NightVamp @ Jan 8 2012, 14:22) *
Я так и думала, что надо было сразу поменять расширение...Благодарю за помощь. Ещё один момент: не подскажете, как вставить в программу таблицу символов для клавиш клавиатуры и связать её с программой?


Посмотрите в примерах, поставляемых с КЕЙЛом, как там объявляются массивы констант.

P.S. Вот только зачем это на АСМе писать ? Пишите на Си, если можно, сэкономите уйму времени и сил ...

P.P.S. А еще у КЕЙЛа help есть, там это расписано. К сожалению, КЕЙЛ у меня не установлен, помочь не могу. Да и не писал я ничего на асме для x51 в КЕЙЛе. Для 80x86 массивы байтовых констант объявляются посредством директивы "db" ...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 8 2012, 11:45
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(NightVamp @ Jan 8 2012, 15:22) *
как вставить в программу таблицу символов для клавиш клавиатуры и связать её с программой?

Попробуйте перефразировать вопрос: внятно и понятно для других...
Go to the top of the page
 
+Quote Post
NightVamp
сообщение Jan 8 2012, 12:40
Сообщение #7





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Цитата(barabek @ Jan 8 2012, 19:21) *
Во-первых, на асме коментарии не как на Си, а ";".

Во-вторых, возьмите любой пример из examples и на базе его стройте.


Насчёт комментариев, я знаю, что на асме комменты начинаются с ; Однако решила попробовать ставить //, удобнее мне так. Как оказалось, не суть важно. За знаком // и в асм воспринимаются как комментарии, и ещё вариант: /*...*/, это наксколько знаю для делфи, но здесь тоже годится.

Цитата(kovigor @ Jan 8 2012, 19:39) *
Посмотрите в примерах, поставляемых с КЕЙЛом, как там объявляются массивы констант.

P.S. Вот только зачем это на АСМе писать ? Пишите на Си, если можно, сэкономите уйму времени и сил ...

P.P.S. А еще у КЕЙЛа help есть, там это расписано. К сожалению, КЕЙЛ у меня не установлен, помочь не могу. Да и не писал я ничего на асме для x51 в КЕЙЛе. Для 80x86 массивы байтовых констант объявляются посредством директивы "db" ...


Так нелязя на Си, на асм надо именно! Это программа для курсового проекта, на Си никак не примут.
Вот-вот, у меня в прикреплённом файле, в программе эта db и используется для таблицы знакогенератора семисегментных индикаторов! Возможно ли эту директиву снова использовать, но уже для клавиатуры?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 8 2012, 12:45
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(NightVamp @ Jan 8 2012, 15:40) *
Вот-вот, у меня в прикреплённом файле, в программе эта db и используется для таблицы знакогенератора семисегментных индикаторов! Возможно ли эту директиву снова использовать, но уже для клавиатуры?


Не можно, а нужно !

Эту директиву можно использовать хоть 1000 раз в одной и той же программе, всякий раз задавая байтовые константы. Можно задать как один байт, так и массив байтов. Кстати, для задания 16-разрядных слов используется "dw" ...

P.S. И вообще, зачем вам Кейл для АСМа ? Там с головой хватает компилятора командной строки:

http://www.atmel.com/dyn/products/tools_ca...ubfamily_id=770

просто для интереса открыл архив с компилятором для Windows. Внутри Help в виде PDFки, а в нем - описание db и еще много-много чего ...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 8 2012, 12:48
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(kovigor @ Jan 8 2012, 15:39) *
...объявляются массивы констант.
У ТС в программе объявлен массив констант, вероятно, требуется что-то другое...
Почему-то, только некоторые вопрошающие формулируют "правильно" вопросы. Остальные надуются на телепатов... Или сами не понимают: что им нужно? Хорошо сформулированный вопрос - половина решения!
Go to the top of the page
 
+Quote Post
NightVamp
сообщение Jan 8 2012, 13:01
Сообщение #10





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Цитата(Палыч @ Jan 8 2012, 19:45) *
Попробуйте перефразировать вопрос: внятно и понятно для других...


Перефразирую: В микроЭВМ есть клавиатура. На ней набираются некоторые значения, вообщем цифры. Для того, чтобы клавиша работала, "зажигалась", нужно присвоить ей свой код. Иначе говоря, эти коды клавиш или таблица символов нужны для взаимодействия с микроконтроллером. Так же как есть у меня в программе таблица символов для 7-сегментных индикаторов, должна быть похожая таблица и для клавиш. Я имела ввиду, как программно организовать включение клавиш, вот и всё.

Ну, если вам так не понятно, я не знаю как ещё описать такое вроде простое явление, как присутсвие клавиатуры в устройстве!

Создала всё как надо, и вылезла куча ошибок! Программа взята из книжки, в основном, так что код не может быть неправильный. Хотя, конечно, я кое-что добавила ещё. Если возможно, пробегитесь по программе, скажите, что там не так?
Build target 'Target 1'
assembling main.a51...
main.a51(1): error A68: UNKNOWN CONTROL OR BAD ARGUMENT(S)
main.a51(20): error A8: ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL
main.a51(51): error A45: UNDEFINED SYMBOL
main.a51(51): error A45: UNDEFINED SYMBOL
main.a51(54): error A45: UNDEFINED SYMBOL
main.a51(59): error A45: UNDEFINED SYMBOL
main.a51(60): error A45: UNDEFINED SYMBOL
main.a51(61): error A45: UNDEFINED SYMBOL
main.a51(62): error A45: UNDEFINED SYMBOL
main.a51(63): error A45: UNDEFINED SYMBOL
main.a51(64): error A45: UNDEFINED SYMBOL
main.a51(67): error A45: UNDEFINED SYMBOL
main.a51(68): error A45: UNDEFINED SYMBOL
main.a51(69): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
main.a51(70): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
main.a51(71): error A45: UNDEFINED SYMBOL
main.a51(72): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
main.a51(73): error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
main.a51(83): error A45: UNDEFINED SYMBOL
main.a51(84): error A45: UNDEFINED SYMBOL
main.a51(86): error A45: UNDEFINED SYMBOL
main.a51(93): error A45: UNDEFINED SYMBOL
main.a51(114): error A45: UNDEFINED SYMBOL
main.a51(134): error A48: DATA-ADDRESS EXPECTED
main.a51(152): error A45: UNDEFINED SYMBOL
main.a51(153): error A45: UNDEFINED SYMBOL
main.a51(157): error A45: UNDEFINED SYMBOL
main.a51(159): error A45: UNDEFINED SYMBOL
main.a51(179): error A38: NUMBER OF OPERANDS DOES NOT MATCH INSTRUCTION
main.a51(179): error A9: SYNTAX ERROR
main.a51(180): error A45: UNDEFINED SYMBOL
Target not created
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 8 2012, 13:05
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(NightVamp @ Jan 8 2012, 16:52) *
Ну, если вам так не понятно, я не знаю как ещё описать такое вроде простое явление, как присутсвие клавиатуры в устройстве!

Н-да... Если Вы научитесь "хорошо" формулировать вопросы, то работа пойдёт гораздо быстрее и плодотворнее...

"Таблица" (массив) констанд на ассемблере определяется как-то так (для байтовых констант):
Метка: .db константа1, константа2, константа3, ... ,константаN
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 8 2012, 13:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(NightVamp @ Jan 8 2012, 16:01) *
Создала всё как надо, и вылезла куча ошибок! Программа взята из книжки, в основном, так что код не может быть неправильный. Хотя, конечно, я кое-что добавила ещё. Если возможно, пробегитесь по программе, скажите, что там не так?


См. help КЕЙЛа. Если даже все так, то каждая среда имеет особенности в оформлении проекта. Например, вот как нужно оформлять проект для компилятора командной строки (пример в архиве):

http://www.atmel.com/dyn/products/tools_ca...ubfamily_id=770
Go to the top of the page
 
+Quote Post
NightVamp
сообщение Jan 8 2012, 13:22
Сообщение #13





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Цитата(Палыч @ Jan 8 2012, 21:05) *
Н-да... Если Вы научитесь "хорошо" формулировать вопросы, то работа пойдёт гораздо быстрее и плодотворнее...

"Таблица" (массив) констанд на ассемблере определяется как-то так (для байтовых констант):
Метка: .db константа1, константа2, константа3, ... ,константаN


Интересно...человек просит помощи, пытается объяснить, пусть даже не обладает отличным техническим языком...а вы в остроумии упражняетесь. Заметьте, kovigor, понял почему-то моё первое сообщение про эти коды клавиш и сазу написал про массив констант в хелпе кейла.

Раз мне смогли здесь ответить кроме вас, значит не так уж и плохо я формулирую вопросы.
Однако, всё равно, благодарю вас за помощь. Надеюсь, в следующем вашем сообщении не увижу сарказма.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 8 2012, 14:45
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(NightVamp @ Jan 8 2012, 17:22) *
...не обладает отличным техническим языком...а вы в остроумии упражняетесь.
Не упражняюсь я в остроумии!
Уж так меня научили: если есть какая-то техническая проблема, то нужно грамотно её сформулировать. Это позволит: 1) найти решение самому 2) поручить решение этой проблемы подчиненному 3) попросить помощи у других. Это всегда срабатывает! Этого (как мне кажется) не хватает многим вопрошающим... Пытаясь "правильно" сформулировать вопрос, Вы, зачастую, находите возможные пути решения; проблема из "размытой" становиться вполне конкретной (по меньшей мере - поставлен вопрос будет с использованием "правильных" технических терминов).
Цитата(NightVamp @ Jan 8 2012, 17:22) *
...в следующем вашем сообщении не увижу сарказма
Вовсе я над Вами не смеюсь! Я пытаюсь Вам помочь.
Go to the top of the page
 
+Quote Post
NightVamp
сообщение Jan 8 2012, 15:03
Сообщение #15





Группа: Участник
Сообщений: 10
Регистрация: 8-01-12
Пользователь №: 69 218



Цитата(Палыч @ Jan 8 2012, 22:45) *
Не упражняюсь я в остроумии!
Уж так меня научили: если есть какая-то техническая проблема, то нужно грамотно её сформулировать. Это позволит: 1) найти решение самому 2) поручить решение этой проблемы подчиненному 3) попросить помощи у других. Это всегда срабатывает! Этого (как мне кажется) не хватает многим вопрошающим... Пытаясь "правильно" сформулировать вопрос, Вы, зачастую, находите возможные пути решения; проблема из "размытой" становиться вполне конкретной (по меньшей мере - поставлен вопрос будет с использованием "правильных" технических терминов).
Вовсе я над Вами не смеюсь! Я пытаюсь Вам помочь.


Ладно, ладно, я поняла, что вы не хотели меня обидеть. Но и вы поймите, что уж я то точно знаю и понимаю, что мне нужно. Может просто не могу с первого раза очень правильно это сформулировать и донести до кого-либо по причине отсутствия технического опыта. вот и всё.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 04:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016