в режим на покой 8051, не ISR Първи призова!

S

seemanta

Guest
Здрасти,
Въз основа на консултации в моя пост по-рано да се създаде захранван от батерии AT89S52 основа план, имам добавя някои код за режим на покой в цифровия си часовник.

За съжаление, след микро отива на празен ход и го получава прекъсване от РТК, тя не се събуди.

Така че съм създал тест програма, която обработва INT1 прекъсва и показва един символ на LCD, за да видите дали моята основна предпоставка за справяне с режим на заспиване е вярна.

Без промяна на режима на празен, т.е. "MOV PCON, # 01" промяна, тя работи добре.Въпреки това, с празен промени режим, ISR ми не се удари при натискане на превключвателя за INT1 линия.

Ето отива кода:

Код:ПИСМО EQU 30HORG 0000H

ЬОМР ОСНОВНИ; заобикаляйки прекъсват векториORG 0013H; / INT1 ISR

ЬСАЬЬ INT1_ISR

MOV PCON, # 01; Връщане в IDLE СЛЕД режим на прекъсване

RetiORG 0030H

Начало:

ACALL LCD_INIT; инициализиране на LCD

MOV IE, # 10000100B; ДАВАТ НА INT1 прекъсват

SETB TCON.3

ПИСМО MOV, # 65; Initializing С "А"

MOV PCON, # 01; GO TO режим на покой

ТУК: SJMP ТУКINT1_ISR:

ЬСАЬЬ DELAY_20MS; ПОКАНА закъснението ТЕКУЩА - DEBOUNCING КЛЮЧЪТ

; ПРОВЕРИ ПИН STATUS.IF UNSET, това е фалшива ALARM.IF SET, то е истински прекъсват

JNB P3.3, RETN

MOV А, # 00Н

ЬСАЬЬ LCD_POS_CURSOR

MOV А, ПИСМО

ЬСАЬЬ LCD_SEND_DATA

ACALL LCD_BUSY_WAIT

INC ПИСМО

RETN: RETDELAY_20MS:

MOV R1, # 46

З1: MOV R2, # 200

З2: DJNZ R2, Н2

DJNZ R1, H1

RET
 
Проблемът изглежда:
MOV PCON, # 01; Връщане в IDLE СЛЕД режим на прекъсване
Reti

за изпълнени MOV Pcon, # 01 CPU стане в режим на покой, Reti затова няма да се изпълнява.

Опитайте това
ORG 0013H; / INT1 ISR
ЬСАЬЬ INT1_ISR
Reti

Начало:
ACALL LCD_INIT
MOV IE, # 10000100B
SETB TCON.3
MOV писмо, # 65
ТУК: NOP
MOV PCON, # 01
SJMP ТУК

 
Ей то работник!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Благодарности!

~ Seemanta

 

Welcome to EDABoard.com

Sponsor

Back
Top