Лекция: Модуль РСА как генератор сигналов.

DSEG

PULSE EQU 2000

PAUSE EQU 8000

FLAG BIT 00h //привязывает следующую //команду жестко к памяти

CSEG

ORG 0000h

AJMP BEGIN

ORG 0033h

AJMP PCA_ISR

ORG 0100h

BEGIN: //настройка и запуск

MOV CL, #00h;

MOV CH, #00h;

MOV CMOD, #00h; //WDTE=0, //clock=fosc/12

MOV CCAPM0, #4Dh;

MOV CCAP0L, #LOW(PULSE)

MOV CCAP0H, #HIGH(PULSE)

SETB IE.6;

SETB IE.7;

SETB CCON.6; //запуск PCA массива (CR)

ORG 0200h

PCA_ISR:

CLR CCF0

PUSH ACC;

PUSH PSW;

JNB P1.3, MINUS //проверяем состояние бита

PULSE:

MOV A, CCAP0L;

ADD A, #LOW(PULSE); //при записи младшего байта

MOV CCAP0L, A; //компаратор выключается

MOV A, CCAP0H;

ADD A, #HIGH(PULSE);

MOV CCAP0H, A;

POP PSW;

POP ACC;

RETI; //иначе следующее прерывание не будет воспринято

MINUS:

MOV A, CCAP0L;

ADD A, #LOW(PAUSE); //каждый раз при прерывании

MOV CCAP0L, A; //проверяется состояние

MOV A, CCAP0H; //вывода P1.3 (программно)

ADD A, #HIGH(PAUSE); //если 1, то прибавляем

MOV CCAP0H, A; //длительность 8 мс

POP PSW; //если 0 – длительность импульса 2 мс

POP ACC;

RETI;

2. Последовательный связной адаптер. Как организовать прием и передачу данных на разных частотах одновременно?

 

Как организовать прием и передачу данных на разных частотах одновременно?

T2MOD = 0x00;

PCON = 0x80; //бит SMOD. Удвоение скорости обмена UART

SCON = 0x58; //настройка UART. Режим 1 — 9-бит, разрешение приема, 9-й бит=1 (0101 1000)

TH2 = RCAP2H = 0xff; //загрузка Т2 исходя из выбранной скорости обмена-115200

TL2 = RCAP2L = 0xfa; //

TH1 = …

T2CON = 0x…; //настройка Т2. Т2-задающий генератор UART (0011 0000) – T2CON.4 – бит синхронизации передатчика. Если 1, то T1 не используется. T2CON.5 – бит синхронизации приемника

RCLK T2CON.5 Выбор таймера/счетчика 2 для задания скорости работы приемника в режимах 1 и 3. При RCLK = 1 используется таймер/счетчик 2, при RCLK = 0 — таймер/счетчик 1
TCLK Т2СОN.4 Выбор таймера/счетчика 2 для задания скорости работы передатчика в режимах 1 и 2. При TCLK = 1 используется таймер/счетчик 2, при TCLK = 0 — таймер/счетчик 1

 

TI=RI = 0; //cброс флагов прерывания UART

TR2 = 1;

//настройка прерываний

IE = 0x90; //Общее, UART

 

еще рефераты
Еще работы по информатике