Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BASCOM AVR, help reference (2007).PDF
Скачиваний:
305
Добавлен:
12.08.2013
Размер:
17.02 Mб
Скачать

© MCS Electronics, 1995-2007

Minute / Hour) Lsyssec = 123456789 Bsec = Time(lsyssec)

Print "System Second " ; Lsyssec ; " converted to Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour

'System Second 123456789 converted to Sec=9 Min=33 Hour=21

'Example 4: Converting Second of Day to defined Clock - Bytes (Second / Minute / Hour)

Lsecofday = 12345 Bsec = Time(lsecofday)

Print "Second of Day " ; Lsecofday ; " converted to Sec=" ; Bsec ; " Min=" ; Bmin ; " Hour=" ; Bhour

'Second of Day 12345 converted to Sec=45 Min=25 Hour=3

TOGGLE

Action

Toggles the state of an output pin or bit variable.

Syntax

TOGGLE pin

Remarks

pin

Any port pin like PORTB.0 or bit variable. A port pin must be configured as an

 

output pin before TOGGLE can be used.

 

 

With TOGGLE you can simply invert the output state of a port pin.

When the pin is driving a relays for example and the relays is OFF, one TOGGLE statement will turn the relays ON. Another TOGGLE will turn the relays OFF again.

See also

CONFIG PORT

ASM

NONE

Partial Example

Dim Var As Byte

' portB.0 is an

Config Pinb.0 = Output

output now

 

Do

'toggle state

Toggle Portb.0

Waitms 1000

'wait for 1 sec

Loop

 

page -699-

© MCS Electronics, 1995-2007

TRIM

Action

Returns a copy of a string with leading and trailing blanks removed

Syntax

var = TRIM( org )

Remarks

Var

String that receives the result.

Org

The string to remove the spaces from

 

 

TRIM is the same as a LTRIM() and RTRIM() call. It will remove the spaces on the left and right side of the string.

See also

RTRIM , LTRIM

Partial Example

Dim S As String * 6

S =" AB "

Print Ltrim(s)

Print Rtrim(s)

Print Trim(s)

End

UCASE

Action

Converts a string in to all upper case characters.

Syntax

Target = UCASE(source)

Remarks

Target

The string that is assigned with the upper case string of string target.

Source

The source string.

 

 

See also

LCASE

ASM

The following ASM routines are called from MCS.LIB : _UCASE

page -700-

© MCS Electronics, 1995-2007

X must point to the target string, Z must point to the source string.

The generated ASM code : (can be different depending on the micro used ) ;##### Z = Ucase(s)

Ldi R30,$60

Ldi R31,$00 ; load constant in register Ldi R26,$6D

Rcall _Ucase

Example

$regfile = "m48def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$hwstack = 32

' default use 32

for the hardware stack

' default use 10

$swstack = 10

for the SW stack

' default use 40

$framesize = 40

for the frame space

 

Dim S As String * 12 , Z As String * 12

 

S = "Hello World"

 

Z = Lcase(s)

 

Print Z

 

Z = Ucase(s)

 

Print Z

 

End

 

UDPREAD

Action

Reads data via UDP protocol.

Syntax

Result = UDPREAD( socket , var, bytes)

Remarks

Result

A byte variable that will be assigned with 0, when no errors occured.

 

When an error occurs, the value will be set to 1.

 

When there are not enough bytes in the reception buffer, the routine will

 

wait until there is enough data or the socket is closed.

socket

The socket number you want to read data from(0-3).

Var

The name of the variable that will be assigned with the data from the socket.

Bytes

The number of bytes to read.

 

 

Reading strings is not supported for UDP.

When you need to read a string you can use the OVERLAY option of DIM.

There will be no check on the length so specifying to receive 2 bytes for a byte will

page -701-

© MCS Electronics, 1995-2007

overwrite the memory location after the memory location of the byte.

The socketstat function will return a length of the number of bytes + 8 for UDP. This because UDP sends also a 8 byte header. It contains the length of the data, the IP number of the peer and the port number.

The UDPread function will fill the following variables with this header data:

Peersize, PeerAddress, PeerPort

You need to DIM these variables in your program when you use UDP.

Use the following line :

Dim Peersize As Integer , Peeraddress As Long , Peerport As Word

Make sure you maintain the shown order.

See also

CONFIG TCPIP, GETSOCKET , SOCKETCONNECT, SOCKETSTAT , TCPWRITE, TCPWRITESTR, CLOSESOCKET , SOCKETLISTEN , UDPWRITE, UDPWRITESTR

Example

'-----------------------------------------------------------------------------

 

------------

: udptest.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: start the easytcp.exe program after the chip is

programmed and

press UDP button

'

'micro

: Mega161

'suited for demo

: no

'commercial addon needed

: yes

'-----------------------------------------------------------------------------

 

------------

 

$regfile = "m161def.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

frequency

' use baud rate

$baud = 19200

$hwstack = 32

' default use 32

for the hardware stack

' default use 10

$swstack = 10

for the SW stack

' default use 40

$framesize = 40

for the frame space

 

Const Sock_stream = $01

' Tcp

Const Sock_dgram = $02

' Udp

Const Sock_ipl_raw = $03

' Ip Layer Raw

Sock

' Mac Layer Raw

Const Sock_macl_raw = $04

Sock

' Confirm Socket

Const Sel_control = 0

Status

' Confirm Tx Free

Const Sel_send = 1

Buffer Size

' Confirm Rx Data

Const Sel_recv = 2

 

page -702-

© MCS Electronics, 1995-2007

 

Size

 

'socket status

' Status Of

Const Sock_closed = $00

Connection Closed

' Status Of Arp

Const Sock_arp = $01

Const Sock_listen = $02

' Status Of

Waiting For Tcp Connection Setup

' Status Of

Const Sock_synsent = $03

Setting Up Tcp Connection

' Status Of

Const Sock_synsent_ack = $04

Setting Up Tcp Connection

' Status Of

Const Sock_synrecv = $05

Setting Up Tcp Connection

' Status Of Tcp

Const Sock_established = $06

Connection Established

' Status Of

Const Sock_close_wait = $07

Closing Tcp Connection

' Status Of

Const Sock_last_ack = $08

Closing Tcp Connection

' Status Of

Const Sock_fin_wait1 = $09

Closing Tcp Connection

' Status Of

Const Sock_fin_wait2 = $0a

Closing Tcp Connection

' Status Of

Const Sock_closing = $0b

Closing Tcp Connection

' Status Of

Const Sock_time_wait = $0c

Closing Tcp Connection

' Status Of

Const Sock_reset = $0d

Closing Tcp Connection

' Status Of Socket

Const Sock_init = $0e

Initialization

' Status Of Udp

Const Sock_udp = $0f

Const Sock_raw = $10

' Status of IP RAW

$lib "tcpip.lbx"

' specify the

tcpip library

' display a

Print "Init , set IP to 192.168.0.8"

message

' before we use

Enable Interrupts

config tcpip , we need to enable the interrupts

 

Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 0.0.0.0 , Localport = 1000 , Tx = $55 , Rx = $55

'Use the line below if you have a gate way

'Config Tcpip = Int0 , Mac = 12.128.12.34.56.78 , Ip = 192.168.0.8 , Submask = 255.255.255.0 , Gateway = 192.168.0.1 , Localport = 1000 , Tx = $55 , Rx = $55

Dim Idx As Byte

' socket number

Dim Result As Word

' result

Dim S(80) As Byte

 

Dim Sstr As String * 20

' temp bytes

Dim Temp As Byte , Temp2 As Byte

'-----------------------------------------------------------------------------

 

---------------

 

'When you use UDP, you need to dimension the following variables in exactly the same order !

Dim Peersize As Integer , Peeraddress As Long , Peerport As Word

'-----------------------------------------------------------------------------

 

---------------

' a handy function

Declare Function Ipnum(ip As Long) As String

'like with TCP, we need to get a socket first

 

page -703-