Процессор 8051
Текущая версия процессора 8051 соответствует стандартному ядру, за исключением некоторых особенностей, которые будут описаны в данной главе.
Поддержка IDE
IDE – Keil. Потактовая симуляционная модель – Atmel AT89LP52.
Скорость выполнения команд
Машинный цикл равен 1 такту. Уход на обработчика прерывания занимает 5 машинных циклов.
Таблица. Скорость выполнения команд
Команда | КМЦ | Команда | КМЦ | Команда | КМЦ | Команда | КМЦ |
---|---|---|---|---|---|---|---|
ACALL | 3 | DA_A | 1 | MOV_ATRI_DIRECT | 2 | ORL_DIRECT_IMMEDIATE | 3 |
ADD_A_ATRI | 2 | DEC_A | 1 | MOV_ATRI_IMMEDIATE | 2 | POP | 2 |
ADD_A_DIRECT | 2 | DEC_ATRI | 2 | MOV_BIT_C | 2 | PUSH | 2 |
ADD_A_IMMEDIATE | 2 | DEC_DIRECT | 2 | MOV_C_BIT | 2 | RET | 4 |
ADD_A_RN | 1 | DEC_RN | 1 | MOV_DIRECT_A | 2 | RETI | 4 |
ADDC_A_ATRI | 2 | DIV_AB | 4 | MOV_DIRECT_ATRI | 2 | RL_A | 2 |
ADDC_A_DIRECT | 2 | DJNZ_DIRECT | 4 | MOV_DIRECT_DIRECT | 3 | RLC_A | 1 |
ADDC_A_IMMEDIATE | 2 | DJNZ_RN | 3 | MOV_DIRECT_IMMEDIATE | 3 | RR_A | 1 |
ADDC_A_RN | 1 | INC_A | 1 | MOV_DIRECT_RN | 2 | RRC_A | 1 |
AJMP | 3 | INC_ATRI | 2 | MOV_DPTR_IMMEDIATE: | 3 | SETB_BIT | 2 |
ANL_A_ATRI | 2 | INC_DIRECT | 2 | MOV_RN_A | 1 | SETB_C | 1 |
ANL_A_DIRECT | 2 | INC_DPTR | 2 | MOV_RN_DIRECT | 2 | SJMP | 3 |
ANL_A_IMMEDIATE | 2 | INC_RN | 1 | MOV_RN_IMMEDIATE | 2 | SUBB_A_ATRI | 2 |
ANL_A_RN | 1 | JB | 4 | MOVC_A_ATDPTR | 3 | SUBB_A_DIRECT | 2 |
ANL_C_BIT | 2 | JBC | 4 | MOVC_A_ATPC | 3 | SUBB_A_IMMEDIATE | 2 |
ANL_C_NBIT | 2 | JC | 3 | MOVX_A_ATDPTR | 3 | SUBB_A_RN | 1 |
ANL_DIRECT_A | 2 | JMP_A_DPTR | 2 | MOVX_A_ATRI | 3 | SWAP_A | 1 |
ANL_DIRECT_IMMEDIATE | 3 | JNB | 4 | MOVX_ATDPTR_A | 3 | XCH_A_ATRI: | 2 |
CJNE_A_DIRECT | 4 | JNC | 3 | MOVX_ATRI_A | 3 | XCH_A_DIRECT | 2 |
CJNE_A_IMMEDIATE | 4 | JNZ | 3 | MUL_AB | 2 | XCH_A_RN | 1 |
CJNE_ATRI_IMMEDIATE | 4 | JZ | 3 | NOP | 1 | XCHD_A_ATRI | 2 |
CJNE_RN_IMMEDIATE | 4 | LCALL | 4 | ORL_A_ATRI | 2 | XRL_A_ATRI | 2 |
CLR_A | 1 | LJMP | 4 | ORL_A_DIRECT | 2 | XRL_A_DIRECT | 2 |
CLR_BIT | 2 | MOV_A_ATRI | 2 | ORL_A_IMMEDIATE | 2 | XRL_A_IMMEDIATE | 2 |
CLR_C | 1 | MOV_A_DIRECT | 2 | ORL_A_RN | 1 | XRL_A_RN | 1 |
CPL_A | 1 | MOV_A_IMMEDIATE | 3 | ORL_C_BIT | 2 | XRL_DIRECT_A | 2 |
CPL_BIT | 2 | MOV_A_RN | 1 | ORL_C_NBIT | 2 | XRL_DIRECT_IMMEDIATE | 3 |
CPL_C | 1 | MOV_ATRI_A | 1 | ORL_DIRECT_A | 2 |
Прерывания
В текущей версии процессора 8051 предусмотрено 6 векторов прерываний.
Таблица. Описание прерываний и адрес перехода
Номер прерывания | Описание | Адрес перехода | Внутреннее название прерываний |
---|---|---|---|
0 | WDT | 0003h | IE0 |
WORK_FSM | |||
CMM | |||
1 | Внутренний таймер/счетчик T0 | 000Bh | TF0 |
2 | I2C | 0013h | IE1 |
UART0 | |||
SPI0 | |||
TIMER0 | |||
GPIOA | |||
3 | Внутренний таймер/счетчик T1 | 001Bh | TF1 |
4 | OWI | 0023h | IS0 |
UART1 | |||
SPI1 | |||
TIMER1 | |||
GPIOB | |||
5 | GPIOC | 002Bh | IS1 |
TIMER2 |
Прерывания IS0 и IS1 всегда работают по уровню.
Подприоритеты прерываний
При одинаковом приоритете обработка прерываний выполняется в следующей последовательности
Таблица. Описание подприоритетов прерываний
Подприоритет | Название прерывания |
---|---|
1 – высший | IE0 |
2 | TF0 |
3 | IS0 |
4 | IE1 |
5 | TF1 |
6 – низший | IS1 |