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

 
 
> Slaa290 RTC Calendar
tsbp
сообщение Nov 4 2010, 18:06
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 4-11-10
Пользователь №: 60 649



Привет всем!
Может кто-то использовал библиотеку от ТИ RTC_Calendar.h (slaa290). Неправильно устанавливается дата setDate( int year, char month, char day);
Непойму в чем грабли.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 4 2010, 21:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Как я и предполагал проблема возникает при передаче параметров из СИ-шного модуля в ASM-функцию. У меня IAR EW430 5.10.6. В нем передача параметров в функцию setDate происходит через регистры R14, R13, R12.
Код
//   31   setDate(2010, 1, 1); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        MOV.B   #0x1, R14
        MOV.B   #0x1, R13
        MOV.W   #0x7da, R12
        CALL    #setDate

А в самой функции извлечение аргументов идет из R15, R14, R12
Код
            mov.b   r15,     r6    ; day into r6
            mov.b   r14,     r7    ; month into r7
            mov.w   r12,     r8    ; year into r8

Отсюда и вылезают неправильные вычисления. После верного указания регистров в функции, инициализация заработала корректно
Код
            mov.b   r14,     r6    ; day into r6
            mov.b   r13,     r7    ; month into r7
            mov.w   r12,     r8    ; year into r8

Правда в окне просмотра значений переменных C-CPY наблюдается некоторая неувязочка. Большинство переменных календаря отображаются как int, хотя описание всех их (кроме TI_year) идет как char. Опять какой-то глюк. Видимо от того, что переменные определены только в ASM. cranky.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 16:23
Рейтинг@Mail.ru


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