Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/24: Рейтинг темы: голосов - 24, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12

Программа на Асм

20.05.2010, 23:47. Показов 5274. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
LIST P=16F628
#include <P16F628.INC>
 
temp0    EQU    H'20'   
temp1    EQU    H'21'   
temp2    EQU    H'22'   
temp3    EQU    H'23'   
temp4    EQU    H'24'   
temp5    EQU    H'25'   
temp6    EQU    H'26'   
temp7    EQU    H'27'   
temp8    EQU    H'28'   
i EQU   H'29'   
t    EQU    H'30'   
k    EQU    H'31'   
N0   EQU    H'32'   
N1   EQU    H'33'   
 
org  0
goto    Start
 
Start
 
clrf     PORTA  
bsf  STATUS,RP0 
movlw    B'10000000'
movwf    TRISB 
clrf     TRISA 
bcf  STATUS,RP0 
clrf     PORTB
 
k1  
clrf     temp0  
clrf     temp1  
clrf     temp2
clrf     temp3
clrf     temp4
clrf     temp5
clrf     temp6
clrf     temp7
clrf     temp8
clrf     i
clrf     t
 
call     INDIKATOR
btfss    PORTB,7 
goto     k1
 
MOVLW   1   
MOVWF   i   
 
MOVLW   1   
MOVWF   temp0   
 
call     ZVUK
goto c1
 
k2  
call     DELAY 
 
c1
call     INDIKATOR
btfsc    PORTB,7
goto     k3 
 
c2
btfss i,0 
goto c1 
 
 
k7  
call     INCTIM
goto     k2
 
k3 
btfsc    PORTB,7
goto     k3
 
movf i,0
movwf    t 
incf i 
 
btfss    t,0
goto k1
goto c2
 
 
INCTIM
movlw    0xe6 ;230 раз 
movwf    temp4
 
k8  decfsz   temp4,1
goto     k8
 
;увеличение до 0,9 сек
 
incf     temp0
movf temp0,0 
sublw    9  
btfsc    STATUS,0   
goto     I0 
clrf     temp0  
 
 
;увеличение до 9 сек
 
 
incf     temp1  
movf temp1,0
sublw    9  
btfsc    STATUS,0   
goto     I1 
clrf     temp1  
 
;увеличение до 59 сек
 
incf     temp2  
movf temp2,0
sublw    5  
btfsc    STATUS,0
goto     I2 
clrf     temp2  
 
;увеличение 10 мин
 
incf     temp3
movf temp3,0
sublw    9  
btfsc    STATUS,0   
goto     I3 
clrf     temp3  
 
return  
 
I0
nop
nop
nop
nop
nop 
 
I1
nop
nop
nop
nop
nop 
 
I2  nop
nop
nop
nop
nop 
 
I3  nop
nop
nop
nop
nop 
 
return  
 
INDIKATOR
movf     temp0,0 
call     KOD
movwf    PORTB
bsf  PORTA,0 
nop
nop
nop
nop
bcf  PORTA,0
 
movf     temp1,0
call     KOD
movwf    PORTB
bsf  PORTA,1
nop
nop
nop
nop
bcf  PORTA,1
 
movf     temp2,0
call     KOD
movwf    PORTB
bsf  PORTA,2
nop
nop
nop
nop
bcf  PORTA,2
 
movf     temp3,0
call     KOD
movwf    PORTB
bsf  PORTA,3
nop
nop
nop
nop
bcf  PORTA,3
 
return
 
KOD 
addwf    PCL
retlw    B'00111111'    ;код 0
retlw    B'00000110'    ;код 1
retlw    B'01011011'    ;код 2
retlw    B'01001111'    ;код 3
retlw    B'01100110'    ;код 4
retlw    B'01101101'    ;код 5
retlw    B'01111101'    ;код 6
retlw    B'00000111'    ;код 7
retlw    B'01111111'    ;код 8
retlw    B'01101111'    ;код 9
 
ZVUK    
movlw    100
movwf    temp4
 
k6 
btfsc    PORTB,7
goto     k6
 
bsf  PORTA,4
 
k5  
decfsz   temp4,1
goto     k5
 
bcf  PORTA,4
 
call DELAY
call     INDIKATOR
return 
 
DELAY
 
movlw    0x81 ;128
MOVWF   k    ;k=ff=255
Cycl_1  
movlw    0xff 
movwf    N0 
 
Cycl_0  
decfsz   N0,1   
goto     Cycl_0
decfsz   k,1    
goto     Cycl_1
 
return  
 
end
Прокомментируйте пожалуйста как работает, если есть такая возможность....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2010, 23:47
Ответы с готовыми решениями:

Модульное программирование(связь асм-асм и асм-пасм)
Очень нужна помощь, сама сделала все что могла...просто не понимаю почему не работает( задание: сделать программу из модулей с помощью...

Нужна программа Асм (Нетбинс)
1)Найти радиус вписанной окружности в равносторонний треугольник. Величина сторон известна. 2)Составить программу, в которой вводятся...

Зависает программа при обращении к асм-модулю
Программа на паскале для вычисления целочисленного результата выражения + то же самое на асм-модуле, вызываемом паскалем. Паскаль считает...

24
 Аватар для denver
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
21.05.2010, 08:14
Вот даташит микропроцессора, на странице 114 есть описание операторов.
Вложения
Тип файла: pdf 000183.pdf (1.68 Мб, 83 просмотров)
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
21.05.2010, 14:06
а чего инклюд заомментирован?
по идее компилятор при таком раскладе просто пошлет подальше, он же на кашпировский, чтобы угадывать, где регистр статуса, и остальные служебные тоже...
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
22.05.2010, 02:50  [ТС]
инклюд незакоменнтирован
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
22.05.2010, 10:43
Цитата Сообщение от den1ss Посмотреть сообщение
#include <P16F628.INC>
склероз, однако - асмом давно не занимался, а в шеле, где в последнее время колупаюсь, # - как раз знак коментария.

сорри!
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
22.05.2010, 18:01  [ТС]
ничего))

Добавлено через 5 часов 27 минут
Цитата Сообщение от denver Посмотреть сообщение
Вот даташит микропроцессора, на странице 114 есть описание операторов.
Есть подобное на русском?
0
 Аватар для denver
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
22.05.2010, 18:40
конечно
Миниатюры
Программа на Асм  
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
23.05.2010, 00:22  [ТС]
Спасибо, теперь буду разбираться))

Добавлено через 3 часа 33 минуты
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Почему именно так объявлены переменные?
temp0    EQU    H'20'   
temp1    EQU    H'21'   
temp2    EQU    H'22'   
temp3    EQU    H'23'   
temp4    EQU    H'24'   
temp5    EQU    H'25'   
temp6    EQU    H'26'   
temp7    EQU    H'27'   
temp8    EQU    H'28'   
i EQU   H'29'   
t    EQU    H'30'   
k    EQU    H'31'   
N0   EQU    H'32'   
N1   EQU    H'33'   
  
incf     /для чего применяется инкремент?
nop    /что за холостая команда?
Ответьте пожалуйста, буду благодарен)

Добавлено через 1 час 53 минуты
То есть не могу понять, почему в P16F628.INC я таких объявлений не могу найти
0
 Аватар для denver
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
23.05.2010, 13:29
Инкремент (увеличение) — операция увеличения на некоторую фиксированную величину, или же в некоторых случаях на изменяемую. Обратную операцию называют декремент (уменьшение).
Цитата Сообщение от den1ss Посмотреть сообщение
incf i
увеличивает i на единицу.

Цитата Сообщение от den1ss Посмотреть сообщение
nop
команда которая ничего не делает
В информатике NOP или NOOP (сокращение от английского: «No OPeration») инструкция процессора на языке ассемблера, или команда протокола, которая предписывает ничего не делать.
NOP’ы обычно используются:
для создания задержки на определённое время, например, в целях синхронизации с другими устройствами в компьютере. В частности: в микроконтроллерах AVR цифровые порты имеют очень высокое быстродействие, и между коммутацией выходных портов и считыванием входных рекомендуется установить NOP, чтобы схема успела стабилизироваться;
для заполнения памяти программ при выравнивании;
для предотвращения ошибок в аппаратной части процессора;
для передачи управления при конвейерной организации вычислительного процесса;
как заполнитель во время разработки программы;
Цитата Сообщение от den1ss Посмотреть сообщение
Почему именно так объявлены переменные?
К примеру про EQU
ТТТ equ 01H
При написании программы облегчает восприятие, можно написать:

CLRF 01h
а, можно:
CLRF TTT
Во втором случае, ассемблер при компиляции подставит вместо ТТТ - 01Н.
А так как, по адресу 01Н находится регистр TMR0, он и будет очищен.
В МПЛАБЕ есть файлы с расширением xxx.INC, на каждый контроллер, например
P16F84а.INC
там обозначены все регистры и т.д.
добавляется этот файл дерективой

include "p16f84а.inc"
гляньте все станет ясно.

>STATUS EQU 3 тоже самое что и запись 03Н - адрес регистра, работать будет но не
красиво.
>PORTA EQU 5
>PORTB EQU 6
Так же, и биты в любом регистре можно обозначить.

Добавлено через 32 минуты
кстати место
Цитата Сообщение от den1ss Посмотреть сообщение
temp0 EQU H'20'
можно написать temp0 = H'20'
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
23.05.2010, 14:45  [ТС]
Цитата Сообщение от denver Посмотреть сообщение

include "p16f84а.inc"
гляньте все станет ясно.
Да я сообразил сразу, что ссылается на этот файл, но там как раз h"20" и т.д. я не нашел, или они записаны в другом коде?
0
 Аватар для denver
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
23.05.2010, 15:46
Должен быть в папке с МПЛАБ-ом, в каком то из каталогов. Но в вашем случае это не p16f84а.inc а P16F628.INC вот его и ищите. Посмотрите где находятся все файлы с расширение *.inc. Там и покопайтесь
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
23.05.2010, 17:23  [ТС]
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
        LIST
; P16F628.INC  Standard Header File, Version 1.01    Microchip Technology, Inc.
        NOLIST
 
; This header file defines configurations, registers, and other useful bits of
; information for the PIC16F628 microcontroller.  These names are taken to match
; the data sheets as closely as possible.
 
; Note that the processor must be selected before this file is
; included.  The processor may be selected the following ways:
 
;       1. Command line switch:
;               C:\ MPASM MYFILE.ASM /PIC16F628
;       2. LIST directive in the source file
;               LIST   P=PIC16F628
;       3. Processor Type entry in the MPASM full-screen interface
 
;==========================================================================
;
;       Revision History
;
;==========================================================================
 
;Rev:   Date:    Reason:
;1.01   13 Sept 2001  Added _DATA_CP_ON and _DATA_CP_OFF
;1.00   10 Feb 1999 Initial Release
 
;==========================================================================
;
;       Verify Processor
;
;==========================================================================
 
        IFNDEF __16F628
           MESSG "Processor-header file mismatch.  Verify selected processor."
        ENDIF
 
;==========================================================================
;
;       Register Definitions
;
;==========================================================================
 
W                            EQU     H'0000'
F                            EQU     H'0001'
 
;----- Register Files------------------------------------------------------
 
INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'
PORTB                        EQU     H'0006'
PCLATH                       EQU     H'000A'
INTCON                       EQU     H'000B'
PIR1                         EQU     H'000C'
TMR1L                        EQU     H'000E'
TMR1H                        EQU     H'000F'
T1CON                        EQU     H'0010'
TMR2                         EQU     H'0011'
T2CON                        EQU     H'0012'
CCPR1L                       EQU     H'0015'
CCPR1H                       EQU     H'0016'
CCP1CON                      EQU     H'0017'
RCSTA                        EQU     H'0018'
TXREG                        EQU     H'0019'
RCREG                        EQU     H'001A'
CMCON                        EQU     H'001F'
 
OPTION_REG                   EQU     H'0081'
TRISA                        EQU     H'0085'
TRISB                        EQU     H'0086'
PIE1                         EQU     H'008C'
PCON                         EQU     H'008E'
PR2                          EQU     H'0092'
TXSTA                        EQU     H'0098'
SPBRG                        EQU     H'0099'
EEDATA                       EQU     H'009A'
EEADR                        EQU     H'009B'
EECON1                       EQU     H'009C'
EECON2                       EQU     H'009D'
VRCON                        EQU     H'009F'
 
;----- STATUS Bits --------------------------------------------------------
 
IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'
 
;----- INTCON Bits --------------------------------------------------------
 
GIE                          EQU     H'0007'
PEIE                         EQU     H'0006'
T0IE                         EQU     H'0005'
INTE                         EQU     H'0004'
RBIE                         EQU     H'0003'
T0IF                         EQU     H'0002'
INTF                         EQU     H'0001'
RBIF                         EQU     H'0000'
 
;----- PIR1 Bits ----------------------------------------------------------
 
EEIF                         EQU     H'0007'
CMIF                         EQU     H'0006'
RCIF                         EQU     H'0005'
TXIF                         EQU     H'0004'
CCP1IF                       EQU     H'0002'
TMR2IF                       EQU     H'0001'
TMR1IF                       EQU     H'0000'
 
;----- T1CON Bits ---------------------------------------------------------
T1CKPS1                      EQU     H'0005'
T1CKPS0                      EQU     H'0004'
T1OSCEN                      EQU     H'0003'
NOT_T1SYNC                   EQU     H'0002'
TMR1CS                       EQU     H'0001'
TMR1ON                       EQU     H'0000'
 
;----- T2CON Bits ---------------------------------------------------------
TOUTPS3                      EQU     H'0006'
TOUTPS2                      EQU     H'0005'
TOUTPS1                      EQU     H'0004'
TOUTPS0                      EQU     H'0003'
TMR2ON                       EQU     H'0002'
T2CKPS1                      EQU     H'0001'
T2CKPS0                      EQU     H'0000'
 
;----- CCP1CON Bits ---------------------------------------------------------
CCP1X                        EQU     H'0005'
CCP1Y                        EQU     H'0004'
CCP1M3                       EQU     H'0003'
CCP1M2                       EQU     H'0002'
CCP1M1                       EQU     H'0001'
CCP1M0                       EQU     H'0000'
 
;----- RCSTA Bits ---------------------------------------------------------
SPEN                         EQU     H'0007'
RX9                          EQU     H'0006'
SREN                         EQU     H'0005'
CREN                         EQU     H'0004'
ADEN                         EQU     H'0003'
FERR                         EQU     H'0002'
OERR                         EQU     H'0001'
RX9D                         EQU     H'0000'
 
;----- CMCON Bits ---------------------------------------------------------
 
C2OUT                        EQU     H'0007'
C1OUT                        EQU     H'0006'
C2INV                        EQU     H'0005'
C1INV                        EQU     H'0004'
CIS                          EQU     H'0003'
CM2                          EQU     H'0002'
CM1                          EQU     H'0001'
CM0                          EQU     H'0000'
 
;----- OPTION Bits --------------------------------------------------------
 
NOT_RBPU                     EQU     H'0007'
INTEDG                       EQU     H'0006'
T0CS                         EQU     H'0005'
T0SE                         EQU     H'0004'
PSA                          EQU     H'0003'
PS2                          EQU     H'0002'
PS1                          EQU     H'0001'
PS0                          EQU     H'0000'
 
;----- PIE1 Bits ----------------------------------------------------------
 
EEIE                         EQU     H'0007'
CMIE                         EQU     H'0006'
RCIE                         EQU     H'0005'
TXIE                         EQU     H'0004'
CCP1IE                       EQU     H'0002'
TMR2IE                       EQU     H'0001'
TMR1IE                       EQU     H'0000'
 
;----- PCON Bits ----------------------------------------------------------
 
OSCF                         EQU     H'0003'
NOT_POR                      EQU     H'0001'
NOT_BO                       EQU     H'0000'
NOT_BOR                      EQU     H'0000'
NOT_BOD                      EQU     H'0000'
 
;----- TXSTA Bits ----------------------------------------------------------
CSRC                         EQU     H'0007'
TX9                          EQU     H'0006'
TXEN                         EQU     H'0005'
SYNC                         EQU     H'0004'
BRGH                         EQU     H'0002'
TRMT                         EQU     H'0001'
TX9D                         EQU     H'0000'
 
;----- EECON1 Bits ---------------------------------------------------------
WRERR                        EQU     H'0003'
WREN                         EQU     H'0002'
WR                           EQU     H'0001'
RD                           EQU     H'0000'
 
;----- VRCON Bits ---------------------------------------------------------
 
VREN                         EQU     H'0007'
VROE                         EQU     H'0006'
VRR                          EQU     H'0005'
VR3                          EQU     H'0003'
VR2                          EQU     H'0002'
VR1                          EQU     H'0001'
VR0                          EQU     H'0000'
 
;==========================================================================
;
;       RAM Definition
;
;==========================================================================
 
    __MAXRAM H'01FF'
    __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
    __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
    __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
    __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'
 
;==========================================================================
;
;       Configuration Bits
;
;==========================================================================
 
_BODEN_ON                    EQU     H'3FFF'
_BODEN_OFF                   EQU     H'3FBF'
_CP_ALL                      EQU     H'03FF'
_CP_75                       EQU     H'17FF'
_CP_50                       EQU     H'2BFF'
_CP_OFF                      EQU     H'3FFF'
_DATA_CP_ON                  EQU     H'3EFF'
_DATA_CP_OFF                 EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LVP_ON                      EQU     H'3FFF'
_LVP_OFF                     EQU     H'3F7F'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_ER_OSC_CLKOUT               EQU     H'3FFF'
_ER_OSC_NOCLKOUT             EQU     H'3FFE'
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
_EXTCLK_OSC                  EQU     H'3FEF'
_LP_OSC                      EQU     H'3FEC'
_XT_OSC                      EQU     H'3FED'
_HS_OSC                      EQU     H'3FEE'
 
        LIST
Точно такой адресации не нашел(
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
23.05.2010, 21:15
Цитата Сообщение от den1ss Посмотреть сообщение
Почему именно так объявлены переменные?
temp0 EQU H'20'
temp1 EQU H'21'
temp2 EQU H'22'
temp3 EQU H'23'
temp4 EQU H'24'
temp5 EQU H'25'
temp6 EQU H'26'
temp7 EQU H'27'
temp8 EQU H'28'
i EQU H'29'
t EQU H'30'
k EQU H'31'
N0 EQU H'32'
N1 EQU H'33'

Ответьте пожалуйста, буду благодарен)
Это - список адресов яечеек памяти (озу) в которых хранятся ваши переменные, искать их в инклюде про процессор без толку. допустим temp1 - это мнемоническое имя для переменной, его придумывает автор программы. Причем на мой взгляд - именно temp1 - это как раз неудачно придуманная мнемоника. смысл ее позволить вам назвать как-то осмысленно переменную (например, у вас есть параметр громкость, дайте мнемонике имя volume - вам будет его запомнить гораздо прще), и потом во всем листинге обращаться именно к мнемонике, а компилятор потом просто подставит адрес ячейки озу автоматом.

про инки и нопы вам ответили.
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
23.05.2010, 23:51  [ТС]
Assembler
1
2
3
ZVUK    
movlw    100
movwf    temp4
В данном месте 100 просто константа, видимо?
Assembler
1
2
3
4
5
movlw    0x81 ;128
MOVWF   k    ;k=ff=255
Cycl_1  
movlw    0xff 
movwf    N0
Что могут означать 0x81 и 0xff и комментарии ";128",";k=ff=255" автора программы?

Добавлено через 53 секунды
Теперь точно последний вопрос, в остальном разобрался) Спасибо за помощь dmkhn и denver!
0
 Аватар для denver
1612 / 282 / 5
Регистрация: 19.09.2009
Сообщений: 700
23.05.2010, 23:56
0x81 это шестнадцатеричное выражение в переводе на десятеричное 129(судя по всему автор ошибся)
0xff это 255 в десятеричном, то есть в переменной к имеется значение 255.
1
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
23.05.2010, 23:59  [ТС]
Хмм, это еще больше запутало) Буду думать, зачем 129 применен в задержке, а 255 в цикле
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
24.05.2010, 00:15
Цитата Сообщение от den1ss Посмотреть сообщение
Assembler
1
2
3
ZVUK    
movlw    100
movwf    temp4
В данном месте 100 просто константа, видимо?
на самом деле тут все просто - в регистр (ячейку памяти) temp4 автор пишет число 100 (сначала пишет его в аккумулятор, потом аккумулятор копирует в регистр).
Цитата Сообщение от den1ss Посмотреть сообщение
Assembler
1
2
movlw    0x81 ;128
MOVWF   k    ;k=ff=255
аналогичная ситуация - точно также в два хода в регистр k пишется число 0x81 (такое написание в асме обозначает, что число представлено в шестнадцатиричной форме.
Цитата Сообщение от den1ss Посмотреть сообщение
Assembler
1
2
3
Cycl_1  
movlw    0xff 
movwf    N0
Cycl_1 - метка, по всей видимости где-то в программе происходит вызов этой процедуры как раз по метке командой call Cycl_1 (или переход, тогда goto Cycl_1)

а после метки - все то же - в регистр N0 пишется число 0xff
0
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
24.05.2010, 00:29  [ТС]
Это я все понял, я не понял почему именно такие числа применяются для задержки и в цикле, на такой вопрос только наверное автор программы мог бы ответить, да где его взять?)))

Добавлено через 5 минут
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    movwf       PORTB       
    bsf     PORTA,1     
    nop
    nop
    nop
    nop
    bcf     PORTA,1     
 
    movf        temp2,0     
    call        KOD     
...
KOD                 
    BSF PCLATH,0
    retlw       B'00111111'
У меня все зацикливается на этом, это нормально?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
24.05.2010, 00:42
в первой строке некое значение из аккумулятора выводится в порт В. По всей видимости, какие-то данные. В строках с 2 по 7 - на разряде 1 порта А делается синхроимпульс - предположительно строб тех самых данных...

9 строка - значение из регистра temp2 копируется в акумулятор
потом вызывается подпрограмма KOD
а вот подпрограмма KOD приведена не полностью.
регистр PCLATH (если я правильно помню, (а не сидел за всем этим уж несколько лет) - используется для косвенной адресации. Таким макаром создавали табличное преобразование - то есть строк типа
retlw B'00111111'
шло много с разными значениями, а исходное значение кидалось в PCLATH, в итоге проц переходил на одну из этих ретлв, смоответствовавшую смещению, после его из подпрограммы контроллер возвращался с требуемым значением в акумуляторе..
0
2 / 2 / 0
Регистрация: 20.05.2010
Сообщений: 12
24.05.2010, 01:08  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
KOD     
addwf    PCL
retlw    B'00111111'    ;код 0
retlw    B'00000110'    ;код 1
retlw    B'01011011'    ;код 2
retlw    B'01001111'    ;код 3
retlw    B'01100110'    ;код 4
retlw    B'01101101'    ;код 5
retlw    B'01111101'    ;код 6
retlw    B'00000111'    ;код 7
retlw    B'01111111'    ;код 8
retlw    B'01101111'    ;код 9
Почему то после
Assembler
1
retlw    B'00111111'
он опять переходит на
Assembler
1
movwf  PORTB
Получается KOD не полностью дописан?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2010, 01:08
Помогаю со студенческими работами здесь

Формула на си из асм
Какая формула заключена в этом коде?) Нужно привести на языке си или хотя бы просто формулу) 400576: 55 pushq %rbp 400577: 48 89...

асм і8086
На asm i8086. Ввести с клавиатуры двознакови числа без знака Х1, Х2, Х3, Х4. Вывести на экран десятичное значение функции Y = (Х1-Х3 * Х2)...

Цикл асм и с++
Возможно ли использовать цикл с асамблера на с++.? Если да то наведите пример..(вывод сообщения 10 раз)

Декомпиляция на Си из АСМ
Ребят, провел декомпиляцию программы, objdump вывел такой код асма, не могу понять по какой формуле происходят вычисления? Можете...

Асм вставка в Си
Ребята, не подскажите как правильно загружать переменные в асм вставку. пытаюсь сделать так: void FyttRegs(u16 data) { //go to asm...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru