С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 21.05.2018
Сообщений: 37

Создать блок-схема алгоритма программы

21.06.2022, 18:50. Показов 1246. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите создать блок-схему алгоритма программы. Не могу разобраться. Может есть какой-нибудь конструктор для этого?
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
#include <P16F628A.INC>
            LIST        p=16F628A     
            __CONFIG    H'3F10'             ;конфигурация микроконтроллера
                                     
                                            
Sec           equ         20h               ;присвоение названий регистрам ОЗУ 
Sec1          equ         21h      
t1L           equ         22h               ;младший регистр счета длит. импульса управления
t1H           equ         23h               ;старший регистр счета длит. импульса управления
t1LL          equ         24h               ;промежуточный регистр
t1HH          equ         25h               ;промежуточный регистр 
tmp_off       equ         26h               ;регистр счетчика времени
 
flag          equ         7Dh               ;дополнительный регистр флагов
W_TEMP        equ         7Eh               ;регистр для хранения значения аккумулятора W
STATUS_TEMP   equ         7Fh               ;регистр для хранения значения STATUS
 
                                            ;присвоение названий линиям ввода-вывода
#DEFINE       serv        PORTB,4           ;управляющий сигнал для сервопривода
#DEFINE       knp_1       PORTB,0           ;кнопка 1
#DEFINE       knp_2       PORTB,1           ;кнопка 2
 
 
   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
              org         0000h             ;начать выполнение программы с адреса 0000h
              goto        Start             ;переход на метку Start
           
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Подпрограмма обработки прерываний
 
              org         0004h             ;начать выполнение подпрограммы с адреса 0004h
       
              movwf       W_TEMP            ;сохранение значений ключевых регистров
              swapf       STATUS,W          ;
              clrf        STATUS            ;
              movwf       STATUS_TEMP       ;
                 
prov_tmr1     bcf         T1CON,TMR1ON      ;остановка таймера TMR1
              btfsc       flag,0            ;проверка флага очередности
              goto        t2                ;флаг установлен (1):перход на метку t2
                                            
t1            movf        t1HH,W            ;флаг очередности равен 0:перезапись длительности 
              movwf       TMR1H             ;управляющего импульса из промежуточных регистров  
              movf        t1LL,W            ;в регистры таймера TMR1
              movwf       TMR1L             ;
              bsf         flag,0            ;установка флага очередности
              bsf         serv              ;установить в 1 линию ввода/вывода serv
              goto        extmr1            ;переход на метку extmr1
 
t2            bcf         serv              ;сбросить в 0 линию ввода/вывода serv
              bcf         flag,0            ;сбросить флаг очередности
              movlw       .183              ;запись длительности паузы между управляющими
              movwf       TMR1H             ;импульсами в 18,5 мс
              movlw       .187              ;
              movwf       TMR1L             ;
              movlw       .24               ;проверка регистра счетчика времени  
              xorwf       tmp_off,W         ;
              btfss       STATUS,Z          ;
              goto        extmr2            ;значение счетчика не равно 24:переход на extmr2
              bcf         PIR1,TMR1IF       ;значение счетчика равно 24: сброс флага прерываний 
                                            ;по переполнению TMR1
              goto        exxit             ;переход на метку exxit 
extmr2        incf        tmp_off,F         ;инкремент регистра счетчика времени
 
extmr1        bcf         PIR1,TMR1IF       ;сброс флага прерываний по переполнению TMR1
              bsf         T1CON,TMR1ON      ;запуск таймера TMR1
                
exxit         swapf       STATUS_TEMP,W     ;восстановление содержимого ключевых регистров
              movwf       STATUS            ;
              swapf       W_TEMP,F          ;
              swapf       W_TEMP,W          ;
                                            ;
              retfie                        ;выход из подпрограммы обработки прерывания
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Основная программа                            
             
Start         clrf        PORTB             ;сброс регистра PORTB 
              clrf        PORTA             ;сброс регистра PORTA
              
              movlw       b'00000111'       ;выключение компараторов
              movwf       CMCON
 
              bsf         STATUS,RP0        ;выбрать 1-й банк    
              movlw       b'11101111'       ;настройка линий ввода\вывода порта B     
              movwf       TRISB             ;RB4 на выход, остальные на вход
              bcf         STATUS,RP0        ;выбрать 0-й банк
           
              bcf         flag,0            ;сброс флага очередности
              clrf        tmp_off           ;сброс счетчика времени
 
              movlw       .220              ;запись длительности (1,5 мс) управляющего импульса
              movwf       t1L               ;в регистры счета и промежуточные регистры
              comf        t1L,W             ;для установки сервопривода в среднее положение
              movwf       t1LL
 
              movlw       .5
              movwf       t1H
              comf        t1H,W
              movwf       t1HH
 
              movlw       b'00000000'       ;коэффициент предд. TMR1 1:1, внутренний   
              movwf       T1CON             ;тактовый сигнал Fosc
              
              clrf        TMR1L             ;сброс регистров тймера TMR1
              clrf        TMR1H
 
              bsf         INTCON,PEIE       ;разрешение прерываний периферийных модулей
              bcf         PIR1,TMR1IF       ;сброс флага прерываний по переполнению TMR1
              bsf         STATUS,RP0        ;выбрать 1-й банк
              bsf         PIE1,TMR1IE       ;разрешение прерываний по переполнению TMR1
              bcf         STATUS,RP0        ;выбрать 0-й банк             
              bsf         T1CON,TMR1ON      ;запуск таймера TMR1
              bsf         INTCON,GIE        ;глобальное разрешение прерываний         
 
opros_knp     btfsc       knp_1             ;опрос кнопки 1
              goto        met_1             ;кнопка 1 не нажата: переход на метку met_1
              call        povorot_1         ;кнопка 1 нажата: вызов подпрограммы povorot_1
              call        pausknp           ;вызов подпрограммы паузы
met_1         btfsc       knp_2             ;опрос кнопки 2
              goto        opros_knp         ;кнопка 2 не нажата: переход на метку opros_knp
              call        povorot_2         ;кнопка 2 нажата: вызов подпрограммы povorot_2
              call        pausknp           ;вызов подпрограммы паузы
              goto        opros_knp         ;переход на метку opros_knp
              
povorot_1     movlw       .2                ;проверка длительности управляющего импульса
              subwf       t1H,W             ;в регистрах счета 
              btfss       STATUS,C          ;
              return                        ;длительность меньше 600 мкс, сервопривод в крайнем 
                                            ;положении, выход из подпрограммы povorot_1
              btfss       STATUS,Z          ;
              goto        met_p11           ;длительность больше 600 мкс, переход на метку met_p11 
              movlw       .88               ;
              subwf       t1L,W             ;
              btfss       STATUS,C          ;
              return                        ;длительность меньше 600 мкс, сервопривод в крайнем
                                            ;положении, выход из подпрограммы povorot_1
 
met_p11       movlw       .10               ;уменьшение длительности управляющего импульса
              subwf       t1L,F             ;на 10 мкс
              btfsc       STATUS,C          ;
              goto        met_p12           ;
              decf        t1H,F             ;
met_p12       call        perezap           ;вызов подпрограммы perezap
              return                        ;выход из подпрограммы povorot_1
 
povorot_2     movf        t1H,W             ;проверка длительности управляющего импульса
              sublw       .9                ;в регистрах счета
              btfss       STATUS,C          ;
              return                        ;длительность больше 2,5 мс, сервопривод в крайнем
                                            ;положении, выход из подпрограммы povorot_2 
              btfss       STATUS,Z          ;  
              goto        met_p21           ;длительность меньше 2,5 мс: переход на метку met_p21
              movf        t1L,W             ;
              sublw       .196              ;
              btfss       STATUS,C          ;
              return                        ;длительность больше 2,5 мс, сервопривод в крайнем
                                            ;положении, выход из подпрограммы povorot_2
 
met_p21       movlw       .10               ;увеличение длительности управляющего импульса
              addwf       t1L,F             ;на 10 мкс
              btfss       STATUS,C          ;
              goto        met_p22           ;
              incf        t1H,F             ;
met_p22       call        perezap           ;вызов подпрограммы perezap
              return                        ;выход из подпрограммы povorot_1
 
                                            ;
perezap       bsf         STATUS,RP0        ;выбрать 1-й банк
              bcf         PIE1,TMR1IE       ;запрещение прерываний по переполнению TMR1
              bcf         STATUS,RP0        ;выбрать 0-й банк
              comf        t1L,W             ;перезапись значений регистров счета в промежуточные
              movwf       t1LL              ;регистры
              comf        t1H,W             ;
              movwf       t1HH              ;
              clrf        tmp_off           ;сброс счетчика времени
              bsf         T1CON,TMR1ON      ;включение таймера TMR1
              bsf         STATUS,RP0        ;выбрать 1-й банк
              bsf         PIE1,TMR1IE       ;разрешение прерываний по переполнению TMR1
              bcf         STATUS,RP0        ;выбрать 0-й банк
              return                        ;;выход из подпрограммы perezap
 
pausknp       movlw       .14               ;подпрограмма паузы 10,5 мс
              movwf       Sec1              ;
p3            movlw       .250              ;
              movwf       Sec               ;
p2            decfsz      Sec,F             ;
              goto        p2                ;
              decfsz      Sec1,F            ;
              goto        p3                ;
              return                        ;
                                            ;
              end                           ;
                                            ;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2022, 18:50
Ответы с готовыми решениями:

Блок-схема алгоритма (ASM)
Привет всем! Помогите составить блок схему для данной программы. .INCLUDE &quot;m8def.inc&quot; .MACRO LINE cbi PORTD,PD6 ldi...

Блок-схема алгоритма частотомера на PIC16F73
Помогите сделать блок-схему программы прошивки МК 16Ф73, программа -то написана в исходном виде, да и прошивка есть, вот по блок-схемам не...

Алгоритм (блок-схема) программы ультразвукового дальномера
помогите написать алгоритм программы ультразвукового дальномера!!очень срочно!!!

1
3764 / 2641 / 582
Регистрация: 11.09.2009
Сообщений: 9,426
22.06.2022, 15:31
Цитата Сообщение от Safy01 Посмотреть сообщение
Может есть какой-нибудь конструктор для этого?
Нет. Здесь только глазами смотреть и головой думать. Халявы не получится ну никак. Мои соболезнования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.06.2022, 15:31
Помогаю со студенческими работами здесь

Блок-схема алгоритма работы программы
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { const int size=20; int arr; int...

Блок-схема алгоритма работы программы
Нужна блок-схема алгоритма работы программы.#include &lt;iostream.h&gt; #include &lt;math.h&gt; void PSort(double *Arr,int n) { double...

Блок-схема работы алгоритма программы
есть прога unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

Блок-схема для алгоритма программы
Нужна блок-схема для отчёта по лабораторной в универе. Вот код procedure TForm1.Button2Click(Sender: TObject); begin close; end;...

Блок-схема алгоритма работы программы
#include &lt;iostream&gt; #include &lt;conio.h&gt; #define LENGTH 20 int main() { int array = {1, 5, 6, 3, 12, 36, 87, 91, 34,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru