You are on page 1of 94

PIC BASIC PRO COMPILER

Pic BASIC Pro Compiler ( PBP)


BASIC Quick BASIC Turbo BASIC
Assembly
Pic BASIC Pro Compiler
PIC Microchip
16F84/84A 18 16F873 28 16F74/877 18F258/458 40
RISC
(RISC : Reduce Instruction Set Computer)
33-77
Assembly Tool MPLAB
Editor, Simulator Compiler Assembly
PIC BASIC Compiler

1. Code editor Code Designer


(Cdlite.EXE)
2. Compiler Code BASIC
Machine Code Intel Hex File (PBPW.EXE)
3. Download Machine Code
Microcontroller EPICW.EXE Icprog101.exe
4. (Programmer)
5. (Experiment Board)

2
BASIC Code Editor

File.BAS

PICBASIC Compiler

Downloader

File.HEX
File.ASM
File.HEX

PIC Microcontroller

1
PIC PIC BASIC PRO COMPILER
PIC BASIC PRO Compiler DOS WINDOWS

PIC BASIC COMPILER 3
1. Code Designer Cdlite
ver. 1.55 BASIC
Code Editor .bas .pbp
2. Compile .HEX
MCU PIC BASIC PRO ver. 2.4
compile PBPW.EXE
3. .HEX Compile MCU
Icprog101.exe
CD

CD
:-

3
1.
Code Editor Folder MICROCHIP
CD 1 cdlite155
Cdlite

Cdlite C: Folder Cdlite


2. Copy Folder pbp240full CD Folder Cdlite
3. CD Folder Icprog Icprog Icprog copy Folder Icprog
Folder Cdlite C:


Option
Cdlite link PICBASIC Compiler
Icprog
1. Cdlite WINDOWS 2

4
Code Designer PIC BASIC
3

2
3

2. Option Code Designer PIC BASIC


4 OK

Path

3. Option Code Designer


5 OK


Path
6
3. Port COM.1 PC CN2 PIC40P-1
4. Programmer
MCU 6 7

2
3

PENTIUM4

6
Hardware 8

.HEX

Compile

 EPIC Program (
PIC MCU
EPIC Version WINDOWS
WINDOWS Drive C:
1. Folder EPICW
2. COPY EPICW Folder
3. UNZIP EPICW Folder ( UNZIP
ICON IC RUN Programm Download
desktop Short cut RunProgram )

BASIC DOS WINDOWS
Editor DOS WINDOWS
Notepad Word Save .BAS Save
Folder

7
Text file pure ASCII text Format File
Directory Directory Compile
LED 0 PortB
16F84A
Blink.BAS

LOOP : HIGH PORTB.0


PAUSE 500
LOW PORTB.0
PAUSE 500
GOTO LOOP
END

( 3 )

3

1. Code Designer
Windows

PIC16F84A, PIC16F877
2. BASIC
Word processor
3. Save

8
File
Save as
.BAS
4. Compile Compile Compiler
Pathname
Compile
Compiler Option

( Compiler pathname Pbpw.exe


auto close compiler output screen OK)
Compile Compile
Compile ( F5)
Compile

5.
Programer
Launch Programmer
(* Launch Programmer Icprog101.exe
pathname
Programmer
Programmer Options Programmer
Pathname OK)
Icprog blink.HEX Compile
ISP PROG. COM1

2.

1.
blink.HEX
5.

3.
XTAL OSC
4.Protect

4 Icprog MCU

9
PIC BASIC PRO COMPILER
1. Comments
(Quotation mark) ; HIGH PORTB.0 Turn ON LED
LOW PORTB.0 Turn OFF LED
2. Line Labels ( 8 )
PIC BASIC
Label Colon (:)
LOOP : INPUT S1
IF S1 = 1 THEN LOOP
3. Variables (Size) bits,
bytes Words
Label VAR Size {.Modifier}

SW1 VAR bit


L1
VAR byte
W0 VAR word

: .Modifier Option Variable


4. Variable

BASIC Stamps PICBASIC



Include bs1 defs.bas
Include bs2 defs.bas
Variable

Include bs1defs.bas VAR B0 ~ B13, W0 ~ W6
Include bs1defs.bas VAR B0 ~ B25, W0 ~ W12

10
5. Aliases 3 4

fido VAR dog


b0
VAR w0.byte0
b0 byte W0
b1
VAR w0.byte1
b1 byte 2 W0
flea VAR dog.0
flea bit0 dog
6. Arrays Variable arrays
Label VAR Size [No.of elements]

Shark VAR byte [10]


fish VAR bit[8]

element
Size
Bit
Byte
word

No. of elements
256
96 *
48 *

* element byte word RAM Bank MCU

7. Constants
Label CON Constant expression

mice CON 3
traps CON mice * 1000

8. Numeric Constants PBP 3

11
10 2 16
8.1 10
100 100 10
%100 2 1 0 0
$100 16
ASCII value
A ASCII value for dec.65
d ASCII value for dec.100
9. String Constants ASCII value
Lcdout Hello
10. PORT Register

PORTA = %01010101 PORTA
VAR1 = PORTB & $0F Logic AND PORTB $0F
VAR1
11. Pins MCU

PORTB.1 =
LED VAR PORTA.0
HIGH LED

1 PORTB 1
0 PORTA LED
LED (PortA.0) Logic high

 Pin Pin BASIC Stamp MCU


Pin 0 ~ 15 PORT MCU

12
PIC MCU
8 Pin
18 Pin
28 Pin ( 14C000)
28 Pin ( 14C000)
40 Pin

BASIC STAMP PIN


0-7
8 - 15
GPIO *
GPIO *
PORTA *
PORTB
PORTC
PORTB
PORTD
PORTC
PORTC
PORTB

* Port 8
12. PORT MCU OUTPUT INPUT
Tri-state Register (TRIS) Port
Assembly TRIS 0 Port OUTPUT
TRIS 1 Port INPUT

TRISA = %00000000 PortA Output


TRISB = %11110000 4 PortB INPUT
4 OUTPUT
TRISA.0 = 0
Pin0 PortA Output

13. (Multi-Statement Lines)


2
W2 = W0
W0 = L1
W1 = W2

W2 = W0 : W0 = L1 : W1 = W2
( 2 Code )

13
14. (Line-extension)
PIC BASIC

250
2 2
( _ ) 2

BRANCH B0, [Label1, Label 2, Label 3,] , _
Label 4, Labels]
15. INCLUDE
INCLUDE modedefs.bas
16. DEFINE

OSC.Speed 4 MHz
DEFINE QSC 4
DEFINE ADC_BITS 8 Bit A/D 8 bit

* DEFINE (Capital letter)


17. Math Operators
+
-
*
** 16 ()
*/ 16 ()
/
// (Modulus)
<< Shift Left
>> Shift Right
ABS Absolute Value
COS Cosine
DIG
MAX maximum Val.

MIN minimum Val.


NCD Encode
DCD Decode
REV Reverse bits
SIN Sine
SQR Square root
& AND
| OR
^ Ex. OR
~ NOT
&/ NOT AND
|/ NOT OR
^/ NOT Ex.OR

14

16 bit
18 (Multiplication) PIC BASIC
32
W1 = W0 * 1000 W0 1000 W1
W2 = W0**1000 W0 1000 high order 16 bits W2
19. (Division)
W1 = W0/1000 W0 1000 W1
W2 = W0//1000 W0 1000 W2
20. ( Bit shifting) << >> bit
0 - 15
B0 = B0 << 3 Shift B0 3
W1 = W0 >>1 Shift W0 1 W1
21. DCD decode bit number (0-15) binary number 8 bit
B0 = DCD 2 B0 = %00000100
22. DIG 10 ( 0-4 )
Set B0 to 123
B0 = 123
B1 = B0 DIG 1 B1 2 ( 2 )
23. MAX and MIN
B1 = B0 MAX 100 B1 100 255
B1 = B0 MIN 100 B1 B0 100
24. NCD bit Binary number Decimal (bit number 0-16)
B0 = NCD % 01001000 Set B0 7
25. REV Binary bit (0-16) LSB
Set B0 10100011
B0 = %10101100 REV 4

15
26. Trigonometric SINE, COS
B1 = COS B0
B2 = SIN B0
27. Square root, Absolute
B0 = SQR W1
B1 = ABS B0
28. Bitwise Operators Set
B0 = B0 & % 00000001 0 B0
B0 = B0 | % 00000001 Set bit0 B0
B0 = B0 ^ % 00000001 bit0 B0
29. Comparison Operator exprssion
Expression
Operator
= = =
< > ! =
<
>
<=
>=
IF i > 10 THEN loop

Description

30. Logical Operators Operator Logic

Operator
AND 82
OR ||
XOR ^^
ANDNOT

Description
Logic AND
Logic OR
Logic XOR
Logic NAND

16
ORNOT
Logic NOR
XORNOT
Logic NXOR
IF (A = = big) AND (B > mean) THEN run

31. PIC BASIC PRO


31.1 @ Assembly Code

@ Assembly Statement

(1)

i
Var byte
rollme VAR byte
FOR i = 1 To 4
@ rlf rollme, 1
NEXT I
@ Include fp.asm

(2)

I 1 4
rollme 1

31.2 ADCIN MCU


PIC 16F874/877

ADCIN channel, Var

* ADCIN PORT
INPUT register TRIS PORT
register ADCON1

TRISA
= 255
ADCON1 = 0
ADCIN 0, B0

PortA = input
PortA
0 B0

17
Default
DEFINE ADC_BIT 8
BIT 8
DEFINE ADC_SAMPLEUS 50 Sampling rate = 50MS
31.3 ASM .. ENDASM
1
Assembly PIC BASIC

ASM
Assembly

ASM
bsf PORTA,0
bcf PORTB,0
ENDASM

31.4 BRANCH
INDEX

BRANCH INDEX, [Label1, Label2, ]

BRANCH B4, [dog, cat, fish]


B4 = 0 Label dog
B4 = 1 Label cat
B4 = 2 Label fish
BRANCH 255 Label
31.5 BUTTON
Port
auto-repeat pin input

18

BUTTON Pin, Down, Delay, Rate, BVar, Action, Label


Pin Port PORTA.0 ~ PORTA.4
Down Pin ( 0 1)

a) Pressed = 0

b) Pressed = 1

Rate Auto-repeat (0 ~ 255)


Delay auto-repeat 0 ~ 255 ( 0
debounce 255 atuto-repeat)
BVar auto-repeat
Set 0
Action 0 = , 1 =
Label BUTTON Label
Ex. Hardware S1 L1 0.5 0.5

19
PIC BASIC
INCLUDE BS1DEFS.BAS
S1
VAR PORTB.1
L1
VAR PORTA.0
LOW B2
File BS1DEFS.BAS
LOOP1 :
BUTTON S1, 0, 100, 10, B2, 0 Loop2
LOOP2 :
PAUSE 50
HIGH L1
Auto-repeat
PAUSE 500
deley = 50 X 100 = 5000mS
LOW L1
Repeat rate = 50 X 10
PAUSE 500
= 500mS
GOTO LOOP1
END
31.6 CALL
Assembly subroutine execute
extention

CALL pass.asm
31.7 CLEAR
RAM register 0 clear
31.8 CLEARWDT
Clear Watchdog Timer
31.9 COUNT
pulse Pin

COUNT Pin, Period, Var

20
Pin MCU Port
Period
Var
Pin PortB.0 W1
COUNT PORTB.0, 1000, W1
Scan Pulse Clock 4 MHz = 20 mS
Clock 20 mS = 4 mS Count Pulse
0 ~ 125 kHz Clock 20 MHz
Ex.

31.10 INPUT
Pin Port Input

INPUT Pin
Pin

Port

INPUT PORTA.0 PORTA 0 INPUT


TRISA.0 = 1
Ex.
S1
VAR PORTA.0
INPUT S1
LOOP : IF S1 = 1 THEN LOOP
GOTO SET_ON
31.11 HIGH
Port 1 Pin
OUTPUT

HIGH PIN

21
Pin Port
HIGH PORTA.0 0 PortA 1
L1
VAR PORTB.0
HIGH L1

PORTB.0 = 1
PORTB.0
L1 VAR
L1 = 1
31.12 LOW
Port 0 Output

LOW Pin
Pin

Port

LOW PortA.0
PORTA.0 = 0

Ex.

L1

VAR PORTB.2
LOW L1

31.13 OUTPUT
Port Output
OUTPUT PIN

Pin

Port

OUTPUT PORTA.3
register TRIS
TRISA.3 = 0

22
Ex.

TRISB = %00000000 PortB OUTPU

31.14 PAUSE
(mS)

Ex.

PAUSE Period
Period mS 0 ~ 65535mS
HIGH PORTB.0
PAUSE 1000 1
END

31.15 PAUSEUS
(S)

PAUSEUS Period

period (S) 65535 S


OSC OSC 4 MHz period = 24 S
OSC 20 MHZ Period = 3 S
31.16 PEEK
Register

PEEK Address, Var


Address register Port RAM
RAM Register
VAR register

PEEK
PEEK PORTA,B1

23
B 1 = PORTA Pin Porta B1
31.17 POKE
register MCU

POKE Address,Value

Address register MCU Register


PORT register
RAM
Valve
POKE TRISA,0 PORTA OUTPUT

TRISA = 0
PORTA 0 = 1
31.18 PULSIN
PULSE Pin Count
65535

PULSIN Pin, State,Var

pin Port
State PULSG 0
Low Pulse 1 High Pulse
Var Count pulse
Count pulse
65535 count DEFINE
DEFINE PULSIN _MAX 1000

24

RCTIME
DEFINE
Count OSC.
OSC. 4 MHz Count = 4
OSC. 20 MHz Count = 2
Ex. Pulse width 4 Portb W3
PULSIN PORTB.4,1,W3
31.19 PULSOUT
PULSE Port

PULSOUT Pin, Period

Pin Port
Period Pulse
Pulse OSC.
OSC. MHz 10 S
OSC. 20 MHz 2 S

Ex. Pulse 100 mS 1 Sec.


L 1 VAR PORTA.0
LOOP : PAUSE 1000
PULSOUT L1, 10000
GOTO LOOP
END

10000 x 10
= 100,000 S
= 100 mS

31.20 TOGGLE
Pin Port

25

TOGGLE Pin

Ex Reset L1 5
L1
VAR PORTB 1
HIGH L1
PAUSE 5000
TOGGLE L1
END
31.21 FREQOUT
Pin SING WAVE
PWM 0 ~ 32767 HZ 2

FREQOUT Pin, ONMS, Frequency1 , Freq 2

Pin
Port
ONMS
MS
Freg 1 , Freq 2 Hz
PWM
Pore Sine Wave

26

Ex. 1KHz 2 Port A 2


FREQOUT PORTA.2, 2000, 1000
Ex. 350 Hz/440 Hz (Dial Tone) 2 1 Port B
FREQOUT PORTB.1, 2000, 350, 440
31.22 PWM
PULSE WIDTH MODULATION (PWM) Pin
Cycle

PWM Pin , Duty, Cycle

Pin Port
Duty % duty cycle
Pulse width 50% 5 PortB 100
PWM PORTB.5, 127,100
PWM
DC
Cycle

27
pulse = 0
cycle

* PULSE (PULSE WIDTH) 1 Cycle


DUTY CYCLE %
DUTY CYCLE = PULSE WIDTH
CYCLE

100 %

Output (Vout)
Vout = DUTY CYCLE x Vin
Duty Cycle % (0 ~ 100%)
Vin P-To-P Wave form
MCU

Ex. DC PWM duty cycle = 50%


Wave f = 5 V P - P
Vout = 50 x 5 v = 2.5 [V]
100

1. Output
PULSE DC
( 28)

28
PWM
DC

2. PWM MLU
PWM Pulsce MCU
Pin PWM PIC 16F877/874
HPWM
31.23 HPWM
PWM MCU
execute

HPWM Chancl, Duty cycle, Freq

Chancl
Derty cycle

Pin PWM
binary digit 8 bit
(0 ~ 255) 0 = 0% 255 = 100%
Freq
PWM 245 ~32767 Hz
Freq OSC. OSC. 4 MHz
= 245 Hz OSC. 20 MHz = 1221 Hz
Ex.1 PWM 50 x duty cycle 1 KHz
HPWM 1, 127, 1000

Ex.2 PWM 25 % duty cycle 20 KHz


HPWM 1, 64, 20000
HPWM Pin
Support PWM PIC 16F877 , PIC 16F874

29
31.24 POT
potentiometer Pin Port

POT PIN, Scale, Var

Tine Constant discharge Capacitor


( 5K 50K) Pin R-C Network

Scale adjust RC-Time Constant


RC-Constant Scale
RC-Constant Scale ( Scale
0 ~ 255)
Scale 0 ...
255 ...
Var

potentiometer

Ex.

B0 VAR byte
Scale VAR byte
For Scale = 1 To 255
POT PORTB.0 , Scale, B0
IF (B0 > 253) THEN calibrate
NEXT Scale

30
SEROUT 2, 0, [inclease R, 10, 13]
STOP
Calibrate :
SEROUT 2 , 0 [Scale = , # Scale , 10 , 13]
END
31.25 RCTIME
Pin Port
( 0 1)

RCTIME Pin , State , Var

Pin

(0-15) BS1 , BS2


PORT PORTA.1
( 0 1)
0 ~ 65535

State
Var

osc
OSC 4 MH 10 MS
OSC 20 MH 2 MS
Port 0
RCTIME (65535) pulse state
65535
DEFINE PULSIN_MAX 1000
Ex. 1 LOW PORTB.3 "Discharge c start
PAUSE 10 " To Disharge 10 ms
RCTIME PORTB.3 , 0 , W0 RC W0

RCTIME

31
31.26 RANDOM

Ex.

RANDOM Var
Var 16 bit 65535
:
Random B0
PORTB = B0
:

31.27 NAP
MC
20

NAP Reriod
Period 0 ~ 7
Period
0
1
2
3
4
5
6
7

Delay (ms)
18
36
72
144
288
576
1.152 Sec
2.304 Sec

32
Ex.

NAP execute
LOOP : HIGH PORTA.1
PAUSE 5000
LOW PORTA.1
NAP 7
GOTO LOOP
END

31.28 SLEEP
M.C. 20 MA
2.3 99.9 %
M.C. SLEEP MODE CPU
SLEEP MODE (WAKEUP) RESET

SLEEP Multiplier

Multiplier Sleep 1-65535 18

SLEEP Watchdy Timer


Multiplier 2.3
Ex. 1 SLEEP 60 M.C. 1
Ex. 2 S1 VAR PORTB.0
L1 VAR PORTB.7
LOOP 1 : INPUT S1
IF S1 = 1 THEN LOOP1
LOOP 2 : HIGH L1
60 x 2.3
PAUSE 2000
= 120
LOW L1
SLEEP 60
GOTO LOOP1
END

33
31.29 STOP

RESET
31.30 ON INTERRUPT
M.C.
Label

(Interrupt)
interrupt Main Program
RESUME

ON INTERRUPT GOTO Label

Register Interrupt M.C. INTCON


Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
RB 0/INT Interrupt Enable
1 = Enable
0 = Disable
Global Interrupt Enable
0 = Disable
1 = Enable
2
A Pin Interrupt RBO /
INT ( 6 PIC 16F84A)
A Main Program ON INTERRUPT
SET Register INTCON Interrupt Setbit
7 bit 4 1
A Main Program DISAB
A Subroutine Interrupt RESUME ENABLE
END

34
Ex
L1 VAR PORTA.0
L2 VAR PORTA.1
ON INTERRUPT GOTO LOOP 2
INTCON = % 10010000
LOOP1 : HIGH L1
PAUSE 500
LOW L1
PAUSE 500
GOTO LOOP1
DISABLE
LOOP2 : HIGH L2
RESUME
ENABLE
END

* Interrupt RBO / INT


INTCON = $80
31.31 DTMFOUT

Tone Dial
DTMFOUT PIN, Ontime, Offtime, [Tone,.]
Pin Port
Outime On (1) Pulse (0-65535 ms)
Offtime Off (0) Pulse (0-65535 ms)
Tone (0-9)
Ontiome
Offtime
ON Time = 200 ms OFF Time = 50 ms

35
Matching Transformer
sotate M.C. Telephone Lines

Ex.
SPK VAR PORTB.7
S1 VAR PORTB.0
SPK = 0
S1 = 1
LOOP0 : IF S1 = 1 THEN LOOP0
LOOP1 : DTMFOUT SPK, 500, 100, [0, 2, 9, 4, 3, 6]
LOOP2 : IF S1 = 0 THEN LOOP2
LOW SPK
GOTO LOOP0
END
Dial Tone Amplifire
Low pass filtre ()

36
31.32 EEPROM
ON-Chip EEPROM

Location
Constant

EEPROM Location, [onstant, Constart, . .]


address 0
Memong EEPROM chip M.C.
, ASCII Code.

Ex. 10, 20 30 EEPROM Location 4


EEPROM 4, [10, 20, 30]
31.33 WRITE
byte EEPROM

WRITE Address, Value

Address EEPROM
Value , byte
Set EEPROM Runtime EEPROM
Programming Time
Ex. B0 EPPROM 4 WRITE 4, B0
WORD ( 2 byte) byte

Ex.

VAR WORD
WRITE 0, W.BYTE0
WRITE 1, W.BYTE1

37
31.34 DATA
EEPROM

DATA Clocation, Constart, cortstant,


Clocation address
Addresss
Constant , (string)
ASCIT-Code

Ex. 10, 20, 30 EEPROM


Location 4
DATA @4, 10, 20, 30
31.35 READ
EEPROM

READ Address, Var

Address
Var

EEPROM

Ex. EEPROM 5 B2
READ 5, B2
Ex. EEPROM M.C. Word (2 byte)
W VAR WORD
READ 0, W.BYTE0
READ 1, W.TYTE1

38
1. EEPROM
EEPROM FLASH
PIC 16F84/84A, 16F874/877
2. EEPROM EEPROM

31.36 DEBUG
Pin -
Asynchronous data 8bit, no parity, 1 stop bit (8N1) Pin
OUTPUT

DEBUG Item, {Item,..}

Run Program , program


position Tenninal program
DEBUG Pin boudrate Computer

DEFINE DEBUG REG PORTB PortB
DEFINE DEBUG BIT
Pin0
DEFINE DEBUG BAUD 2400 Boud rate = 2400
DEFINE DEBUG MODE 1 Mode 1 = inverted
0 = true
DEFINE DEBUG PACING 1000 rate 1 ms/

* Hardware RS-232 Porter


DB9
Pin 2
Pin 5

DB25
Pin 3
Pin 7

Ex. B0 = 10 B0
Treminal Rs-232 pc.

39
DEBUG B0 = , DEC B0 , 10

0
( modifier)

modifier PC
Modifier
BIN
DEC
HEX
REP C\N
STR Array Var\ n

Operation
Binary
10
16
: (
N )
n

31.37 DEBUGIN
PORT Com 1 Com 2
RS-232 DEBUG

DEBUGIN {Timeout , Label} , [Item , Item.]

DEUGIN DEBUG
, Pin , Port
DEFINE DEBUGIN_REG
PORTB
DEFINE DEBUGIN_BIT
0
DEFINE DEBUG_BAUD
2400
DEFINE DEBUGIN_MODE
1 0=true , 1= inverted
Timeout 1 Idle Timeout
DEBUGIN Jump Label

* Hardware pc. Port com 1 com 2

DB9
Pin 3
Pin 5

DB25
Pin 2
Pin 7

40
Ex. 1 A B0
DEBUGIN lWAIT (A),B0m
Ex. 2 2 4 10 B0
DEBUGIN lSKIP2 , DEC4 B0m
modifier
modifier
Modifier
Bin
DEC
HEX
SKIP n
STR Array Var \ n
WAIT ( )
WAITSTR Array Var \ n

Operation
2 (Binary)
10
16
n
n

31.38 LCDOUUT
LCD Support LCD Module 2
1 Controller Hitachi 44780
LCD 14-16 Single row header
LCD DISPLAY
Vss

Vdd

Vo

Rs

R/W

Vss
Vdd
Vo
RS
R/w
E

=
=
=
=
=
=

D0

D1

D2

9 10 11 12 13 14 15 16

GND
+5 V
Brigutness Control
Register Select
R/w register
Enable

D3

D4

D5

D6

D7

41

LCDOUT Item ,{Item,

PIC BASIC PRO


Hardware

Initialize LCD LCD


MC clear flag 8nv
FLAGS = 0
LCD $FE Code

Command
$FE , 1
$FE , 2
$FE , $0C
$FE , $0E
$FE , $0F
$FE , $10

Operation
Clear Display
Return home (beginning of firstline)
Cursor off
Underline cursor om
Blinking cursor om
Move cursor left on position

42
$FE , $14
$FE , $C0

Move cursor right one position

$FE , $94

Move cursor to beginning of 3rd line

$FE , $D4

Move cursor to beginning of 4th line

Move cursor to beginning of 2nd line

Ex. 1 LCDOUT $FE , 1, Hello


Ex. 2 LCDOUT $FE , $C0 World
Ex. 3 LCDOUT B0 , # B1
LCD 4 bit bus 8-bit bus

1. 8-bit bus Data bus port


2. 4-bit bus Data bus 4 4-bit 4-bit
post
3. Enable Register Select port
4. R/W LCDIN GROUND
Pic Basic Pro Default M.C. PIC 16 F8 4A , Data D4 ~ D7
porta.0~Porta03 Reqister Select Port A.4 Enable Port B.3 ,
initialize LCD 2 PORT B.3 , initialize LCD
2

* DEFINE :
Set LCD Data port
DEFINE LCD_DREG PORTB
Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 4
Set LCD Register Select Port
DEFINE LCD_RSREG PORTB
Set LCD Register Select Bit

43
DEFINE LCD_RSBIT 1
Set LCD Enable Port
DEFINE LCD_EREG PORTB
Set LCD Enable Bit
DEFINE LCD_EBIT 0
Set LCD Bus Size (8 or 4 bits)
DEFINE LCD_BITS 4
Set number of Lines on LCD
DEFINE LCD_LINES 2
Set data delary time in s
DEFINE LCD_DATAUS 50
Set Command delay time in S
DEFINE LCD_COMMANDUS 2000
31.39 LOOKDOWN
Constant 8-bit match :
Variable 0
, 1 2, 3 255 Macth
Variable

LOOKDOWN SEARCH , [Constant , Constant,..],Var

Search
Constant
Var
Ex.

List (Numeric) string


index
macth

SERIN PORTA.1, N2400, B0 hexa. char. Port 1


LOOKDOWN B0, [0123456789ABCDEF], B1 Match B0
Index () B1
SEROUT PORTA.0, N2400, [#B1] B1 PORTA 0

44
31.40 LOOKDOWN2
Value
(Var) List 1,2,

LOOKDOWN2 Search , {Test} [Value,Valve,], Var

Search List
Test option Search Value List
match
=

>
Search Value
<
Search Value
Value 8-bit
16-bit Value List 85
LOOKDOWN2 LOOKDOWN
LOOKDOWN2 string Value List 8 bit
string Value 8-bit LOOKDOWN
Ex.

LOOKDOWN2 W0 [512,W1,1024] , B0
LOOKDOWN2 W0 < [10 , 100 , 1000] , B0

31.41 LOOKUP
8-bit List Index
Var

Index
Constant
Var

LOOKUP Index , [Constant , Constant,.. ] , Var


constant List 0 ~ 255
numeric , string
Constant Index

45
Ex. For B0 = 0 TO 5 0 5
LOOKUP B0, [Hello!] ,B1 B0 B1
SEROUT PORTA 0 , N2400 , [B1] B1 PortA 0
Index Constant List
Var
31.42 LOOKUP2
LOOKUP
Value List 16-bit
LOOKUP2 Index , [Valve ,Valve,] , Var
Index Value 0~85
Valve , , 8-bit 16-bit ( 85 )
Ex.

LOOKUP B0 , [256 , 512 , 1024] W1

LOOKDOWN2 LOOKUP2 Generate code


LOOKDOWN LOOKUP 3
8-bit LOOKUP LOOKUP
31.43 SERIN
/ pin

8-bit,
noparity 1 stop bit (8N1)

SERIN Pin , Mode , [Qual,] , {Var }

pin Port Porta.0


Mode /
MODEDEFS.BAS SERIN include file

INCLUDE MODEDEFS.BAS

46
include file include BS1DEFS.BAS
BS2DEFS.BAS MODEDEFS.BAS Mode
Mode
T2400
T1200
T9600
T300
N2400
N1200
N9600
N300

Mode No.
0
1
2
3
4
5
6
7

Baud Rate
2400
1200
9600
300
2400
1200
9600
300

State
True

INVERTED

Qualifier , #
SERIN decimal value ASCIE Variable
1. OSC 4
OSC
2. PORT COM 1 COM 2 chip RS-232
input
RS-232 Tx
RS-232 GND

DB9
Pin 3
Pin 5

Ex.
SERIN PORTA.1 , N2400 , [A] , B0 A pin1 PortA
B0

DB25
Pin 2
Pin 7

47
31.44 SEROUT
/ pin no port 8-bit data ,
no parity one-stop (8N1)

SEROUT Pin , Mode , [Item , Item ,]

pin port porta.0


Mode -
Mode
T2400
T1200
T9600
T300
N2400
N1200
N9600
N300

Mode No.
0
1
2
3
4
5
6
7

Baud Rate
2400
1200
9600
300
2400
1200
9600
300

State
True

INVERT

Item

SEROUT SUPPORT 3
1. (String Constant)
2. () ASCIT
char. 13 ( ) char 10 ( ) ASCIT 10
3. # ASCII
0

1. SEROUT
OSC 4 MHz (DEFINE) OSC
2.
PIC BASIC

48

1 mS
DEFINE CHAR_PACING 1000
3. chip RS.232 PORT Com.
Pin
DB9
Pin 2
Pin 5

DB25
Pin 3
Pin 7

Ex. SEROUT PORT.0 , N2400 , [#B0 ,10]


( ASCIT Value B0 PORTB.0)
31.45 SHIFTIN
Pin Port Synchronous
Var Clock

SHIFTIN DataPin , clock Pin , Mode , [Var \ bits..]

Data Pin
Clock Pin
Mode

Pin (Data)
Pin clock
Mode Mode Include File

INCLUDE MODEDEFS.BAS
Include File include
BS1DEFS.BAS BS2DEFS.BAS
Mode 8 Mode
Mode 0 ~ 3 clock Idles Low
Mode 4 ~ 7 clock Idles high

49
Var
\Bits
Mode
MSBPRE

SHIFT
8
Mode No.
Operation
-
0
- , clock
- clock Idle Low

LSBPRE

-
- , clock
- clock Idle Low

MSBPOST

-
- clock , Data
- clock Idle Low

LSBPOST

-
- clock , Data
- clock Idle Low

-
- , Data
- clock Idle High

-
- , Data
- clock Idle High

Mode 2 clock Idle High

Mode 3 clock Idle High

clock SHIFT 50 KH clock

50
4 MHz
0~65535 mS
DEFINE SHIFT_PAUSEUS 100
DEFINE SHIFT = 100
Ex. B0 4
PORTA.0 PORTB.0 clock
SHIFT PORTA.0 , PORTA.1 , MSBPRE , [B0\4]
31.46 SHIFTOUT

SHIFTOUT Data , ClockPin , Mode , [Var\Bits]

Data Pin
VAR
\Bits
Clock Pin
Mode

clock
include file

INCLUDE MODEDEFS.BAS

Mode 0-1 clock Idle Low


Mode 4-5 clock Idle High

51
Mode
LSBFIRST

Mode No.
Operation
0
-
- clock Idle Low

MSBFIRST

-
- clock idle Low

-
- clock idle high

-
- clock idle High

Clock 50 KHz Clock


Clock SHIFT
DEFINE SHIFT_PAUSEUS 100
Ex.
SHIFTOUT PORTA.1 , PORTA.2 , 1, [Wardvar\4]
3.47 I2CREAD
- 2
I2C-bus Memory , Digital I/O , A/D Converter , Temerature Sensor
I2CREAD DataPin , clockPin , Control , [Var]

DataPin
ClodePin

Control byte

(SDA)
clock (SCL)

byte I2C

52

Var

Control byte (
EEPROM)

- I2C 100
clock 8 - Fast mode 400
clock 20 (100 KHz)
DEFINE I2C_SLOW1
- (SDA) clock (SCL) R
4.7 K Pull-up Open-collector

EEPROM I2C

53

I2C

ADDR VAR BYTE
CONT CON %10100000
ADDR =17
I2CFREAD PORTA.0 , PORT.1 , CONT , ADDR, [B2]
IC EEPROM I2C 24LC01B
Control Cold % 1010 EEPRON Chip Select
% 10100000 $A0 ( control byte I2C)
3.48 I2CWRITE
I2C
I2CREAD

DataPin
ClockPin

I2CWRITE DataPin , clockPin , control , { Address} , [Value , {Value}]


- (SDA)
Clock (SCL)

54
Control
Address
Value

Control byte I2C


byte (8-bit) word (16-bit)
word (2 byte)
byte

I2CWRITE (strings) byte



- Array byte
- EEPROM I2C

a VAR byte[8]
I2CWRITE PORTC.4 , PORTC.3 , $A0 , 0 , [STR a\8]
Ex. EEPROM I2C
Addr VAR byte
Cont Con % 10100000
addr = 17 Set address to 177
I2CWRITE PORTA.0 , PORTA.1 , CONT , addr , [6]
PAUSE 10 10
Addr = 1 set
I2CWRITE PORTA.0 , PORTA.1 , CONT , addr , [B2]
PAUSE 10 B2
31.49 FORNEXT
Loop

FOR = TO {STEP Val}


...

...
NEXT

55

STEP Val
NEXT
Ex.

I VAL BYTE
FOR I = 1 To 5
PORTB = I
PAUSE 500
NEXT I
END

31.50 IF. . THEN ( 1)

IF <> THEN <

(Expression)
Logic

B=B+1
IF B ? = 25 THEN PORTB = 1
PORTB = 4
( B 25 PORTB = 1
PROTB = 4)
Ex.

56

31.51 IF. . THEN ( 2)


IF. . THEN. . ELSE. .ENDIF

2

IF THEN 1
ELSE 2 1
ENDIF
Ex. IF B0 < > 10 THEN
B0 = B0 + 1
B1 = B1 1
ENDIF
IF B0 = 20 THEN
LED = 1
ELSE
LED = 0
EWDIF
31.52 SELECT CASE

SELECT CASE Var


CASE Expression 1
Statement
CASE Expression 2
Statement
CASE ELSE
Statement
END SELECT

57
Ex.

SELECT CASE X
CASE 1
Y = 10
CASE 2, 3
Y = 20
CASE IS > 5
Y = 100
CASE ELSE
Y=0
END SELECT

31.53 WHILE. . WEND

Ex.

WHILE Conditon
Statement
:
WEND
I=1
WHILE i <= 10
SEROUT 0, N 2400, [NO, #i, 13, 10]
i=i+1
WEND

31.54 OWIN

EEPROM RAM

OWN Pin, Mode, [Item . . ]

58
Pin Port M.C.U.
Mode Mode 3 Mode
Mode 0 1 = Reset pulse Data
Mode 1 1 = Reset pulse Data
Mode 2 0 = byte-sized data, 1 = bit sized data
Ex.

OWIN PORTC.0, 0, [Temp\2, Skip 4, Byte1, byte2]

PortC 0 No resetpulse
2 byte Array Temp 2 byte 4 byte
2 byte byte1 byte2
31.55 OWOUT
Pin

OWOUT Pin, Mode, [item . . ]


Pin Port
Mode Mode
Mode0 Reset pulse Data
Mode1 Reset pulse Data

Ex. OWOUT PORTC.0, 1, [$CC, $be]


PORTC 0 Reset pulse
byte $CC byte $be

31.56 GOSUB. . RETURN


Subroutine
RETURN

GOSUB Label

59
Ex. MAIN : B = 4
GOSUB DELAY
B = B >> 1
PORTB = B
GOTO MAIN
DELAY : PAUSE 500
RETURN
END
 PIC BASIC PRO
1. Pic BASIC Pro OSC 4 MHz
PAUSE
PAUSE 1000 1 Boud rate SERIN
SEROUT
OSC 4 MHz 10 MHz
OSC 4 MHz
DEFINE OSC
DEFINE OSC 10
DEFINE OSC Pic BASIC Pro
COUNT, DEBUG, DEBUGIN, DTMFOUT, FREQOUT, HPWM, HSERIN,
HSEROUT, I2CREAD, I2CWRITE, LCDOUT, OWIN, OWOUT, PAUSE, PAUSEUS, SERIN,
SERIN2, SEROUT, SEROUT2, SHIFTIN, SHIFTOUT, SOUND, XIN XOUT
2. RAM
Pic BASIC Pro RAM
MCU Address MCU
PIC16F84
RAM $0C PIC16C74 $20
COMPILE

60
Address RAM MCU
BANK RAM
Penny VAR WORD BANK0
Nickel VAR BYTE BANK1
Disp VAR BYTE $20
3. PORTA PIC PIC
PIC16F62X PIC16C62X (16C 620, 621, 622 16F627
16F628) PORTA


Analog Comparator (Start up) PORTA analog mode
Pin PortA
CMCON = 7
PIC PORTA
PIC16C7XX, PIC16F87X PIC12C67X PIC Start up portA
analog mode PortA Digital

ADCON1 = 7
Set PORTA
ADCON1 = 0

* PORTA 4 open-drain output


output 1 (Flot) 1 ( high)
Pull-up 5 V 1 k
33 k
4. PIC Microcontroller Low-voltage
Programming PIC16F627, 628, 873, 874, 876 877
PORTB
Ground Pull-Low
High-voltage Programming
5. PIC Microcontroller input (power-up)
output output

61

62

2 0 1
-
, -, -, - 1
2 4 -, -, - - 3
8

= 2
2 22 = 4
3 23 = 8
4 24 = 16

2 0 1

00
01
10
11
100
101

0
1
2
3
4
5

63
110
111
1000
1001
1010

6
7
8
9
10

(bit variables)
1 2, 3 8

(1) (bit) (binary digit) 0 1
(2) (nibble) 4 4
16 0000-1111 0-15

(3) (byte) 8 8
8 1
1 256 0000000011111111 0-255
(4) (word) 16
216 65,536 0-65,535
2SX
(5) LSB : Least Significant Bit
20 1
1X 20 = 1 X 1 = 1 0 0 X
20 = 0 X 1 = 0
(6) (bit 0 : b0)
LSB (bit 1 : b1) 8

b7 b6 b5 b4 b3 b2 b1 b0 0-7
b7 b6 b5
b4 b3 b2 b1 b0
(7) MSB : Most Significant Bit

64
8
MSB 7
7
(bit 7 : b7) 2 126
6 , 5 4 MSB 25, 24 23


100 1 101 10
102 100

0 LSB 20 1 1
21 2 2 22 4
8

0
1
2
3
4
5
6
7


20
1
2
21
22
4
23
8
4
16
2
32
25
64
26
27
128



1011
(1)

b3
b2
b1
b0
23
22
21
20

1
0
1
1

65
(2)

= (1 X 23) + (0 X 22) + (1 X 21) + (1 X 20)


= (1 X 8) + (0 X 4) + (1 X 2) + (1 X 1)
= 8+0+2+1 = 11

2
0 1
LSB 0 (b0)
MSB
13
(1) 13 2 6 1 LSB LSB = 1
(2) 6 2 3 0 0
(3) 3 2 1 1 1
(4) 1 2 0 1 MSB 1
1101


MSB MSB 0
MSB 1

0000
0001
0010
0011
0100

0
0
1
1
2
2
3
3
4
4

66
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

5
6
7
-8
-7
-6
-5
-4
-3
-2
-1

5
6
7
8
9
10
11
12
13
14
15

0000 1111
1 1110 2

1000 1
23 8 MSB
1 8 3
8+0 = -8 1101 8 3
+5 8+5 = -3

1
(i)
0+0=0
(ii) 0+1=1
(iii) 1+0=0
(iv) 1+1=0 =1
2
(i) 1 0
(ii) 1 1
(iii) 1 1
01
01
11
11
100
110

67

0
+
1
+
0
+
1
+
0
+
1
+

0 +
0 +
1 +
1 +
1 +
1 +

0
=
0
=
0
=
0
=
1
=
1
=


0
0
1
0
1
0
0
1
0
1
1
1

4
(i)
0-0 = 0
(ii) 1-0 = 1
(iii) 1-1 = 0
(iv) 10-1 = 1
(iv)
3 110-101

b0
1
1
0

b1
1
0
0

b2
0
1
1

b0 0-1 b1
210 -110 = 110
= 12 ( 210 2 )
b1 b0 b1 0 b1 0-0 = 0
b2 1-1 = 0
001

68




210 - 410 - = -210 210 + (-410) = -210
(Complement) 2
(Ones Complement) (Twos Complement)

(Signal Number)

(i) 2 + (-4) = -2
0010 + 1100 = 1110
(ii) 127 + (-125) = 2
01111111 + 10000011 = 1000010
0 1
1 0 0100 1011

1 LSB b0 0100 1011
1100 4

(i)
0X0=0
(ii) 0 X 1 = 0
(iii) 1 X 0 = 0
(iv) 1 X 1 = 1

69
1001 X 1011
1001
x 1011
1001
1001
0000
+ 1001
1100011

(Hexadecimal Numbers)

16 0 F 2SX
$ %

, (
)

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011

0
1
2
3
4
5
6
7
8
9
10
11

0
1
2
3
4
5
6
7
8
9
A
B

70
1100
1101
1110
1111
10000

12
13
14
15
16

C
D
E
F
10

1 4
4 101011100011

101011100011B
4
1010 1110 0011
A
B
C
$AE3

BC75H

B
C
7
5

1011 1100 0111 0101


1011110001110101

302

100101110B
4
1
0010 1110

1
2
E
$12E

71

160 1
161 16
163 256

A
E
3

10
14
3
2
1

256(16 )
16(16 )
1(160)

2560
224
3
2560+224+3 = 2787

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

PIC
www.microchip.com CD Web

92

93

94

You might also like