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
Въз основа на консултации в моя пост по-рано да се създаде захранван от батерии 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