доб-INT-Проблема з C51

O

Onde

Guest
Привіт,

я просто спробував наступні програми:

# Ргадта INTVECTOR (0x8000)
# Включити <reg517.h>

недійсним ex0_isr (недійсними) перериває 0
(
P4 = 255;
)

Основними недійсним (недійсними)
(
IT0 = 0;
EX0 = 1 / / Включити EX0 переривань
EAL = 1;
P4 = 0;

в той час як (1)
(
)
)

Проблема в тому, програма ніколи не досягає P4 = 255;
Перш ніж я пробував різні Таймер переривань програми, всі вони працюють добре, тому я думаю, uVision 2 налаштований правильно.

Деякі ідеї?

Onde

 
привіт,

Я не знаю, 517 шосе, все одно ....

1) Є таймер, запуск програми?

2) Чи є TCON зареєструватися налаштувати?(Ворота - C / T - TR ECC. ECC.)
Останній раз редагувався Crono по 20 лютого 2004 0:49; редагувалось 1 раз в загальній складності

 
привіт, я думаю, ви можете подивитися на відповідний код збори, щоб побачити, якщо компілятор правильно скомпілювати з вихідним кодом, то написано.

 
Ooops

На жаль, Ви маєте на увазі зовнішні переривання на туше, я помилявся .....

У всякому разі Ви повинні встановити

EA = 1;

, З тим щоб перериває .....

 
Очевидно, проблема в тому, що інструкція

# Ргадта INTVECTOR (0x8000)

поставить ваш обробник переривання за місцем знаходження 0x8003 (замість 0x0003, де обробки переривання для ExtInt0 можна було б очікувати)

CSEG AT 08003H
LJMP ex0_isr

ex0_isr:
MOV P4, # 0xFF
RETI

Таким чином, коли зовнішні переривання trigered, Процесор НЕ буде знайти на місці 0x0003 обробник переривання (головне не знайшли стримано вказівку продовжувати нормальне функціонування), які зроблять ваш процесор для виконання wathever інструкції будуть знайдені в цьому місці.
В результаті краху системи!

Для цього використовувати corect

# Ргадта INTVECTOR (0x0000)

 

Welcome to EDABoard.com

Sponsor

Back
Top