Page 29 - The Journal of the Royal Society of Thailand
P. 29

วารสารราชบััณฑิิตยสภา
                                               ปีีท่� ๔๙ ฉบัับัท่� ๑ มกิราคุม-เมษาย์น ๒๕๖๗

                    ศาสตราจารย์์กิิตติคุุณ ดร.มงคุล  เดชนคุรินทร์                                         19



                    main   proc
                           cli                 ;prevent sys. interrupt
                    ;segment setup
                           mov ax,0
                           mov ds,ax
                           mov es,ax
                           mov ss,ax
                           mov bp,ax
                           mov si,ax
                           mov di,ax
                           mov ax,7FFEh    ;stack top
                           mov sp,ax

                    ;initialize 8255 (2) for data communication
                           mov  al,10011000b    ;mode 0 on groups A & B, A=inp, B=out
                           out  ppi_ctrl_2,al   ;upper C=inp, lower C=out
                           jmp  $+2             ;I/O delay

                           sti                  ;enable sys. interrupt

                    begn:                             ;start of principal loop

                    ;flicker all Port 2B LEDs for 5 cycles
                           mov  al,0FFh               ;data for 8 LEDs
                           call LedFlicker            ;use Port 2B

                    ;store 100 data bytes (01h-64h) in obuf
                           mov  al,01h
                           mov  cx,100
                           mov  di,obuf          ;addr of output buffer
                    fill:                             ;display data byte in al
                           out  ppi_port2b,al         ;send data via Port 2B
                           call delay1           ;0.16-sec delay
                           mov  byte ptr[di],al  ;save data in obuf
                           inc  al                    ;next data
                           inc  di                    ;next data addr
                           loop fill                  ;fill up obuf
                    ;pause the display
                           call delay2                ;wait 0.6 sec
                           call delay2
                           call delay2
                    ;****************

                    ;//write 64 data bytes to ser EEPROM (IC AT24C256)
                           mov  ax,0000h              ;start addr of ser EEPROM to write to
                           call prewr                 ;prepare ser EEPROM for write
                           mov  cx,64                 ;64 bytes to write
                           mov  si,obuf               ;addr of output buffer
                    odat0:
                           mov  al,byte ptr[si]  ;use stored data from obuf
                           out  ppi_port2b,al   ;display data byte
                           call i2c_wr                ;write byte to ser EEPROM
   24   25   26   27   28   29   30   31   32   33   34