Web 51 P-Code Interpreter

Web 51 - P-code aritmeticke operace a vetveni programu - part 2  software.html  Web 51 - Obsluha serioveho kanalu

část 3 - P-instrukce pro základní síťové operace

Obsah knihovny LIBK, základní síťové funkce

instrukce parametry popis operace příznaky
ptstr2s (B)a, (W)offset, (W)lng Compare String to Receive Frame for(i=0;i<lng;i++)(B)@a[i]-(B)@receive[offset+i]) zflag
ptstr2e (B)e, (W)offset, (W)lng Compare eepromString to Receive Frame for(i=0;i<lng;i++)(B)@e[i]-(B)@receive[offset+i]) zflag
pr2s (B)a, (W)offset, (W)lng Copy from Receive Frame to String for(i=0;i<lng;i++)(B)@a[i]=(B)@receive[offset+i])  
px2s (B)a, (W)offset, (W)lng Copy from Xmit Frame to String for(i=0;i<lng;i++)(B)@a[i]=(B)@receive[offset+i])  
pi2x (W)offset, (W)imm Mov Word Immediate to Xmit Frame (W)@xmit[offset]=(W)imm  
ps2x (W)offset, (B)a, (W)lng Mov String to Xmit Frame for(i=0;i<lng;i++)(B)@xmit[offset+i]=(B)@a[i])  
pe2x (W)offset, (B)e, (W)lng Mov eepromString to Xmit Frame for(i=0;i<lng;i++)(B)@xmit[offset+i]=(B)@e[i])  
pc2x (W)offset, (B)c, (W)lng Mov codeString to Xmit Frame for(i=0;i<lng;i++)(B)@xmit[offset+i]=(B)@c[i])  
pz2x (W)offset, (W)lng Mov Zero to Xmit Frame for(i=0;i<lng;i++)(B)@xmit[offset+i]=0)  
pr2x (W)xmit_offset, (W)receive_offset, (W)lng Mov Receive Frame to Xmit Frame for(i=0;i<lng;i++)(B)@xmit[xmit_offset+i]=@receive[receive_offset+i])  

Většina P-instrukcí používá DMA kanál Ethernet čipu pro přímé přenosy mezi požadovanou datovou oblastí a čipem. Existují však vyjímky. První z ní je instrukce pi2x, která používá proměnou workreg k uložení konstanty, zadané v parametru instrukce. Druhou vyjímkou je instrukce pr2x která, vzhledem k neexistenci oddělených DMA kanálů pro přijímací a vysílací frame, musí používat přenos přes pomocnou datovou oblast. Proto tato instrukce kopíruje data po částech, pomocí vyrovnávací paměti ebuf.

instrukce parametry popis operace příznaky
xmit_frame (W)lng Transmit Xmit Frame Transmit lng bytes to Ethernet
psendchar (B)char Write char to Xmit Frame @xmit[tcpWritePointer++]=char
bflush   Flush ebuf to Xmit Frame  

Stejně jako u instrukce pr2x, nejsou u instrukce psendchar data přímo zapisovány do Ethernet čipu, ale pomocí vyrovnávací paměti ebuf. Tato paměť je ovládána přes dvě globálních proměné. První z nich tcpWritePointer, určující offset, odkud budou zapisována data do xmit frame. Tento offset se automaticky průběžně zvyšuje, tak jak dochází ke kopírování vyrovnávací paměti ebuf do vysílaného frame. Druhou proměnou je unwrited, udávající offset ve vyrovnávací paměti ebuf. Skutečný offset zapisovaných dat je ve skutečnosti tcpWritePointer + unwrited. Před prvním voláním psendchar je nutné obě proměné inicializovat, tcpWritePointer na hodnotu potřebného offsetu a unwrited na 0. Zápis dat přes psendchar je nutno ukončit voláním bflush.

instrukce parametry popis operace příznaky
in_checksum   Calculate Frame checksum  

Instrukce in_checksum počítá sumu bloku, uloženého v paměti Ethernet čipu. Blok je vymezen absolutní adresou v paměti čipu, předávanou přes globální proměnou chkaddr a svoji délkou, předávanou přes globální proměnou chklen. Výsledná a zároveň inicializační hodnota sumy je předávána přes globální proměnou chkaddr.





Sponzored by LPhard Ltd. Graphics by GIMP Created by EasyPad

(c)Copyright 2000, 2001, HW server & Radek Benedikt
Web51@HW.cz, Web51.HW.cz

Final applications of the Web51 : www.HWgroup.cz
Web 51 - P-code aritmeticke operace a vetveni programu - part 2  Obsah  Web 51 - Obsluha serioveho kanalu