Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
1

Вычислить значение на контроллере

23.10.2009, 02:09. Просмотров 4196. Ответов 18
Метки нет (Все метки)

Помогите плиз!! Задали написать уравнение

4(a-c)-3(5+c)+2(b-4) при а=31 b=71 c=10

вот моя программа(я новичёк в этом деле, только начали изучать) =(

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.include "2313def.inc"
 
.equ a = 31
.equ b = 71
.equ c = 10
 
.def d = R16
.def e = R17
.def f = R18
 
.dseg
g: .byte 1
 
.cseg
.org 0x0000 
    rjmp RESET       ; Обработка сброса
.org 0x0001  
    ;rjmp EXT_INT0   ; Обработка IRQ0
    reti
.org 0x0002
    ;rjmp EXT_INT1   ; Обработка IRQ1
    reti
.org 0x0003
    ;rjmp TIM_CAPT1  ; Обработка захвата таймера 1
    reti
.org 0x0004
    ;rjmp TIM_COMP1  ; Обработка совпадения таймера 1
    reti
.org 0x0005
    ;rjmp TIM_OVF1   ; Обработка переполнения таймера 1
    reti
.org 0x0006  
    ;rjmp TIM_OVF0   ; Обработка переполнения таймера 0
    reti
.org 0x0007
    ;rjmp UART_RXC   ; Обработка приема байта
    reti
.org 0x0008
    ;rjmp UART_DRE   ; Обработка освобождения UDR
    reti
.org 0x0009
    ;rjmp UART_TXC   ; Обработка передачи байта
    reti
.org 0x000a
    ;rjmp ANA_COMP   ; Обработка аналогового компаратора
    reti
 
reset:  ldi R19,   RAMEND
                out SPL, R19
 
              ldi r19,   (1 << SE) | (1 << SM)
 
              out MCUCR, r19, 
        
                        ldi d, а, с    ;загрузить непосредственное значение
              sub d          ;вычесть без переноса
 
    
              ldi e, c
              adc e          ;сложить с переносом
              adc e          ;сложить с переносом
              inc e          ;инкрементировать
        
 
         
             ldi f, b
             sbc f
             sbc f          ;вычесть с переносом     
        
 
             ldi d, e
             lsl d          ;логически сдвинуть влево
             lsl d
        
             lsl e
             dec e
             add d, e       ;сложение без переноса
 
             ldi d, f
             lsl f
             add d, f
        
    
             ldi zh, high (y)
             ldi zl, low  (y)
        
             st z, d
        
             sleep
             nop
                    nop
что тут не так? что ему надо?((((((

Добавлено через 50 минут
показывает 1 ошибку в 54 строке, что то связано с лексикой....но что ??уже всё перепробывала....а может там не 1 ошибка....я ведь впервый раз написала прогу....может я напутала?

Добавлено через 19 минут
помогите кто нибудь, всего одна ошибка осталась....
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2009, 02:09
Ответы с готовыми решениями:

Вычислить минимальное по абсолютной величине значение функции и соответствующее значение аргумента
Составить программу табулирования и исследования функции f(x) на заданном диапазоне изменения...

Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение
Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение. После этого...

Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение
Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение. После этого...

Вычислить минимальное по абсолютной величине значение функции и соответствующее значение аргумента
Необходимо составить блок-схему и программу табулирования и исследования функции F(x) на диапазоне...

Вычислить значение каждой суммы, если значение аргумента меняется с шагом 3
Выполнить задание 3 и 4

18
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 02:22 2
А там запятая после r19 не мешается ?
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 02:26  [ТС] 3
да вроде дело в запятой....но когда её удаляю....всё рано пишет ошибка в той строке

Добавлено через 2 минуты
вообщем если поставить там запятую, получатся остаётся 1 ошибка, а если её там удалить, то в сумме 2 ошибки ещё...(((
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 02:26 4
А текст ошибки привести ?
0
23.10.2009, 02:26
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 02:27  [ТС] 5
D:\lena_prog1\lena_prog1.asm(53): error: syntax error, unexpected ','
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 02:35 6
вообщем если поставить там запятую, получатся остаётся 1 ошибка, а если её там удалить, то в сумме 2 ошибки ещё...(((
Одну убираете, обнажаются остальные.

D:\lena_prog1\lena_prog1.asm(53): error: syntax error, unexpected ','
Видно же, что на нее он и ругается.

Кстати а почему в 56 строке 3 аргумента в команде?
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 02:37  [ТС] 7
мм...ну (a-c) это d .........по другому я не знаю как(
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 03:02 8
Я не знаю как программировать под сей девайс, но должно же в нем быть что-то вроде такого?
Assembler
1
2
ldi d,a
sub d,c
Да и в остальных командах точно по одному аргументу должно быть ?
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 03:11  [ТС] 9
D:\lena_prog1\lena_prog1.asm(55): error: Invalid character: 'а' (0xe0)
как понять эту ошибку, .....из-за того что три аргумента?....тогда как исправить....поменять d на a ?

Добавлено через 7 минут
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
............
                ldi d, b
        lsr d   
 
        ldi e, c
        inc e
 
        add d, e
        lsl e
        add d, e
 
        ldi e, b
        lsl e
        add d, e
        
        ldi e, 2
        add d, e
        
        ldi zh, high(f)
        ldi zl, low(f)
        
        st z, d
..................
Добавлено через 1 минуту
вот фрагмент правильной проги, для примера b/2+3(с+1)+b*2+2
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 07:25 10
Ну из него видно, что команды типа сложения, вычитания должны иметь по 2 аргумента
Assembler
1
2
sub из_чего_вычитается, что_вычитается
add к_чему_прибавляется, что_прибавляется
Понять что же твориться в программе #1 поста трудновато. Попробуйте переписать сами вычисления обдумывая что с чем складывается, вычитается или умножается при этом и не забывая записывать эти мысли в коментариях к коду.
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 13:50  [ТС] 11
(61): error: Invalid character: 'ñ' (0xf1)
скажите что эта ошибка означает.....при суммировании с переносом

Добавлено через 44 минуты
не осилить мне эту программу

Добавлено через 2 минуты
(61): error: Invalid character: 'ñ' (0xf1)
скажите что эта ошибка означает.....при суммировании с переносом


не осилить мне эту программу
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 13:55 12
(61): error: Invalid character: 'ñ' (0xf1)
Это значит, что в ваш исходник каким-то образом попал сей символ. Как не спрашивайте, возможно скопировали откуда-то.
Кстати код 0xf1 - это код символа русской буквы 'c' возможно, что вы там вставили ее вместо латинской 'c'
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 16:03  [ТС] 13
sbc f, b ;вычесть с переносом


скажите здесь нужны ещё какие то символы или скобки ... типо (0<<f<<5)

Добавлено через 3 минуты
(57): error: Invalid register
(71): error: Invalid number
(72): error: Wrong number of operands

и как эти понять

Добавлено через 1 час 29 минут
так как понять эти ошибки?

Добавлено через 27 минут
ну помогите же кто-нибудь((((((((((((((((не могу прогу написать
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
23.10.2009, 16:12 14
Повторюсь.
Попробуйте переписать сами вычисления обдумывая что с чем складывается, вычитается или умножается при этом и не забывая записывать эти мысли в комментариях к коду.
;вычесть с переносом
Это не комментарий а действие команды.
То, что получится покажите тут.
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 17:22  [ТС] 15
ок

Добавлено через 57 минут
Условие:............ ....................4(а-с)-3(5+с)+2(b-4)...............................................
Мой алгоритм:......................................................................................................
Код
(a-c)....=> d
   |
(5+c)...=> e
   |
(b-4)...=> f
   |
  d*4
   |
  e*3
   |
  f*2
   |
 (d*4)-(e*3)
   |
 (d*4)+(2*f)
   |
конец
Моя не совсем правильная программа......................................................................................
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
.include "2313def.inc"        -название файла
 
.equ a = 31                     - значение а
.equ b = 71                     - значение b
.equ c = 10                     - значение с
 
.def d = R16                    - присвоение ячейки ->d
.def e = R17                    - присвоение ячейки ->e
.def f = R18                     - присвоение ячейки ->f
 
.dseg
g: .byte 1
 
.cseg
.org 0x0000 
.........................;ниже приведены какие -то характеристики контроллера AT90S2313...................
    
    ;rjmp RESET      ; Обработка сброса
.org 0x0001  
    ;rjmp EXT_INT0   ; Обработка IRQ0
    reti
.org 0x0002
    ;rjmp EXT_INT1   ; Обработка IRQ1
    reti
.org 0x0003
    ;rjmp TIM_CAPT1  ; Обработка захвата таймера 1
    reti
.org 0x0004
    ;rjmp TIM_COMP1  ; Обработка совпадения таймера 1
    reti
.org 0x0005
    ;rjmp TIM_OVF1   ; Обработка переполнения таймера 1
    reti
.org 0x0006  
    ;rjmp TIM_OVF0   ; Обработка переполнения таймера 0
    reti
.org 0x0007
    ;rjmp UART_RXC   ; Обработка приема байта
    reti
.org 0x0008
    ;rjmp UART_DRE   ; Обработка освобождения UDR
    reti
.org 0x0009
    ;rjmp UART_TXC   ; Обработка передачи байта
    reti
.org 0x000a
    ;rjmp ANA_COMP   ; Обработка аналогового компаратора
    reti
reset:  ldi R19,   RAMEND
        out SPL, R19
 
         ldi r19,   (1 << SE) | (1 << SM)
        out MCUCR, r19 
..........................................................................................................................................
        
              ldi d, a          ;загружаем значение а в d
              subi d, c       ; вычетаем непосредственно значение (а-с) в ячейки d
              
    
              ldi   e, 5         ;загружаем непосредственно целое число 5 в e
             adiw  e, c        ;ссумируем непосредственное значение (с+5) в ячейки е
                            
             ldi  f, 4            ;загружаем непосредственно целое число 4 в ячейку f
             subi f, b           ;вычетаем непосредственно (b-4) в ячейке f
         
             
            ldi d, 4          ;загружаем непосредственно целое число 4 в d
     ldi e, 3          ;загружаем непосредственно целое число 3 в e
            
            lsl d, 4           ; логически сдвигаем влево (т.е. умножаем на 2) d * 4
            lsl e, 3          ; логически сдвигаем влево(т.е. умножаем  на 2) e * 3
            
           sub d,e          ;складываем d и e
           
          ldi f, 2           ;зановим в f ->2
          lsl f               ; умножаем f на 2
            
           ldi d, f
           add d, f
             
    ldi zh, high (g)
           ldi zl, low  (g)
             
 
      st z, d          ;конечное значение в ячейки d
        
        sleep
        nop             ;далее программа не выполняется
        nop
Добавлено через 2 минуты
фух что то в этом роде....местами я неуверенно писала...

Добавлено через 9 минут
asm(59): error: Invalid register
asm(69): error: Wrong number of operands
asm(70): error: Wrong number of operands
asm(73): error: Invalid number
вот такие ошибки выдало
0
Lolcht0
123 / 121 / 0
Регистрация: 30.03.2009
Сообщений: 766
23.10.2009, 17:30 16
да, еще в ldi нельзя писать ldi <register>, <register>

он потому и ldi, что можно писать только ldi <register>, < immediate>
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
23.10.2009, 19:37  [ТС] 17
кто-нибудь может мне её подкорректировать? чтоб она работала....очень буду благодарна.......а то я с нею уже несколько дней мучаюсь...

Добавлено через 21 минуту
вот для примера правильная прога, только уравнение другое......b/2 +3(с+1)+b*2 +2..................

вот прога .................................................................................................
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
.include "2313def.inc"
 
.equ b = 15
.equ c = 7
 
.def d = R16
.def e = R17
 
.dseg
f: .byte 1
 
.cseg
.org 0x0000 
    rjmp RESET      ; Обработка сброса
.org 0x0001  
    ;rjmp EXT_INT0   ; Обработка IRQ0
    reti
.org 0x0002
    ;rjmp EXT_INT1   ; Обработка IRQ1
    reti
.org 0x0003
    ;rjmp TIM_CAPT1  ; Обработка захвата таймера 1
    reti
.org 0x0004
    ;rjmp TIM_COMP1  ; Обработка совпадения таймера 1
    reti
.org 0x0005
    ;rjmp TIM_OVF1   ; Обработка переполнения таймера 1
    reti
.org 0x0006  
    ;rjmp TIM_OVF0   ; Обработка переполнения таймера 0
    reti
.org 0x0007
    ;rjmp UART_RXC   ; Обработка приема байта
    reti
.org 0x0008
    ;rjmp UART_DRE   ; Обработка освобождения UDR
    reti
.org 0x0009
    ;rjmp UART_TXC   ; Обработка передачи байта
    reti
.org 0x000a
    ;rjmp ANA_COMP   ; Обработка аналогового компаратора
    reti
 
reset:  ldi R18, RAMEND
    out SPL, R18
 
        ldi r18, (1 << SE) | (1 << SM)
                      out MCUCR, r18
 
                      ldi d, b
        lsr d   
 
        ldi e, c
        inc e
 
        add d, e
        lsl e
        add d, e
 
        ldi e, b
        lsl e
        add d, e
        
        ldi e, 2
        add d, e
        
        ldi zh, high(f)
        ldi zl, low(f)
        
        st z, d
        
        sleep
        nop
        nop

........................................................................................................................ ..............
помогите пожалуйста !!! сдавать надо.....

Добавлено через 19 минут
Goodwin98, скажите, вы мне поможите с программой?
0
Lyki
0 / 0 / 0
Регистрация: 23.10.2009
Сообщений: 10
26.10.2009, 00:28  [ТС] 18
программисты, где же вы???

Добавлено через 1 минуту
что, никто не может решить уравнение?
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
26.10.2009, 07:56 19
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
.include "2313def.inc"        -название файла
 
.equ a = 31 ;                    - значение а
.equ b = 71 ;                    - значение b
.equ c = 10 ;                    - значение с
 
.def d = R16 ;                   - присвоение ячейки ->d
.def e = R24 ;                   - присвоение ячейки ->e
.def f = R18 ;                    - присвоение ячейки ->f
 
.dseg
g:
.byte 1
 
.cseg
.org 0x0000 
;....................;ниже приведены какие -то характеристики контроллера AT90S2313...................
 
;rjmp RESET      ; Обработка сброса
.org 0x0001  
;rjmp EXT_INT0   ; Обработка IRQ0
    reti
.org 0x0002
;rjmp EXT_INT1   ; Обработка IRQ1
    reti
.org 0x0003
;rjmp TIM_CAPT1  ; Обработка захвата таймера 1
    reti
.org 0x0004
;rjmp TIM_COMP1  ; Обработка совпадения таймера 1
    reti
.org 0x0005
;rjmp TIM_OVF1   ; Обработка переполнения таймера 1
    reti
.org 0x0006  
;rjmp TIM_OVF0   ; Обработка переполнения таймера 0
    reti
.org 0x0007
;rjmp UART_RXC   ; Обработка приема байта
    reti
.org 0x0008
;rjmp UART_DRE   ; Обработка освобождения UDR
    reti
.org 0x0009
;rjmp UART_TXC   ; Обработка передачи байта
    reti
.org 0x000a
;rjmp ANA_COMP   ; Обработка аналогового компаратора
    reti
reset:
    ldi R19,   RAMEND
    out SPL, R19
    
    ldi r19,   (1 << SE) | (1 << SM)
    out MCUCR, r19 
;...................................................................................
    
    ldi d, a          ;загружаем значение а в d
    subi d, c       ; вычетаем непосредственно значение (а-с) в ячейки d
    
    
    ldi   e, 5         ;загружаем непосредственно целое число 5 в e
    adiw  e, c        ;ссумируем непосредственное значение (с+5) в ячейки е
    
    ldi  f, b            ;загружаем непосредственно целое число 4 в ячейку f
    subi f, 4           ;вычетаем непосредственно (b-4) в ячейке f
    
    
    lsl d, 2           ; логически сдвигаем влево (т.е. умножаем на 4) d * 4
 
    sub d,e
    sub d,e
    sub d,e          ;складываем d и e
    
    lsl f               ; умножаем f на 2
    
    add d, f
    
    ldi zh, high (g)
    ldi zl, low  (g)
    
    
    st z, d          ;конечное значение в ячейки d
    
    sleep
    nop             ;далее программа не выполняется
    nop
1
26.10.2009, 07:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2009, 07:56

Вычислить среднеарифметическое значение элементов массива и определить минимальное положительное значение
Необходимо сформировать двумерный массив A(3x9), используя генератор случайных чисел на интервале...

Дан многочлен. вычислить его значение в точке х (значение х вводится с клавиатуры)
помогите пожалуйста решить задачку, завтра зачет, а я не могу ее решить=( Дан многочлен. вычислить...

Вычислить значение аргумента x, значение функции y, max и min функций
где диапазон изменения аргумента -2 &lt;= x &lt;=3 , шаг 0,1


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

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

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