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