Регистратор дискретных сигналов

Реферат - Компьютеры, программирование

Другие рефераты по предмету Компьютеры, программирование

едний канал). Сохранение времени включения и выключения для нулевого канала начинается с ячейки с адресом 20Н; сначала записываются часы, затем минуты включения, затем часы и минуты выключения. Таким образом для каждого канала в памяти отводится 4 байта, общее количество оперативной памяти используемое программой 32 байта. Структура использования памяти описана в следующей таблице:

 

АдресСодержимоеАдресСодержимое20hТаймер 1 часы включения21hТаймер 1 минуты включения22hТаймер 1 часы выключения23hТаймер 1 минуты выключения24hТаймер 2 часы включения25hТаймер 2 минуты включения26hТаймер 2 часы выключения27hТаймер 2 минуты выключения28hТаймер 3 часы включения29hТаймер 3 минуты включения2АhТаймер 3 часы выключения2BhТаймер 3 минуты выключения2ChТаймер 4 часы включения2DhТаймер 4 минуты включения2EhТаймер 4 часы выключения2FhТаймер 4 минуты выключения30hТаймер 5 часы включения31hТаймер 5 минуты включения32hТаймер 5 часы выключения33hТаймер 5 минуты выключения34hТаймер 6 часы включения35hТаймер 6 минуты включения36hТаймер 6 часы выключения37hТаймер 6 минуты выключения38hТаймер 7 часы включения39hТаймер 7 минуты включения3AhТаймер 7 часы выключения3BhТаймер 7 минуты выключения3ChТаймер 8 часы включения3DhТаймер 8 минуты включения3EhТаймер 8 часы выключения3FhТаймер 8 минуты выключения

При чтении из CОМ порта принята следующая расшифровка принимаемых байтов. Один блок составляет 5 байтов: первый управляющий далее идут 4 байта с данными, в следующей последовательности: Часы включения канала минуты включения канала часы выключения канала минуты выключения канала. Передача данных ведется в двоичной форме. Управляющий байт использует 4 младших бита, первые три несут номер канала в двоичном коде, четвертый показывает последний канал идет или нет (1 последний, 0 не последний). Если канал последний, то после приема 4 следующих байтов данных связь с портом прекратится, если нет, то продолжится с приема следующего управляющего байта.

 

 

 

 

 

 

Алгоритм обработки прерывания будет выглядеть следующим образом.

 

TF0 := 0;

R1 := R1+1;

If (R1<20) Then goto exit ;

R1 := 0;

R2 := R2+1;

If (R2<60) Then goto exit ;

R2 := 0;

R3 := R3+1;

For (i=0 to 7) do {

R0 := 20h + i*4 ;

If ( @R0+1 =R3) then if (@R0 = R4) then P[i] :=0;

If (@R0+3 = R3) Then if (@R0+2=R4) then P[i] :=1;};

If (R3<60) Then goto exit ;

R3 := 0;

R4 := R4+1;

If (R4<24) Then goto exit ;

R4 := 0;

Gosub Pause50; [Подпрограмма запуска таймера, будет поисана далее]

Return

 

 

3.2 Программа на языке ассемблера.

 

На языке ассемблера программа разделена на несколько процедур затем в главном модуле все процедуры связываются друг с другом так как это необходимо. Далее приводится подробное описание этих подпрограмм.

 

OMCS-51 MACRO ASSEMBLER VSKURS1

PAGE 1

 

locobjlinesource

 

01001 ORG 100h

010075B80C2MOVIP, #00001100b

010375A80C3MOVIE, #00001100b

01067589914MOVTMOD, #10010001b

01097588445MOVTCON, #01000100b

010C7580006MOVP0, #0h

010F75A0007MOVP2, #0h

01127E058MOVR6, #5h

011479309MOVR1, #30h

01168E9010CON:MOVP1, R6

01183094FD11JNBP1.4, $

011BE58012MOVA, P0

011DF813MOVR0, A

011E75F0A014MOVB, #0A0h

0121A415MULAB

0122945016SUBBA, #50h

0124A7E017MOV@R1, 0E0h

01260918INCR1

0127DEED19DJNZ R6, CON

0129E820MOVA, R0

012A20E70821JB ACC.7,GRR

012DB4340C22CJNEA, #34h, NORM

0130400823JCERROR

013230E70724JNBACC.7,NORM

0135B4A30425GRR:CJNEA, #0A3h, NORM

0138400226JCNORM

013AD2A727ERROR:SETBP2.7

013CE59028NORM:MOVA, P1

013E55F029ANLA, 0F0h

0140F53530MOV35h, A

0142C29931INTT1:CLRTI

01447588FF32MOVTCON, #0FFh

01477598DC33MOVSCON, #11011100B

014A75892034MOVTMOD, #20h

014DD29935SETBTI

014F3099FD36JNBTI, $

0152E59937MOVA, SBUF

0154C29938CLRTI

0156B4060F39CJNEA, #6h, DD

0159F940MOVR1, A

015AE741MOVA, @R1

015BC942XCHA, R1

015C743043MOVA, #30h

015E2944ADDA, R1

015FC945XCHA, R1

0160E746MOVA, @R1

0161F59947MOVSBUF, A

01633099FD48JNBTI, $

0166217649AJMPENDD

0168793650DD:MOVR1, #36h

 

 

OMCS-51 MACRO ASSEMBLER VSKURS1

PAGE 2

 

016A7E0351MOVR6, #3h

016C899952CC:MOVSBUF, R1

016E3099FD53JNBTI, $

0171C29954CLRTI

01730955INCR1

0174DEF656DJNZ R6, CC

017675B00057ENDD: MOVP3, #0h

0179210658AJMPBEGIN

017B0059NOP

001360ORG0013h

001312003061CALLINTERRUPT

00163262RETI

00170063NOP

001B64ORG001Bh

001B12005365CALLTIMERFULL

001E3266RETI

003067ORG030h

00300068INTERRUPT: NOP

0031858B3669MOV36h, TL1

0034858D3770MOV37h, TH1

0037FC8D71MOVR4, TH1

0039BC7D0972CJNER4, #7Dh, OK

003C401273JCERD

003EAC8B74MOVR4, TH1

0040BC500275CJNER4, #50h, OK

0043500B76JNCERD

0045C2A677OK:CLRP2.6

0047758D0078MOVTH1, #0h

004A758B0079MOVTL1, #0h

004D02005280JNPEX

0050D2A681ERD:SETBP2.6

00522282EX:RET

00530083TIMERFULL: NOP

0054858B3684MOV36h, TH1

0057858D3785MOV37h, TH1

005AD2A686SETBP2.6

005C758D0087MOVTH1, #0h

005F758B0088MOVTL1, #0h

00622289RET

90END

 

OMCS-51 MACRO ASSEMBLER VSKURS1

PAGE 3

 

SYMBOL TABLE LISTING

----------------------

 

nametypevalue

 

ACCD ADDR00E0HA

BD ADDR00E0HA

BEGINC ADDR0106H A

CCC ADDR016CH A

CONC ADDR0116H A

DDC ADDR0168H A

ENDDC ADDR0176H A

ERDC ADDR0050H A

ERRORC ADDR013AH A

EXC ADDR0052H A

IEC ADDR00A8H A

INTERRUPTC ADDR0030H A

INTT1C ADDR0142H A

IPC ADDR00B8H A

NORMC ADDR013CH A

OKC ADDR0045H A

POC ADDR0080H A

P1C ADDR0090H A

P2C ADDR00A0H A

P3C ADDR00B0H A

QRRC ADDR0135H A

SBUFD ADDR0099HA

SCOND ADDR0098HA

TCOND ADDR0088HA

TH1D ADDR008DHA

TIB ADDR0098H.1A

TIMERFULLC ADDR0053HA

TL1D ADDR008BHA

TMODD ADDR0089HA

 

register bank (s) used: 0

assembly complete, no errors found

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение.

 

Результатом выполнения данного курсового проекта является разработка микропроцессорной системы сбора и обработки информации на базе ОЭВМ КР1830ВЕ51. за базу были взяты устройства , входящие в состав однокристального микроконтролле?/p>