Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320

MicroPascal for PIC

03.11.2016, 11:30. Показов 918. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла непонятка с обработкой прерывания на MPascal и симуляции в Proteus 8.
К примеру допустим код:
Pascal
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
program DEMO_CPU_1;
 
var
   Password: array [0..3] of word; {òóò ïðèäóìàíûé ïàðîëü}
   InCode: array [0..3] of word; {òóò ïðèíÿòûé ïàðîëü}
   key : byte; {íîìåð ïîçèöèè ââîäèìîãî ïàðîëÿ}
   i,r: byte;
   Error_input_Password: byte; {ôëàã =1 åñëè âõîäå ïðîâåðêè áûëî ðàçëè÷èå â ïàðîëè è ââåäåíîì ïàðîëå}
 
procedure ClearPassword;
begin
 for r := 0 to 3 do
  InCode[r] := 0;
end;
 
procedure key_test;
begin
 
 TRISA.3 := 0; //íà âûõîä
 PORTA.3 := 1; //âêëþ÷åí 1
end;
 
   
procedure interrupt;
begin   
 if PORTB.1 = 1 then
 begin
   key := key + 1;
 
 end;
 
 if key = 4 then
   key_test;
 
 
 
 
end;
 
begin
  key := 0;
  Error_input_Password :=0;
  {äëÿ íà÷àëà íàñòðîèì ïîðòû íà ïðèåì ñèãíàëà}
  TRISA.0 := 1; //íà âõîä
  PORTA.0 := 1; //âêëþ÷åí 1
  {íàñòðîåì äîïîëíèòåëüíûé}
  TRISA.3 := 0; //íà âûõîä
  PORTA.3 := 0; //íà âûõîä
  
  {èíèöèàëèçàöèÿ ïåðåìåííîé}
  InCode[0] := 0;
  InCode[1] := 0;
  InCode[2] := 0;
  InCode[3] := 0;
  
  {Çàïîëíÿåì ïàðîëü}
  Password[0] := 1;
  Password[1] := 1;
  Password[2] := 1;
  Password[3] := 1;    
  
  {ðàçðåøàåì îáðàáîòêó ïðåðûâàíèé}
  INTCON :=0;
  INTCON.RB7 := 1; {Ðàçðåøàåì íå ìàñêèðîâàíûå ïðåðûâàíèÿ}
  INTCON.RB4 := 1; {Ðàçðåøàåì ïðåðûâàíèÿ ïî âõîäó INT}
  
  OPTION_REG.6 := 0; {ïðåðûâàíèå ïî çàäíåìó ôðîíòó}
  
  while(true)do
  begin
  
 
 
  
  end;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2016, 11:30
Ответы с готовыми решениями:

Лекарство для MicroPascal for AVR
Добрый день. Обращаюсь сюда, так как google мне не помог. Люди добрые, есть у кого нибудь таблетка для обозначенного продукта? Буду...

MicroPascal Pro для PIC
MicroPascal Pro для PIC В общем что бы на АСМ не писать код, решил прибегнуть к микропаскалю. А точнее решил его изучить. поставил...

Осваиваю PIC
Решил немного освоить пики. Думаю начать с ситемы команд и архитектуры. Может кто подскажет толковую литературу на русском языке.

3
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,080
03.11.2016, 12:20
Pic 16f84 уйти в прерывание на micro pascal
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
04.11.2016, 07:31  [ТС]
Цитата Сообщение от pyzhman Посмотреть сообщение
Pic 16f84 уйти в прерывание на micro pascal
ну и чего вы указываете мне на мою же тему? Вы не поняли тут особеность - функция interrupt срабатывает когда на int подается сигнал! Но суть в том что если отследить код то key = key + 1 и тока потом проверяется условие. По практитке key повышается с каждым поданым сигналом на RB1 т.е. сначало 0, 1, 2 и т.д. суть подсчитать кол-во полученых импульсов. так вот когда на RB1 стоповый бит приходит то тогда считчик пишет в следующию чейку массива. (тут в коде не реализовано! это не важно)

Добавлено через 18 часов 25 минут
одним словом якобы переменная не повышается или проблема в протеусе
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
10.11.2016, 20:08
Цитата Сообщение от n971030 Посмотреть сообщение
По практитке key повышается с каждым поданым сигналом
Цитата Сообщение от n971030 Посмотреть сообщение
одним словом якобы переменная не повышается
Какая переменная ? key ? Так выше Вы написали, что она повышается.

Можно изьясняться так чтобы можно было понять в чем Ваша проблема ?

И потом, разве в обработчике прерывания INTCON.INTF не надо чистить ?

Добавлено через 32 минуты
-----------------------------------------------------------------------------------------------------------

А ну все ясно ! И как-раз по осциллограмме.

Вы INTCON.INTF в обработчике не чистите, а значит после первого-же падающего фронта на ноге RB0/INT начнется буря прерываний. После каждой команды главного цикла будет прерывание. А значит как только линия RB1 подымется в единицу key начнет с визгом инкрементироваться. Мгновенно станет и 4 и 104 и 204 и от этого линия RA3 вскинется синхронно с вскидыванием сигнала на линии RB1 и наплевать, что линия RB0/INT в этот момент стабильно торчит в нуле. И все это есть на осциллограмме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2016, 20:08
Помогаю со студенческими работами здесь

Изучение PIC
Здравствуйте! Вот решил изучать МК PIC. ЗДЕСЬ нашёл видеоуроки для меня более-менее доступные. В этом видео описывается PIC16F84A, но так...

Вольтметр на PIC
Вольтметр на PIC16F677 нужна помощь в разработке проекта. Технические характеристики: -Индикация тока на 3-разрядном индикаторе с...

ЗУ и БП с индикацией на PIC
Всем привет. Прошу помощи, хочу сделать "нормальную" зарядку для АКБ + еще БП от 0-12 вольт. Перелашматил И-нет, нашол кучу схем,...

Assembler pic
Помогите пожалуйста с программой на пик симуляторе. Почему не выводятся числа на 7 сегментный индикатор вот так - 0 2 5 4 ? ...

PIC Uart
Начинаю знакомство с PIC микроконтроллерами. Решил написать программу для работы с UART. Запускаю симуляцию в протеусе и не работает....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru