Регистратор дискретных сигналов
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
едний канал). Сохранение времени включения и выключения для нулевого канала начинается с ячейки с адресом 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>