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

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

21.06.2022, 18:50. Показов 1244. Ответов 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
3763 / 2641 / 581
Регистрация: 11.09.2009
Сообщений: 9,419
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru