0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 5
1

Внешние прерывания МК 80C552

26.11.2013, 10:28. Показов 885. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Подскажите в чем проблема. Есть KIT-552-P на контроллере Philips 80C552 и отладчик ICD-5132. Все приобреталось в 90-х годах. Написал программку, использующую внешнее прерывание INT0. На вход P3.2 подана 1. Когда в отладчике дохожу до строчки setb EA, срабатывает прерывание и выбрасывает в обработчик. Что делаю не так? Подскажите.

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
CSEG  AT 0
  ljmp  Start
CSEG  AT 0003h; 
  ljmp  INT0_SRVR
 
TESTcod SEGMENT CODE
RSEG  TESTcod
 
INT0_SRVR:  
  push  PSW
  push  ACC
…..
  pop   ACC
  pop   PSW
  reti
 
Start:  
  mov  SP,      #7FH
  mov  TCON,  #00000101b
  mov  IE,       #00000101b
  mov  P3,      #0FFH
  setb  EA
MainLoop:
  nop
ajmp  MainLoop
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 10:28
Ответы с готовыми решениями:

Внешние прерывания
Добрый вечер, у меня на меге 8 работает ацп + необходимо обрадатывать внешнее прерывание от пина...

Внешние прерывания
нужно что бы при нажатии на кнопку отрабатывало прерывание. Я сделал так (все на мегае16, на...

Внешние прерывания
Всем привет! пытаюсь осуществить светодиодную подсветку лестницы. Вверху и внизу стоят датчики...

Внешние прерывания ATMega128
Всем привет. У меня задача такая: есть меиндр с изменяющейся частой и надо замерять время между...

2
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
26.11.2013, 20:52 2
Цитата Сообщение от GenFd Посмотреть сообщение
На вход P3.2 подана 1.
А на вход P3.3? У вас включается не только int0 но и int1 на срабатывание по уровню. Если на входе P3.3 установлен 0, то возникнет int1 по адресу 13.
И для ясности посмотрите отладчиком в TCON какие прерывания у вас вызваны.
0
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 5
27.11.2013, 07:54  [ТС] 3
Цитата Сообщение от paskal Посмотреть сообщение
int0 но и int1 на срабатывание по уровню
В IT0 и IT1 записываются 1, значит срабатывание по срезу.
На оба входа подано 4.6В. На самом деле используются оба прерывания. Но так как у int0 приоритет выше, оно и срабатывает. Пробовал отдельно int0 и int1. Результат один и тот же. Только в последнем случае постоянно срабатывает int1. После установки EXx в 1, IEx тоже становится 1. Как будто в ITx записан 0 и на входе тоже 0. Надо попробовать сбросить IEx, хотя как-то это неправильно. Прерывание то по срезу и IEx должен сам сбрасываться.

Для ясности немного подправлю код. Такой вариант я тоже пробовал. В варианте, который выше должен быть обработчик для int1.
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
CSEG  AT 0
  ljmp  Start
CSEG  AT 0003h; 
  ljmp  INT0_SRVR
 
TESTcod SEGMENT CODE
RSEG  TESTcod
 
INT0_SRVR:  
  push  PSW
  push  ACC
…..
  pop   ACC
  pop   PSW
  reti
 
Start:  
  mov  SP,      #7FH
  mov  TCON,  #00000001b
  mov  IE,       #00000001b
  mov  P3,      #0FFH
  setb  EA
MainLoop:
  nop
ajmp  MainLoop
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2013, 07:54

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Внешние прерывания МК ATmega8535
Народ, кто-нибудь поможет решить задачу или хотя бы подсказать с чего начать? Просто знания...

мега48, внешние прерывания
всем здрасти) ситуация такова: планируется устройство с емкостной сенсорной клавиатурой, каждый...

Внешние прерывания для AtMega16
Всем ,привет!)Подскажите пожалуйста:как правильно написать код программы для внешнего прерывания?Ну...

внешние прерывания tiny85 - растолкуйте даташит!
я тут типа пытаюсь мелким шаговиком управлять напрямую. ловлю внешние импульсы и по их частоте -...


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

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

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