i already tired to try the 2d array but it still cannot work....
is that any way to store the file name except using the 2d array?
i already tired to try the 2d array but it still cannot work....
is that any way to store the file name except using the 2d array?
If you do not want to post your code and ask about why it does not work I guess there is not much anyone can do to help. You have not even explained exactly what you are trying to do.
It seems like you now have the VDIP running. So if you want help with arrays or something else start a new thread as suggested.
Dave
Always wear safety glasses while programming.
so sorry,
i got post my coding..but dunno y cant display...
now the coding not at me..later i will post again for the coding...thank for your inform
dear sir,
y when i put the line @Put2D(X,Y) then cannot compile got error
Error[108] C:\USERS\PIC16F873A\ARRAY TEST 2\ARRAY2.ASM 311 : Illegal character (()
dear mackrackit
below is my code..it like stuck at some where please help..
INCLUDE "modedefs.bas"
@ __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
;----------------------------------------------------------------
DEFINE OSC 20
DEFINE LCD_DREG PORTA 'LCD Data line
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB 'RS bit
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB 'E bit
DEFINE LCD_EBIT 4
DEFINE LCD_RWREG PORTB 'RW bit
DEFINE LCD_RWBIT 6
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_CHARS 20
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
;---------------------------------------------------------------
VinTXD VAR PORTC.7 'AD0 TXD VDIP2 connect RX
VinRXD VAR PORTC.6 'AD1 RXD VDIP2 connect TX
FlowIn VAR PORTC.0 'AD2 RTS
T VAR PORTC.0 'push button
D VAR PORTC.1 ' PUSH BUTTON FOR DISPLAY
;----------------------------------------------------------------
X VAR BYTE SYSTEM
Y VAR BYTE SYSTEM
;----------------------------------------------------------------
;----------------------------------------------------------------
; -- Working with 2D arrays ---
Width CON 8 ; Number of bytes in a Row
Length CON 10 ; Number of Rows in the array
;---------------------------------------------------------------------------
ArraySize CON Width * Length ; Total size of the array
MyArray VAR BYTE[ArraySize] ; The Array
Idx VAR BYTE ; Index, points to 1D array locations
Xidx VAR BYTE ; 2D column Index
Yidx VAR BYTE ; 2D row Index
ArrayData VAR BYTE ; holding register for array data
;----[Get a value from the 2D array]----------------------------------------
Get2D:
Idx=(Yidx*Width+Xidx) MIN (ArraySize-1) ; find Index, limit to ArraySize
ArrayData = MyArray(Idx) ; retrieve value from the array
RETURN
;----[Put a value in the 2D array]------------------------------------------
Put2D:
Idx=(Yidx*Width+Xidx) MIN (ArraySize-1) ; find Index, limit to ArraySize
MyArray(Idx) = ArrayData ; store the value in the array
RETURN
;----[Set entire array to 0's]----------------------------------------------
Clear2D:
FOR Idx = 0 TO ArraySize-1
MyArray(Idx) = 0
NEXT Idx
RETURN
;----[Turn the Subroutines into Functions]----------------------------------
ASM
#Get2D macro X, Y
MOVE?BB X, _Xidx ; copy users X value to Xidx
MOVE?BB Y, _Yidx ; copy users Y value to Yidx
L?CALL _Get2D ; call the Get subroutine
endm ; value is returned in ArrayData
#define Get2D(X, Y) #Get2D X, Y ; allows paretheses in macro
;-----------------------
#Put2D macro X, Y ; value should be in ArrayData
MOVE?BB X, _Xidx ; copy users X value to Xidx
MOVE?BB Y, _Yidx ; copy users Y value to Yidx
L?CALL _Put2D ; call the Put subroutine
endm
#define Put2D(X, Y) #Put2D X, Y ; allows paretheses in macro
;-----------------------
#Clear2D macro
L?CALL _Clear2D ; call the Clear subroutine
endm
#define Clear2D() #Clear2D
ENDASM
;----------------------------------------------------------------
;a var BYTE[12]
FILE1 VAR BYTE[12]
FILE2 VAR BYTE[12]
FILE3 VAR BYTE[12]
;X VAR BYTE
CRET VAR BYTE
CRET = $0D
;----------------------------------------------------------------
StartDisk:
pause 3000
HIGH VinRXD
SEROUT2 VinRXD,84,["ECS",13]
LCDOUT $FE,1, "1"
PAUSEUS 1000
HIGH VinRXD
PAUSEUS 1000
SEROUT2 VinRXD,84,["IPA",13]
LCDOUT $FE,1, "2"
HIGH VinRXD
PAUSEUS 1000
SEROUT2 VinRXD,84,["A:",13]
LCDOUT $FE,1, "3"
HIGH VinRXD
PAUSEUS 1000
SEROUT2 VinRXD,84,["DIR",13]
LCDOUT $FE,1, "4"
PAUSEUS 1000
;------------------------------------------------------------
WAIT1
IF FLOWIN = 1 THEN WAIT1
SERIN2 VinTXD,84,[WAIT(CRET),STR FILE1\12 \CRET]
LCDOUT $FE,1, "5"
@ Clear2D ; clear the array
FOR Y = 0 TO Length-1 ; fill the array with data
FOR X = 0 TO Width-1
ArrayData =FILE1[X] ; value to put in array
@ Put2D(X,Y)
NEXT X
NEXT Y
;--------------------------------------------------------------------------------
PAUSE 1000
FOR Y = 0 TO Length-1
FOR X = 0 TO Width-1
@ Get2D(X,Y)
NEXT X
LCDOUT $FE,1,ArrayData
pause 500
NEXT Y
goto StartDisk
So you got the new version of PBP?
Where did you get it?
Dave
Always wear safety glasses while programming.
u use the 2.46version...
the code i use it like stuck only can run until the code below then stop
INCLUDE "modedefs.bas"
@ __config _HS_OSC & _WDT_OFF & _LVP_OFF & _CP_OFF
;----------------------------------------------------------------
DEFINE OSC 20
DEFINE LCD_DREG PORTA 'LCD Data line
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB 'RS bit
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB 'E bit
DEFINE LCD_EBIT 4
DEFINE LCD_RWREG PORTB 'RW bit
DEFINE LCD_RWBIT 6
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_CHARS 20
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
;---------------------------------------------------------------
VinTXD VAR PORTC.7 'AD0 TXD VDIP2 connect RX
VinRXD VAR PORTC.6 'AD1 RXD VDIP2 connect TX
FlowIn VAR PORTC.0 'AD2 RTS
T VAR PORTC.0 'push button
D VAR PORTC.1 ' PUSH BUTTON FOR DISPLAY
;----------------------------------------------------------------
X VAR BYTE SYSTEM
Y VAR BYTE SYSTEM
;----------------------------------------------------------------
;----------------------------------------------------------------
; -- Working with 2D arrays ---
Width CON 8 ; Number of bytes in a Row
Length CON 10 ; Number of Rows in the array
;---------------------------------------------------------------------------
ArraySize CON Width * Length ; Total size of the array
MyArray VAR BYTE[ArraySize] ; The Array
Idx VAR BYTE ; Index, points to 1D array locations
Xidx VAR BYTE ; 2D column Index
Yidx VAR BYTE ; 2D row Index
ArrayData VAR BYTE ; holding register for array data
;----[Get a value from the 2D array]----------------------------------------
Get2D:
Idx=(Yidx*Width+Xidx) MIN (ArraySize-1) ; find Index, limit to ArraySize
ArrayData = MyArray(Idx) ; retrieve value from the array
RETURN
;----[Put a value in the 2D array]------------------------------------------
Put2D:
Idx=(Yidx*Width+Xidx) MIN (ArraySize-1) ; find Index, limit to ArraySize
MyArray(Idx) = ArrayData ; store the value in the array
RETURN
;----[Set entire array to 0's]----------------------------------------------
Clear2D:
FOR Idx = 0 TO ArraySize-1
MyArray(Idx) = 0
NEXT Idx
RETURN
Bookmarks