Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 29.11.2017
Сообщений: 10
1

Проблема с таймером 8051

16.06.2020, 16:56. Просмотров 160. Ответов 3
Метки нет (Все метки)

Как загрузить в таймер не константу, а вычисляемое выражение?
Допустим, в таймер нужно загрузить выражение -(A*1000)

Данный код не работает:
Assembler
1
2
mov TH0, #HIGH(NOT(A*1000)
mov TL0, #LOW(NOT(A*1000)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2020, 16:56
Ответы с готовыми решениями:

проблема с таймером 1
написал прогу в которой работает таймер1 в реале не рабоает, почему не понятно #include...

проблема с таймером
Добрый вечер. Начал недавно заниматься программированием микроконтроллеров (использую...

ATMega8 проблема с таймером
Вот такой вот косяк... <Изображение удалено> по прерыванию с int0 (сигнал с пульта) получаю...

Проблема с таймером на ассемблере
Всем доброго времени суток. Я только начал изучать ассемблер. До этого работал только на C. Вроде...

3
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,130
Записей в блоге: 6
16.06.2020, 17:21 2
Это асм. Такое выражение и не должно работать.
Вы должны написать код умножения и результат записать в регистры таймера.
0
1 / 1 / 0
Регистрация: 29.11.2017
Сообщений: 10
16.06.2020, 17:59  [ТС] 3
Да, думаю, вы правы, так сделать в asm не получится.
Пытался код умножения написать сам. Однако столкнулся с тем, что asm "не понимает" чисел больше, чем 255. Также, непонятно, как сменить знак числа.
Поэтому воспользовался таким кодом:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
T0_equ_minus_A_mul_1000:
        mov b, #250
        mul ab        
        rlc a
                mov r6, a  
        mov a, b
        rlc a
        mov r7, a  
        mov a, r6
        rlc a
        mov r6, a   
        mov a, r7
        rlc a
        mov r7, a   
 
        clr c
        mov a, r6
        cpl a
        mov r6, a   
 
        mov a, r7
        cpl a
        mov r7, a   
 
        xch a, r7
        addc a, #0
        mov TH0, a   
        mov a, r6
        mov TL0, a  
        ret
Возможно ли его упростить/сократить? Боюсь, не смогу объяснить его преподавателю
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,130
Записей в блоге: 6
16.06.2020, 18:09 4
Цитата Сообщение от krasav4ik228 Посмотреть сообщение
Однако столкнулся с тем, что asm "не понимает" чисел больше, чем 255.
МК 8-ми битный, а значит поддерживает работу с числами от 0 до 255.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2020, 18:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

проблема с асинхронным таймером
Доброго времени суток. Это мой первый проект и во многом я еще не разобрался, помогите пожалуйста...

Проблема с таймером TIM2
Добрый день! Нужна ваша помощь. Проблема в том, что в режиме отладки, сразу после включения...

проблема с таймером и прерыванием
Решил подключить к stm32vldiscovery двухразрядный семисегментный индикатор. Включить отдельно...

atmega8 проблема с таймером TIM0_OVF
Здравствуйте, уважаемые! Подскажите, пожалуйста, в чём может быть дело. Бьюсь уже четвёртый день....

Проблема с таймером в Center Aligned Mode
День добрый! Нужна помощь, два дня не могу решить проблему. Задача - с двух ног генерить ШИМ на...

Проблема с третьим таймером-счетчиком на Atmega128
Всем привет. Друзья нужна ваша помощь. Работаю с: Atmega128 в CodeVision AVR (2.04.4a). Запустил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.