Inferno #03
22 ноября 2002

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 2.

<b>Diploma</b> - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 2.
          5. Practical part


      5.1. Features of

           programs for OEVM


   For the design in Assembler
software for the device,
based on single-chip computer, you need to know the 
architecture and system commands This OEVM.


   AT89C52 microcontroller has many
registers located in address space of RAM and 111 of the 
special functions registers machine instructions [1] format, 
1,2, or 3 bytes with different arguments and methods Addressing 
designed for a variety of data in these registers, and other 
areas of memory (internal data RAM, ROM, external RAM), as well 
as bi-directional external ports. 

   OEVM has:

 ■ 8 KB of internal ROM;
 ■ 32 general purpose registers (GPR)
divided into 4 blocks and 8 are case R0-R7;
 ■ 128 user-defined program-controlled flags;
 ■ register set of special functions
(SFR, Special Function Registers);
 ■ 256 bytes of internal data RAM which intersects the lower 
128 bytes of memory register of special functions. RAM data is 
available only through indirect addressing register of 
registers R0, R1. 


   In OMEVM provides possibility to set the frequency of 
internal oscillator with quartz, LC-chain or external 
oscillator. Clock rate should not exceed 24 MHz.



   Special functions registers with the addresses given in 
Table 5.1.1 (registers, allowing bit-addressable, labeled

asterisk):


                            Table 5.1.1

Designation Name Address


   * ACC Battery 0E0h


    * B Register B 0F0h


   * PSW status register

              program 0D0h


    SP stack pointer 81h


    DPTR pointer data.

              2 bytes:

   - DPL - low byte 82h

   - DPH - high byte 83h


    * P0 Port 0 80h


    * P1 Port 1 90h


    * P2 Port 2 0A0h


    * P3 Port 3 0B0h


    * IP priority register

              Interrupt 0B8h


    * IE Registry permissions

              Interrupt 0A8h


    TMOD Register regimes

              Counter / Timer 89h


   * TCON Control Register

              Counter / Timer 88h


    TH0 Timer / Counter 0.

              High byte 8Ch


    TL0 Timer / Counter 0.

              Low byte 8Ah


    TH1 Timer / Counter 1.

              High byte 8Dh


    TL1 Timer / Counter 1.

              Low byte 8Bh


   * SCON Office after
              successive port 98h


    SBUF buffer followers
              lnogo port 99h


    PCON Management

              consumption 87h



  Battery. ACC - register battery. Commands for working with
battery, use the mnemonic "A",
For example, MOV A, P2. Mnemonic "ACC" is used, for example, 
when addressing the bitwise battery. Thus, the symbolic name of 
the fifth bit accumulator will be as follows: ACC.5.


  Register B. Used during the operations of multiplication and 
other instructions deleniya.Dlya register B may be regarded as 
Additional Cache Register. 

  Register state of the program. Register
PSW contains the status flags of the program.

  The stack pointer SP. 8-bit register,
whose contents are incremented before
writing data onto the stack when the instruction PUSH and CALL. 
At initial reset stack pointer is set to 07h, and

the stack in the data RAM starts with
address 08h. If necessary, by redefining the stack pointer the 
stack can be located anywhere in the internal RAM microcomputer.


  Data pointer. Data pointer
(DPTR) consists of a high byte (DPH) and
low byte (DPL). Contains 16-bit
address when accessing the external pamyati.Mozhet
used as a 16-bit register or
as two independent eight-bit register.

  Port0-Port3. Special functions registers P0, P1, P2, P3 are 
the registers  appropriate ports. 

  Buffer serial port. SBUF
represents two separate registers:
transmit buffer and receive buffer. When
data is written to SBUF, it comes
in the transmit buffer, and write byte
SBUF automatically initiates its transmission
through the serial port. When data
read from SBUF, they get out of the buffer
receiver.

   Registers a timer. Register pair
(TH0, TL0) and (TH1, TL1) form a 16-bit
counting registers respectively taymeraschetchika 0 and 
timer-counter 1. 

   Control registers. Registers are special functions of IP, 
IE, TMOD, TCON, SCON, and PCON contain the control bits and 
status bits system interrupts, timers / counters and

serial port.



   5.2. Development and description of the program


  5.2.1. The implementation of packager using the method
bit RLE with segmentation


   The most critical time of execution
part of the program is a wrapper for the method of bit RLE with 
simultaneous compressed data to the serial port. Because this 
area is crucial for the program, the development of the program 
code is best to start with him. Section 4.1 was estimated time 
in machine cycles AT89C52 between two transmitted bytes. This 
allows you to choose the structure of the inner loop program, 
focusing on the execution time one iteration of the loop count

consecutive identical bits. This time is not
may not exceed:


           1000/128 ¢ 8 (MC)

and in practice - still less to allow time for the rest of the 
program, In addition to the cycle.


   To count the number of identical bits
we definitely need to read an external memory command movx a, @ 
dptr or a similar command movx a, @ Ri, use registers R0 or R1. 
In this case, it is not makes a difference, since both she and 
the other the team performed up to 2 MP. In the transition

to each of the next byte of the address must increment based 
loop within a quarter of the RAM. Of course, not applicable

fragment, making it directly:

       ...

       mov a, dph

       inc dptr

       xrl a, dph

       anl a, # 30h

       xrl a, dph

       mov dph, a

       ...
because one only this snippet runs in 1 +1 +1 +1 +1 +1 = 6 MC.

   Therefore expedient to
to calculate the loop number of passes the cycle so as to 
increment the high byte address took place after exiting the 
loop, and in the loop have only inc dpl (1 MP).


   Next, we need to organize check bits in the bytes read and 
output of the cycle when the desired value of this bit. Such a 
problem can be solved by a team jb acc.N, label (or jnb), where 
N - number inspected bits. But in this case you need to have in 
the program 16 (8 bits · 2 polarity) similar sites that are not 
very convenient. Especially in view of the team cycling djnz 
counter, loop (2 MC), all cycle will take 2 +1 +2 +2 = 7 MP, 
almost at the limit of the allotted time. 

   Thus, it makes sense to "expand
cycle "that is, group actions, carried out in several passes 
cycle in one pass. In our case it suffices to 4

passes within a single (a fragment
to count zero bits):

bp01: movx a, @ dptr; 2 MC

       orl orer, a; an MC: accumulate

                           ; Unit in orer

       inc dpl; an MC
bp02: movx a, @ dptr

       orl orer, a

       inc dpl
bp03: movx a, @ dptr

       orl orer, a

       inc dpl
bp04: movx a, @ dptr

       orl orer, a

       mov a, orer; an MC

       anl a, masker; an MC

       jnz bp0_e; 2 MC: Among 4 Other
                     ; Culated caught bytes

                        ; Unit in the bit of

                             ; Mask masker

       mov orer, # 0, 1 MC

       inc dpl

       djnz b, bp01; 2 MC

       ...


   Tags bp01, bp02, bp03 and bp04 - four
the loop, and the choice of one of them
depends on where the relative segment
(128 bytes) and the section of memory (256 bytes)
Located dptr: increment dph or processing end of the segment 
must occur after the release of the loop. 

   In this case, after the release from the cycle
(After djnz) should be checked:
 ■ Do not need to increase dph? (Dpl = 0?)
 ■ not over whether the memory segment?
((Dpl-segbeg) mod 256 = 128?)

   At the exit from the cycle of jnz necessary
In addition, find bytes, where, after zero
bits edinitsa.Pust first appeared in R0
before the loop is placed content dpl.
Obviously, the search unit to the address
do not need to:

       ...
bp0_e: mov a, R0; in R0 - location

                        ; Dptr to cycle

       cjne a, dpl, bp0_en0; <<

       jmp bp0rese; reduce dpl
bp0_en0:; at 3, but not

       dec dpl; less than before

       cjne a, dpl, bp0_en1; match

       jmp bp0rese; with R0
bp0_en1:;

       dec dpl;

       cjne a, dpl, bp0_en2;

       jmp bp0rese;
bp0_en2:;

       dec dpl;>>

bp0rese: movx a, @ dptr; looking for first unit

                     , With 4 (or less)

                     ; Adjacent bytes

       inc dpl

       anl a, masker; check bits

                     , The mask signal

       jz bp0rese; continue the search,

                     And if zero

       dec dpl; overflow dpl

                     , Can not be, because

       ... And we came out of the inner

                     ; Loop on the unit

                     ; Bat.


   Before entering the loop is necessary to calculate the 
number of passes and to choose the right point vhoda.Vsego 
several possible options regarding the location and dptr 
addresses beginning segment (N = number of elementary through 
the loop): 

a) segbeg <128: appear before the end of the segment.
N = (segbeg +128- dpl) mod 256;
b) segbeg = 128: the end of the segment, while dpl = 0.
N = (segbeg +128- dpl) mod 256 = 256-dpl;
c) segbeg> 128 and dpl> 128: earlier will
dpl = 0.
N = 256-dpl;
d) segbeg> 128 and dpl <128: appear before
end segment.
N = (segbeg +128- dpl) mod 256.


   The initial value of loop counter
(Count) depends on N as follows:



  N 1 2 3 4 5 6 .. 127 128

count 1 1 1 1 2 2 .. 32 32



   Therefore, the count is given by:


           count = (N +3) div 4

that the assembler AT89C52 easiest way to implement a sequence 
of commands (if value of N placed in the battery):


       ...

       dec a

       rr a; Rotate right

       rr a; in 2 categories

       inc a

       mov b, a; number of passes loop

       jbc b.7, bp0i_x1; choose one of the

                   ; Four entrances to the cycle

       jbc b.6, bp03; 01 immediately reset

                    ; Testable bits 6.7

       jmp bp04; 00
bp0i_x1: jbc b.6, bp01; 11

       jmp bp02; 10


  The rest of the procedure, less packaging slozhna.Vnimaniya 
deserves only a small ragment, where a short (no more than than 
128 bytes) conditional jump due to large series have to 
continue long unconditional: 

       ...

       cjne a, dpl, bp_inseg_jmp
, Reduces the number of remaining segments

       djnz R7, bp_main_jmp; continue,

                            And if not zero

       call waitsend; call p / n waiting

                          ; Transfer bytes

       jmp SENDSUM; issuing control

                                   , Sums
;;;;;;;; OUT of p / n READ CHANNEL ;;;;;;;
bp_inseg_jmp:

       jmp bp_inseg; compensation is short.

                           ; Transition cjne

                   C pom.dlinnogo transition.
bp_main_jmp:

       jmp bp_main; compensation for short

                            ; Transition djnz



           5.2.2. Implementation

        the main loop program


   After reset or turn on the device,
after initializing and conducting self-management program ALS 
goes to the main loop. The main program loop is engaged in 
obtaining and processing training posts.


   Receiving the frame was convenient to realize through the 
routine returns after successful or unsuccessful reception of a 
frame in the accumulator exit, in case B - CPC, and in the 
memory at FramBuf - adopted by the utility of the data frame (ie

there are no bytes of the CPC, the length and control
amount).

   Compliance with the return value of the battery mean errors 
made by the following: 



     ACC type errors


      0 no error

      1 error receiving CPC

      2 invalid frame length

      3 checksum error



   Sub-frame reception has access to
If a connection failure during the reception of the frame.
Remote connection is recognized as an excessively long pause 
after taking the bytes and wait for the next. The maximum delay 
between bytes given pause in the program constant:


GetWait equ 4000; the maximum delay between

            And the taking of bytes (x5 MC)


   The main loop can be implemented as follows:

;-------- Main loop (MainLoop) ------- MainLoop:

       call GETFRAME; receiving a frame from

                       ; Serial

                        ; Port buffer

       cjne a, # 0, ML_er1; Jump if

                    ; Receive an error (A <> 0)

       mov a, b; CPC

       anl a, # 7fh; dumping older

                        ; Bit CPC

       cjne a, # 08h, ML_2; Check a dig at

                        ; Existence
ML_2: jc ML_noer; transition, if not

                        ; Error command

                        ; (A <08h, C = 1)
ML_coer: call _ECOM; Call podprog
                    ; FRAMEWORK ERROR COMMAND

       jmp MainLoop; Transition to

                        ; Beginning of the cycle
ML_noer: mov dpl, # Low (CallTab); <<Writes in

                             ; Dptr address

                            ; Under the table
       mov dph, # High (CallTab); programs>>

       add a, acc; shift accumulators
                        ; Torus left

       jmp @ a + dptr; Go to the table

                     ; Subroutine calls
ML_er1:

       djnz acc, ML_er2; jump if not

                       , Error receiving CPC
, 1 = error receiving CPC

       jmp MainLoop
ML_er2:

       djnz acc, ML_er3; jump if not

                        ; Data error
2 = invalid frame length
; Or field data KOP.7 = 0

       call _EIO; subroutine call

                  ; ERROR DATA

       jmp MainLoop
ML_er3:
3 = checksum error

       call _EIO; subroutine call

                   ; ERROR DATA

       jmp MainLoop
;---- End of main loop (MainLoop) ---

   Here you can see that the transition to a handler
command or query is implemented through a table routines. Such 
funds provided by the system commands OEVM, very convenient In 
this case, since the number of processed CPC can easily be 
increased, and This program does not become cumbersome and not

will run slower.

   The main part of the transition mechanism on the table - the 
team jmp @ a + dptr, which makes a transition to a computed 
address dptr + ACC. In our case dptr points to

the first address table, and the ACC contains the offset (a 
multiple of 2). The table consists of several short transitions 
(ajmp), each of which indicates their program-handler. At the 
end of the handlers is a team jmp MainLoop to return to the top 
of the main loop. 



         5.2.3. The composition of texts

       software modules Microlight


   Main module is SLA.asm. He
contains:
 ■ Ads global constants;
 ■ Directive memory allocation;
 ■ initialization code;
 ■ the main loop and the transition table;
 ■ general routine correction dptr after crossing the section 
of memory;  ■ Directive compiling other modules

program.


   Module io.asm, implements the basic input / output 
operations in sequential port contains the following necessary

this subroutine:
 ■ SENDSUM - a procedure for the port checksum-csum. Here and 
further input - in the battery;  ■ SEND - the procedure for 
issuing byte buffer serial port without waiting for his

transmission, with accumulation of CRC;
 ■ movsbuf - a procedure for byte in the buffer of the serial 
port without waiting for its transmission, without the 
accumulation of control amount;

 ■ SENDKOP - the procedure for issuing the serial port of the 
CPC and its complement to zero;  ■ SENDACC - a procedure for 
content battery in the serial port

expectation of the transfer and accumulation of CRC;
 ■ waitsend - procedure standby transmission
bytes from the buffer of the serial port;
 ■ GETFRAME - a procedure for receiving the frame
serial port;
 ■ GETBYTE - a procedure taking a byte from
serial port.


   The module contains routines messages.asm issuing simple 
response messages:  ■ _COMOK - routine issuance of a ;  ■ _ECOM - routine processing errors

team. Issuing a ;
 ■ _EDATA - routine processing errors
data. Issuing OS ;
 ■ _EIO - routine issuance OS <Error
Data>;
 ■ _RESOK - routine issuance of a .


   Control.asm module contains procedures
control of RAM and ROM:
 ■ SIGNS - control ROM (8k) signature
analysis;
 ■ EXRAM - control of external RAM (16k) with
cleaning.


   _rchan.asm Module contains procedures
processing your request <Read channel>:
 ■ _RCHN - general routine analysis and
output data channel the most effective
method of encoding;
 ■ rch_const - a procedure for data
constant (not changing) channel;
 ■ rch_noise - a procedure for data
fluctuating (noise) channel;
 ■ bitpack - the procedure for issuing a non-permanent data 
kanala.Na the basis of statistics channel selects the encoding 
method: uncompressed or compressed at the bit method RLE;

 ■ FRONTS - procedure of counting statistics
(Number of edges) of the signals in this area
RAM.


   Other modules contain one important protsedure.Vhodnye data 
for these procedures should be adopted in the buffer frame.


   The module contains a routine _rstate.asm _RSTATE, which 
serves to process the request <Read the status of ALS>. Module 
_rram.asm contains a subroutine _RRAM, serves to

processing your request <Read RAM>. Module
_selfc.asm contains sub _SELFC
processing command .


   The listed programs are all
list of required modules included in the software specialist
logic analyzer.



   5.3. Standalone debugging program

               model


   To debug the program management of ALS
was used by the monitor debugger Debugger51. With this tool, 
you can perform c program activities such as: 

 ■ execution until the specified operator
(Lines of code);
 ■ Stepping through the program;
 ■ execution until a breakpoint;
 ■ Turning on and off the breakpoints;
 ■ view and edit the values ​​of registers and memory cells;
 ■ Loading and saving the contents of all
types of memory OEVM on magnetic media.


   Using the Debugger significantly reduced the duration of 
writing the main algorithms of the program through automation

find and correct errors.

   Lack of debugging algorithms data measurements on the 
existing ALS offset by the creation of his model, which allowed 
the design of programs on a PC. For this were made as follows:


 ■ in the basic input / output functions (module
io.asm) changes. Instead of giving
data to the serial port, procedures
bytes of data are entered into the external RAM, for
outside the region used in 16k.
 ■ in the main program module disabled
Challenges of self-control procedures and receiving frame. 
Instead of receiving a frame in the trace with Using the 
debugger, the registers and RAM OEVM substituted for the data 
frame being debugged command or query.

 ■ channel data generated using
pseudo-random numbers by a special program written in Delphi, 
and tracing of goods in external RAM OEVM. Listing 
program-signal generator is shown in application of the 
graduation project.  ■ When you are debugging the procedure 
places the call is put the breakpoint.  ■ Personnel operating 
system returned the program management of ALS, are formed in 
the external memory, then discharged by means of a debugger and 
tested for accuracy. 


   For example, we can show how a
generated random sequence
signals with an initial value of pseudo-random generator to be 
2 (ris.5.3.1). 


    Signal generator [_] [O] [X]



 [Generate] Seed = [2] not tested [Test]


Fig. 5.3.1. Generator test signals.


   Below is a dump file generated by the program memory area (4 
KB), where the values ​​of sampling signals are arranged as if 
they were read recording scheme of ALS. This file will be used 
to debug a program of ALS in the Debugger Debugger-51 (Table 
5.3.1). 


             Table 5.3.1.

     Dump the generated signals

0000: D6D6D292-90802021-21252D2D-2D296868
0010: 68484044-44444404-04040404-00000000
0020: 40404046-66666666-66323232-32323232
0030: 1E1E1C1C-1C5C5C4C-48404040-40400404
0040: 24242424-24202060-60606060-40434347
0050: 0707078F-8F8E8E8E-CACACAC8-C8D0D034
0060: 34343434-34343430-30100000-40404040
0070: 40040404-0C0C0C0C-28282828-2A2A2222
0080: 26666646-46460602-00001010-10101414
0090: 14145454-70707070-78686868-682C2D0D
00A0: 0D050501-03030202-42424242-46464444
00B0: 44400020-20202024-2424BCFC-FCF8D8D8
00C0: D8D8D898-90909090-96161606-66666666
00D0: 66666040-40000404-0404040C-08080848
00E0: 48486868-6C6C6464-24242424-20202123
00F0: 03031313-13131616-54545454-5C484808
0100: 08282828-2C242424-24646444-44444040
0110: 40404040-02020606-06060606-26262232
0120: 727070F0-F0F8FCFC-FCBC3C1C-04040400
0130: 00000000-00444444-44444444-40202022
0140: 22222626-26262607-03034B5B-5B59585C
0150: 54141414-14100000-00202020-24242464
0160: 64646060-60404042-4A0E0E0E-0E0E0E0E
0170: 0A0A0A40-60606070-74747434-34343434
0180: 10101000-00000404-C4C4C4C4-CCCECECA
0190: EA6A2A2A-26262626-26060444-44444040
01A0: 40404040-40410101-0505151D-1D3D3D39
01B0: 39387070-70505046-46464646-46020202
01C0: 02020202-06044444-44646464-60606060
01D0: 2000080C-0C0C0C0C-0C141454-505050D0
01E0: D0F2F2F6-F6B63626-26262606-06000000
01F0: 00484848-484D4D4D-4D0D2525-21212121
0200: 21242404-04040444-54565252-52525252
0210: 52563636-36363630-20282828-28280848
0220: 484C4C44-44444444-44404000-00002020
0230: 24242626-26260642-42424242-42404404
0240: 141C1C9C-9D9DBDB9-B9B9F8F0-70545454
0250: 44444444-04040002-02020202-02626262
0260: 66666664-2C2C2828-08080808-00000044
0270: 44444444-44444424-20202030-30303636
0280: 56565652-52525A4A-0A0A0A0C-0C0C0404
0290: 24646460-60606061-61418181-85858484
02A0: 848484C4-C4C44446-46426262-6A6A2A2A
02B0: 2A3A1C1C-1C141414-14141454-54505050
02C0: 50505050-54446424-24202022-2222020E
02D0: 0E0E0E4E-4E4E4642-42404000-00000404
02E0: 04242420-20303030-71717151-5557575F
02F0: 5F5F0B0B-0A0A0A00-04040424-24646460
0300: 60606060-6464E484-84848484-848480C0
0310: C0C84A4A-4E4E4E5E-7E3E3636-36323232
0320: 30300040-44444444-44440400-00000000
0330: 00000004-44646464-60606A6A-2A2A0E0E
0340: 0F0F0F17-17171551-51505050-50141414
0350: 14342424-24202020-20202000-40444C4C
0360: 4E4E4E4E-4A4A4242-42828484-A4A4A4A0
0370: A0A02020-40404454-54545450-10101818
0380: 181C1C1C-0C0C0606-22222262-62666666
0390: 64646404-04040400-00000000-00000041
03A0: 4D4D4D4D-5C7C7C3C-34303032-32323212
03B0: 06060646-46444040-40404040-40400424
03C0: 24242424-24202028-08080808-48404444
03D0: 44C4C6C2-C2929292-92163636-36363230
03E0: 20206060-64444444-44444000-08080808
03F0: 28282820-20202424-04444442-42434343
0400: 43031313-16161616-14343474-74747470
0410: 70684848-0C0C0C0C-0C0C0C00-00004040
0420: 40646464-64642626-22222222-22220206
0430: 46464646-42480808-0888989C-9C9C9CF4
0440: F4F0F070-70706060-60242424-04040501
0450: 01010143-43434246-666E6E6E-2E2E2E28
0460: 28080808-08004444-44444454-50505010
0470: 30303434-34242626-26060642-424A4A4A
0480: 4A4A4A0E-04040404-24202020-20202020
0490: 24646464-44404040-00001010-1014141F
04A0: 1F5F5F7B-7B7B7B7B-622222A2-80848484
04B0: 84840400-00004040-44444444-44446060
04C0: 60202828-282C2C2C-3C3C3C36-56525252
04D0: 52525252-52121614-04042420-20202020
04E0: 20206064-6464444D-4D490909-09090904
04F0: 04040404-06060602-02626262-62626664
0500: 74747474-54541414-10101090-9098988C
0510: 8C8C8CEC-EC6C6860-60202020-20242626
0520: 26262606-02424242-42424242-44040404
0530: 04243030-30303838-397D7D7D-7D5D5541
0540: 40000000-00000000-06060666-66666262
0550: 6262626A-2E0C0C0C-0C0C0808-00004040
0560: 44444454-54545410-30303030-B0B4B4B4
0570: B4B686C6-C6CECE4A-4A4A4A4A-4A4A0A26
0580: 26242424-25252521-41414141-41404044
0590: 04040404-04000020-60707070-707A7A1A
05A0: 1A1E1E1E-1E1E1604-04444440-40404040
05B0: 40400424-24242424-24244444-40404040
05C0: 40080A0A-0E0E0E0E-0E0E0E42-42434341
05D0: 61617575-757534B4-94909090-9090D0D0
05E0: D0C04040-40646424-242C2E2A-2A2A2A2A
05F0: 2A0A0A0E-0E464646-46444440-40000000
0600: 20202024-24242424-64445050-50585858
0610: 1C1C1C1C-16161606-07072723-23232323
0620: 63606464-44444444-4C0C0C08-08080808
0630: 08040404-64646464-64606060-00101092
0640: 92929696-96961616-16464642-62626268
0650: 28282828-2C0C0C0C-0C0C0444-40404040
0660: 40000000-04040424-24242033-33333373
0670: 77775757-5F5E5C18-18080808-08000004
0680: 44446464-64602020-20200000-00040404
0690: 44444448-4A4A4A4A-4A5A5E36-36363636
06A0: 32222020-A0C0C0C4-C4C4C4C4-C4C4C0C0
06B0: 80800000-00000404-2C2C2E6E-6A6B6B6B
06C0: 6B636767-67260606-04000000-00101414
06D0: 14141414-54545474-70606068-68682828
06E0: 28280C0C-04060606-06020242-42424266
06F0: 64646464-24242020-20202020-38585C5C
0700: 5C5C5C50-D0D0D0D0-D0848484-A6262626
0710: 26666363-63434307-07060604-04000000
0720: 00080808-4C4C6C64-64602020-20243434
0730: 34141414-54545454-52525212-02020206
0740: 06060606-2A2A6868-68686868-68642404
0750: 04040404-04000000-40404042-46464676
0760: 76363232-32323030-10189CDC-DCDDCDCD
0770: CDC5C101-00002020-20202424-24666666
0780: 46424242-42424242-42080C0C-0C0C0C0C
0790: 2C2C3C34-34747070-70505050-44444404
07A0: 06060606-02020202-02024260-6060646C
07B0: 6C2C2C2C-08080800-00000000-40404444
07C0: 44444444-44427233-33333333-333736B6
07D0: 9696D6C0-C0C0C0C8-48484C4C-0C0C0424
07E0: 20202020-20202464-64646464-40404000
07F0: 00000206-0E0E0E0E-0A1A1A1A-7A7A7A72
0800: 72767676-66242404-04040400-00000000
0810: 00000444-44444444-44646060-28282828
0820: 292B2F2F-2F272707-57565250-50505050
0830: 14141414-14242020-A0A0E0E0-E0E4E4E4
0840: 0C0C0C0C-0C0C0808-0A0A4242-42424246
0850: 46062626-24242424-24301050-50505050
0860: 54545454-545C0C0C-08080828-2A2A2A22
0870: 62666666-66666666-42000000-00010505
0880: 05050545-41404040-40606474-34343438
0890: 38381A1A-1A1E0686-C6C6C6C6-C6C2C2C0
08A0: C0002020-24242424-24246440-40404040
08B0: 4044444C-0C0C0808-08082820-20203434
08C0: 76767676-76725252-12121204-04040404
08D0: 04050149-49494969-6D6D6D24-24242424
08E0: 00000000-40404040-46460606-06262222
08F0: 32327272-7AFAFEDE-DEDE9E9E-90808080
0900: 80800004-04040404-04444040-60606060
0910: 24242424-24040446-464E4A4A-4A4A0A0A
0920: 0A062624-34343434-70705050-51515555
0930: 55454544-00000000-00000000-00060E2E
0940: 6E6E6E6A-6A6A6A22-22200404-04040404
0950: 00404040-40444454-54541434-34303030
0960: B0B0A0A0-A4ACECCC-CE4E4A4A-4A020202
0970: 02020606-06262620-20206060-60614545
0980: 45050504-14141410-18181858-585C5C5C
0990: 74766626-26222222-22222222-22424646
09A0: 44444404-04040400-00080808-4868686C
09B0: 6C6C6C64-64747476-36121292-92929296
09C0: 96969414-54544444-40404028-28282828
09D0: 282C2D25-05050101-01014140-40444446
09E0: 46060626-26263232-32301010-10545C5C
09F0: 5C5C4C48-48480800-20242424-24246464
0A00: 64606060-60000004-04040606-06020202
0A10: 02024242-52565676-7C7C7838-38382828
0A20: 20200101-050505C5-C5C5C5C5-C5C4C480
0A30: 82828202-0A2E2E2E-2E2E2C68-68686060
0A40: 74747454-54101010-10100000-00040404
0A50: 44444444-60606062-62222222-2A2E0E0E
0A60: 0E0E0E06-04000000-00004040-40505454
0A70: 54141434-35353131-31313131-35754646
0A80: 4646CA8A-8A8A8A8A-8A8A8284-84044444
0A90: 44444464-60606060-60202424-24243414
0AA0: 141C1C18-185A5A5A-5A5A5646-46464606
0AB0: 06062020-20202020-24242464-64444440
0AC0: 40,404,000-0008080A-0E0E0E0E-2E266662
0AD0: 70707071-71717515-15151514-10101000
0AE0: 00000404-44444464-646E6E6E-6AEAEAEA
0AF0: 8A8A8E8E-84040404-04040444-40606060
0B00: 70703030-30303414-14141454-44444242
0B10: 4242020A-0A0A0A0E-2C2C2C2C-64646464
0B20: 64646465-45010101-01010101-10141414
0B30: 14145656-72727A7A-6A6A2A2A-2E2E2E0C
0B40: 04040404-44404040-40C0C0C0-C0C0C084
0B50: 84A42424-24242420-20604040-42424252
0B60: 56161616-1E1E1A1A-18184848-4C6C6C64
0B70: 64242420-20202020-20204445-45454747
0B80: 47464642-02020202-02060E0E-2E6E6C6C
0B90: 6C686860-30303010-14141414-14141050
0BA0: 50404044-44444406-06060202-02022A2A
0BB0: 6E6E6E6E-E4E4A0A0-A0A08080-00000404
0BC0: 04044444-44444040-50101010-14151535
0BD0: 3737373F-3F3F2B2A-6A6A6848-40404444
0BE0: 44444444-00000000-20202024-24242464
0BF0: 64644444-4444440E-0A0A0A1A-1E1E1E16
0C00: 16565656-44406060-60606060-60242404
0C10:-8480C0C0-84848484 40484848-4C0C2C2C
0C20: 2E262622-22232323-23236357-54545454
0C30: 54545410-10101010-10000000-04246464
0C40: 6C6C6C68-68282A2A-02020206-06464444
0C50: 44444440-40000000-20202424-24247474
0C60: 74545454-50505818-181A9A9A-9E9E8E8E
0C70: 8A8AE2E2-62606024-24242404-04000101
0C80: 01010145-45454545-44646060-60202026
0C90: 2E0E1E1E-1E1E1E1A-1A1A1818-18404040
0CA0: 40446464-24242020-20202020-00040404
0CB0: 44444444-46464242-0A2A2A2A-2A2A2A22
0CC0: 20242474-54555151-51515111-01000484
0CD0: 84A4A4A4-A4202068-68684848-484E0E0E
0CE0: 0E060202-02020242-42404040-44444444
0CF0: 04042020-30303078-78787C5C-5C5C5C1C
0D00: 14100202-02020202-02064666-66666262
0D10: 62220200-01010105-05454544-44404048
0D20: 48484C0C-2C2C2C2C-34343010-90D0D0D0
0D30: D2D2D2D2-16161626-26262020-20202000
0D40: 00404044-44444444-04040808-28282828
0D50: 28282064-64465656-56561612-12121210
0D60: 14141414-74646060-60606064-640C0D0D
0D70: 0D0D0909-09030302-06464646-46666662
0D80: 62606060-30303014-14141414-14141414
0D90: 40404040-404C6C6C-2CACACAC-ACACA822
0DA0: 22220202-42424646-46464644-40000000
0DB0: 00002024-24242424-20606061-61415555
0DC0: 5D1D1C1C-18181818-10101252-52524266
0DD0: 66662626-26262222-20000000-00000008
0DE0: 084C4C4C-4C4C4C4C-4C484800-00202022
0DF0: 26262626-A6A6C6C6-C2D25252-52521614
0E00: 14141419-19192929-29696464-64646404
0E10: 00000000-00000000-44464646-46424262
0E20: 222A2A2E-2E2E0C0C-08081818-18505454
0E30: 54545454-54501000-00202424-24242464
0E40: 64646262-424A4A0A-0A0A0F0F-0F070504
0E50: 04444444-446060E0-E0A0A0A0-B0B4B4B4
0E60: 94949494-10105050-544E4E4E-4E4E6E2A
0E70: 22222222-22222246-46464444-44444000
0E80: 00000000-00000024-6C6C6C6C-6C686860
0E90: 60301212-12161616-16161616-52525041
0EA0: 41414545-45444420-20202020-20282828
0EB0: 2C2C6E4E-4E464242-42420202-02060606
0EC0: 06043430-303030F0-F0F4F4F4-F4E4CCCC
0ED0: 8C8C8888-08080808-04044646-66666262
0EE0: 62626262-66262606-06040405-05050101
0EF0: 01011155-5454545C-78787878-3828282C
0F00: 2C2C0404-04044444-46464642-42420222
0F10: 22222222-22222626-24246464-44444858
0F20: 58585858-D8D89C94-94949410-50507070
0F30: 60646464-64646022-22030B0B-0B0F0F0F
0F40: 0E060604-40404040-60646464-64242424
0F50: 24200000-00001010-14545454-54505050
0F60: 52524242-62222A2A-2A2A2A2E-2E2E2604
0F70: 44404040-40404040-40000404-04242424
0F80: 24202060-60707171-F1F5DDDF-DF9F9E9E
0F90: 9A121202-02020644-44444444-44404060
0FA0: 60602020-24242C2C-2C2C0C48-48484040
0FB0: 40400202-02020606-06161616-36363070
0FC0: 70707070-70703014-04040C0C-0C080808
0FD0: 48484C44-46464642-62636363-23232525
0FE0: 25250505-44404040-40505054-14141414
0FF0: 9C9CBCBC-BCB8B8A8-E0E2E2C2-C6460606


   If you run the program under the debugger it
substituted debug read command
Channel 0, then put a breakpoint and then invokes the handler 
of the team (ris.5.3.2). 

[Prim.izdateley: here was a working screen
monitor debugger in landscape layout, sm.grafichesky material]


    Ris.5.3.2. Debug programs ALS

    with a debugger Debugger-51.


   The selected area of ​​memory containing
data response message of the program ALS
(Compressed data channel 0), means the debugger is saved to a 
file result.bin, after which the file is tested for validity 
and relevance generated program signals Signal

generator (Figure 5.3.3).


    Signal generator [_] [O] [X]



 [Generate] Seed = [2] tested ok [Test]



    Ris.5.3.3. Content Checking

        the reply of ALS.


   When testing is recognized coding method specified in the 
data the OS, the data channel uncompressed, and then are 
compared decompressed signal (figure - the bottom) and the 
source of channel 0 (the figure - the top). 



       5.4. How to work with ALS


   The program is designed to automate the process of setting 
devices connected type of MWI to the bus. Device is

use within predpriyatiya.Nizhe describes the basic requirements 
for the interface system of ALS - PC [16]: 


   ALS is needed for the work of general purpose PC with 
installed software providing a specialized service logic 
analyzer connected to the SLA on the serial interface RS-232.


   PC program (pool) should manage the logic analyzer
MMI (ALS) on RS-232 interface, as well as
reception and display the time display
diagrams of the transfer of information
MMI interface for configuring hardware and
localization of failures. It should also provide read and write 
to / from a file on magnetic disk measurement results to / from

working buffer with the parameters
start-up and measurement.

   Starting measuring LA should be initiated from the keyboard 
PEVM.Pri start measuring the pool must perform the following 
steps: 

 ■ Stop the measurement from the previous start issuing 
commands to the aircraft ;  ■ blanking the 
display timing chart from previous measurements;

 ■ start of measurement for the issuance of the aircraft frame
parameters of the command ;
 ■ cyclical survey of the status byte of
LA with queries <Read state
LA> (with output to screen) until the end of measurement or 
before the intervention of an operator with PC keyboard with 
the issue on the LA team ;

 ■ If successful, the measure -
Reception of LA measurement results Queries <Read channel> 
sequence of channels involved in the working buffer, and then 
output on screen or in a file. 


   Pool must ensure that-initiated with
keyboard setting to its original state
LA issuance of the interface on the LA team in the initial 
installation, followed by a reception and indication of the 
status byte of the aircraft. 

   Self-control aircraft can be run on
operator commands the PC with the following results display on 
the PC must be submitted displee.S command  and query <Read the state of LA> given in 
section 3.3. 

   LA can be connected to a PC for work and two-machine 
odnomashinnom rezhimah.Odnomashinnym a mode of operation, when 
the same PC makes management of complex devices and eliminates 
the measurement results. In the two-machine mode, a single of 
PC monitors, and another - eliminates the measurement results 
to LA. 


   When working in the mode of interaction odnomashinnom pool 
and control program can implemented in the following order:


 ■ removed power from the Akian and LA;
 ■ powered on PC;
 ■ call the pool, given the type of device and requested type 
of switching;  ■ The equipment at the place specified device is 
installed with the required type of aircraft of switching and 
with a given device;  ■ is powered by the aircraft;

 ■ means PULA LA is set to
original condition and monitor the compliance of the type of 
switching a given type of device;

 ■ powered by Akian;
 ■ means pool has a launch options and measuring the aircraft 
and begins measuring the aircraft in a single mode.  ■ will 
exit from the pool in DOS;  ■ invoked and runs a control 
program Akian;  ■ by stopping the control program in and out of 
it in DOS;  ■ called POOL without violating state aircraft;

 ■ Examine the means POOL
LA, and if the launch took place, taken from
LA and displays the results of measurement.


   When working in two-machine interaction mode pool, and the 
control program can implemented in the following order:


 ■ removed power from the Akian and LA;
 ■ is powered by an auxiliary
PC with an installed pool;
 ■ call the pool, given the type of device and requested type 
of switching;  ■ The equipment at the place specified device is 
installed with the required type of aircraft of switching and 
with a given device;  ■ is powered by the aircraft;

 ■ means PULA LA is set to
original condition and monitor the compliance of the type of 
switching a given type of device;

 ■ powered by Akian;
 ■ means pool has a launch options and measuring the aircraft 
and begins measuring the aircraft in a single-mode or in batch 
mode;  ■ invoked and runs a control program Akian;

 ■ Examine the means POOL
LA, and if the launch took place, taken from
LA and displays the results of measurement.


   Simultaneous (two-machine) mode can be implemented on a PC 
with established multi-tasking operating

system, such as MS Windows.



         6. The economic part of

6.1. Defining complexity of development

         software


   Developed a software product belongs to a subsystem <Quality 
Control>. 

   Initial data for calculation:

 ■ number of varieties of forms of input
Information: 2 (including variable: 2);
 ■ number of varieties of forms of output data: 2;
 ■ degree of novelty of the problem developed: B (development 
project using Typical design decisions as long as they

changes, development projects, which have similar solutions);
 ■ complexity of the algorithm: 1 (optimization algorithms and 
simulation systems and facilities);  ■ difficulty organizing 
control input Information: Group 12 (the input data and

Documents uniform format and content
implemented a formal control);
 ■ complexity of organizations monitoring the output of 
information: the group of 22 (print documents monotonous form 
and content, a conclusion amounts of data on magnetic media);



   Software product developed in krosssredah programming for 
processors Type MCS-51: The editor-translator Asm51Edit

2 and debugger Debugger-51 in Assembler, using standard design 
solutions and standard modules in a volume of 20%. The 
development project was conducted in an operating mode in real 
time. 


   When calculating the norms of the time depending
from the initial data for calculation should
apply appropriate correction factors. [13] The following is a 
list of values ​​of these coefficients.


1. Developing Terms of Reference:
 ■ developer formulation of the problem:
0,65;
 ■ For a software developer: 0,35.
2. Develop conceptual design:
 ■ developer formulation of the problem:
0,7;
 ■ for software developers: 0,3.
3. Development of engineering design.


           1.2

      K = · 1.1, 26.0, 85 ¢ 1.07.

       Society 2

4. Development of the project.


       1.20 · 2

   K = · 1.1, 32.1, 15.0, 8 ¢ 1.468.

   Society 2

5. Implementation.


        K = 1.1.1, 21.0, 8 = 0.968.

        Society


   To account for the use of personal computers in the process
design introduced correction factors:

 ■ for the calculation of complexity (for stages
TP, RP, introduction): 0,6;
 ■ to estimate the cost of computer time:
1.32.


   Since the model rules of time on programming tasks for 
computers were designed for legacy software development tools, 
then all the coefficients used should be

introduce a correction factor 0,6.


   We define the complexity of the stages of development 
proekta.Rezultaty calculations are shown in Table 6.1.1. 


                            Table 6.1.1


    Stage-Adjusted Costs Costs

  development time esidual time

   Project people .- coefficients given

                 days coefficient p.koeff.


   Developer

   setting 0.65 · 0.6 12

   problem
TK 1931

   Developer

   ON 0.35 · 0.6 7


   Developer

   setting · 0.6 0.7 27

   problem
VC 67

   Developer

   0,3 · 0.6 12


   Developer

   setting 57 1,07 x 21

   problem x0, 6.0, 6
TP

   Developer 1,07 x

   TO 21 x0, 6.0, 8 June


   Developer

   setting 23 1,46 x 11

   problem x0, 6.0, 6
RP

   Developer 1,46 x

   From 104 x0, 6.0, June 1954

In Developer
by setting 14 0,968 x 5
e problem x0, 6.0, 6
q
p Developer 0,968 x
. TO 21 x0, 6.0, 6 July

 Total 338,164



   The number of performers is calculated
based on the planned fund of working time, which is 80 days, 
according to the formula: 


                TObsch

            H = [people]

                  F


   where TObsch - total time spent on
all stages of development; F - Facility Planning
working time.


  TObsch = 164 person-days, F = 80 office. days.


               164

            H = 2.05 people.

                80


   Costs of computer time are:


            33.1, 32 ¢ 44 days.



   6.2. Building a ribbon graph


   Ribbon graph is a table that lists the names of
works, office performers, the complexity
and the duration of the execution of each type of work. 
Continuation of the table is a chart reflecting the duration of 
each works in the form of time slots, which are arranged in 
accordance with the sequence of works [14]. 

   To construct a ribbon graph, the following input data:

 ■ the total complexity of the development;
 ■ complexity of individual stages;
 ■ the planned development period (80 days);
 ■ The cast (headed by an engineer-designer).

 Based on the obtained in 6.1. data construct a ribbon graph 
(ris.6.2.1). 


Sta-time-duration of the work week
Diya me
razr.is-1 3 5 7 9 11 13 15 17
avenue n 2 4 6 8 10 12 14 16

TK 9 5 4
EP 19 1 5 4 5 4
TP on January 14 5 5 3
RP 32 2 5 6 2 3 6 3 May
Imple. 6 4 2

Vsego80 5 5 5 4 5 5 5 5 5 5 6 2 3 6 5 5 4



     Fig. 6.2.1. Belt schedule.



  6.3. Budgeting for development


   Cost of software
consists of the following types of costs:

1. wages developers (conditional adopted as the basis for the 
enterprise) for 80 working days, subject to employment by the 
project leader in 25% of the time. The working month equates to

21 working day:

 (5000.0, 25 3100) · 80/21 = £ 13,059.52;

2. More salary botchikov developed, comprising 10% of the item
1:


      13,059.52 · 0.10 = £ 1,305.95;

3. social contributions, constituting 36% of the sum of items 1 
and 2: 

 0.36 + (13,059.52 1,305.95) = 5,171.57 USD;

4. the cost of computer time:
 ■ amortization of computers:
- Depreciation rate: 25,3 USD / day;
- Operation of a computer takes 44 working days:


         25.3 · 44 = £ 1,113.20;

 ■ energy costs:
- Computer Power: 0,2 kW;
- Operation of a computer takes 44 working days;
- A working day is 8 hours;
- Cost of 1 kilowatt-hour of electricity is equal to 0.89 
rubles: 


       448.0, 2.0, 89 = 62.66 RUB;

 ■ the cost of software:
- Used development tools created
in the enterprise;
- On the computer is running Windows'98;
- The amortization period OS: 2 years;
- Operation of a computer takes 44 working days;
- Figure includes 250 working days;
- The cost of OS distribution: 3100 rubles;
- Because this OS is used for
other tasks besides the software development of ALS, the
introduce the utilization factor OS
designers of ALS, which is equal 0.5:


        44

           · 3100.0, 5 = £ 136.40;

      250.2


   Cost of software:


   13059.52 +1305.95 +5171.57 +1113.20 +

     62.66 136.40 = £ 20,849.30.

Level of profitability of the product is laid on the enterprise 
level 25% of the cost:



      20,849.30 · 0,25 = 5,212.32 USD.


   The price of the software include:
 ■ cost (£ 20,849.30);
 ■ profitability (5212.32 USD);
 ■ value-added tax (20%):

 0.2 + (20,849.30 5,212.32) = 5,212.32 USD.


   Thus, the price of software is:

20,849.30 5,212.32 5,212.32 31,273.94 = rub.



      6.4. Conclusions on economic

  effectiveness of the product


   Implementation of the developed software
product will:

 ■ improve the quality, scope, technical
the level and rate performed by
work program;
 ■ increase the volume and reduce the time information 
processing;  ■ improve the basic performance of the company.



   Calculation of economic efficiency
presented in Table 6.4.1.


                           Table 6.4.1.


                  Manual Adjustment of

                 adjustment using the ALS

Laboriousness
the solution of a
problem, March 25
man-hour.

Number
problems solved, 50 50
Mykh year

Hourly rate USD. 15 15

Hour's worth of machinery - 25,3
time now.

Costs for
per 25.50.15 = 3 × (15 +25,3) x
for the year now. = Thirty thousand x50 = 6045



   Annual savings:


        30000-6045 = 23955 rub.


   Payback:


    31273,94

             ¢ ¢ 1.3 years 16 months.

      23955






Other articles:

Softinka - New version 8 tricolor editor color editor v 0.04. Improvement, test results and a list of changes.

Inferno - On the shell.

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Comments on the text of the diploma.

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 1.

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 2.

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 3.

Diploma - Diploma Alone Coder-a. Development of software for special logic analyzer. Part 4.

Inferno - Introduction by the editors.

Inferno - The authors of the magazine.

Reflections - Visiting Cristobal junta. Methodology to evaluate fiction and inventing new ways of fantastic ideas.

Reflections - How to become a writer. Leadership.

Inferno - Letters to the Editor.

Poetry - Verse, "Who am I?"

Opportunities Spectrum - Pseudo-Color: Myth or Reality? Algorithm translation in black and white in color.

Gamedev - WORM-255F. Python game code size of 255 bytes with the comments.

Humor - Literary anecdotes.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Party Zone - DI: HALT99; Better late than once! History disastrous demopati.
B.B.S. News - The work B.B.S. 'ca.
Graphics - Image ANSI graphics.

В этот день...   28 April