Robo-PICA Thai Manual

102
àÃÕ¹ÃÙáÅÐÊÃÒ§Ëع¹µÍѵâ¹ÁÑµÔ ¡ÑºäÁâ¤Ã¤Í¹â·ÃÅàÅÍà PIC Robot experiment with PIC microcontroller ¡ÄÉ´Ò ã¨àÂç¹ ªÑÂÇѲ¹ ÅÔéÁ¾Ã¨ÔµÃÇÔäÅ (C) Innovative Experiment Co.,Ltd. ˹Öè§ã¹Ë¹Ñ§Ê×ͪش Ëع¹µà¾×èÍ¡ÒÃàÃÕ¹ÃÙ

description

เรียนรู้และสร้างหุ่นยนต์อัตโนมัติกับไมโครคอนโทรลเลอร์ PIC

Transcript of Robo-PICA Thai Manual

!

"

!"#$%&%''$%($ )*+

!"#$$%&'%&$()*#+,-.(-$$,-%,/012 3" -) % *% %&'4, ,%,*5,6$ ,%, !$,,7$8%&$(,) !, -$-'99,:-$$,-%,!")%&(,) ()-' $,,6;)< *+), %&=68>(,%, !$,,

!,%&'?*)5,;( !()*#+,-"-$$,-%,/01=+%,+)!, !3(3&5&,*($";8 !3;(,)%&#6()5&,. !%&)+,= +$*,,@.(,;*)5,+' (%)"%,-A,,@(6!"= ," +'!$=$$5&,%&, !("= +,,'%)"%B ! ) ! (.$)+,'

! "

*(,+++*&)+.,)*)5,+ ,!(",#C

&($%,$$- !"# $%$&%$$ '!"(! ) ./0121/1..3/2 ./0121/1..4

#

$$!"#567 589(7&:$ ''$# '&;( (<

('%%&''&'"$:($*+,-. +& /$,% % /*012345$35 ,426+.$)%+,-. )& 2, 7+.,-.+$,* ,42#-8.+$8.%0955+.8.%-.+$.$.#/$8.$/*:+&.$%0; ,4$5$

,-.345.$& 5&&<+7.8225 5 01&2%2 $* =-.,8.%>?>25,5%25%+; 2.+ $5$7* $5< 5 8.%>?+7.%25$,&=+,03452%2 $5$& -.;.80@6502 ,45/*+.$ 5$ ,426/4$55$.80235>?+.-.2%25; +: ,4%0@6 ,482+.$ 5$

!"#56=7$(7-$ ''(7# $# 0( &>> 345.$07 8.5$357345 4235 & /$01345,-., ,4$+.<5$7#/$5$2 2-. *$5$.05% 345+.7*$.$2 .$28.+2,

+$35,*8.5.5- ,42%#.5%.+,-.345.$ 5$ $5$& 5&&< ,42%2 $.8225 5 ABC5018225 5 ,48.%2-$ 345$,2;%& $D ,45$4$+.$& 5&&+. %#/$ $5$05%&$E+7.$5F& ,4+7.+G&5$.$& &5$03452%2 $5$& +H;&$E&*$&*3*I80#/$ $%&&%%%&$E345+.8.,-. $5$%%2%25&&8. *$+ $&$ $5.5

2;=-. 55%2; ?@ABCDEF@EDDB@EF GHIJ *EAKI5 ,48.=5F& !"# $% &'()*+,-). ?DALE@MND5$JH ,48.=5F& /011#20 /4$+7.%ABCKLMBCANO2585 /4$+7.G02%2& +$35,*

345 *6(789:7:; )<='6<<&)

%

&((73 - #$"5: !"# O$,-!&%5 P7*5$& NQRQSABCL" 2345$35 ,4+7.+.$& 5F& %G02%2&

&((70 PQR/S11> ($ '&'"!"#%''$%($)*+"T"2;%& $ 22"" $5$$3<63->? @ A (B>7CD3-EFFF+ $!GHIJJ

&((7T !"#PCIC/)*+U 3<63->? K A DL3F)E7')LC.M+,7

&((72 '&'"!"#&=$ (3<63->? N A 6EF-<O-.3M+B.(3<63->? P A F+3()>=7B.M+,73<63->? Q A 3F+(8B.M+,73<63->? R A M+,7()S?->?DFF->?3TM

&((74 !"#&$% P&&% .5$5F3<63->? J A -EF3,,E:UUVL)33<63->? I A M+,7 $WH " ()S?->?(E

&

&((7V '&'"!"#%'$%(U(=$$-%$5F(",&25 VWXYNZ[Q\Z]35VNS]3<63->? X A <:=.Y..6C):FE.<( NIZ[\3<63->? @] A ,,63>CC-) ^_ $`P3<63->? @@ A M+?7a()S?->?73F+63>CC-)

&((71 !"#&;"&&#> UTP $5$^_S!U=$$&%&#.$5F3<63->? @K A <:=.Y..66:F:b+3<63->? @N A -EF3-T.B.Y..666:F:b+3<63->? @P A M+,7()S?->?M)FM)>3:b+FF&,E:Y:E

&((7S PCIC/)*+U&( %( &&$,TU.5-%3*5$&.5$`A"a"!`A"a"

-&% $.$5FU" $5$-& $.$5F3<63->? @Q A <:=.C) cKd@K] 3, $WH "3<63->? @R A 3(B>7CD3('S?,,63 cKd@K] E.Y)->?C) e d3<63->? @J A M)FM)>3E<?.3>B.73:L7L-.

'

!

"#$%&'()*

*% +,'$-.( ! !"

#$%& '(')"!$" %*( ( & +,-.!'! /0102+,-3(%4 "567

89 #$%&/0102+,-3

:9 ! !" #$%&

;9 4" . <&4 &!" ='>(5 4" $" #$%&

';"$#'"'

!

" #

" $" %#&$'(')% "*

/

!"

+,-.//&0%0

&%1 %11'

2+3 4505 '

&%1 %11%6'

&%1 %'

6773 #5 ' 8.9:;

#$"% "&'()*(+&",-

< 5% #

" 3

."/0 &/10232""3

4=773

04"#> 40 >0%"#) 0'% !"

5?@ABC%D E 4>

FGEABEH5% #%#'

!

!"#$%&'(&$' '

)$*&&*# !!%+$,#-*./$&'(&$ '*./$01/#2$(01#(3*4 25/'#(3&$)5#4'/012+6 7+25/'&$)7##4!

)6$$/%#.87!9*./$&'(&$- '01#(3 #"#.801#3$ #: /!!%+ 4 25/'#(3&$)7#"25/'!(/.*./$01#(3#.8!#&""/$4*& /25/'3$4 $&";<=&$)7#

!"# $%&'()*+,-./ 0'(*123'4)5(/,-.0 !"# $%678%2+$- !7&'/'25/'%/5>: 7!9!&"?@ABCDE@FCCB@FEGH$,'*) IIIJDCKHLJAD/>: $(:M$,3!(!'/.#N)&"(31!3*#'5#6#73#$!IIIJ@FCOJAJPQ

)6$*./$!'#"(!%$$,) !( ;<=&$)7#RCD%)$$.ST!(>: (#-/#-*./$01#(3!()$*&&*#*4 ;<=&$)7#$,) #73$#3$!" !"#$%&!'$()!73$7*(31!3*#'5#6#73#$!

9:!;<9:=> >?@9AB='-)5(/,-./C6B?>DB=<9>EF

#";<=&$)7##'4!4 ) $(:M!%$&&- :?@ABCFE@FCCB@FEGHL+) #'4!$ 4 ) 5#7"#.U* >: ) 4 *$- !!%

$,&$)7*./$01#(3) VW(!)$!($#/(!'

4 ) !()$*&&*##(WXYXZ[\]^WXYXZ_\]^WXY_`\]^WXY_[a^WXY_[W^WXY_[Z^WXY_[V\]^WXY_[`\]^WXY_[X\]/ WXY_[[\]

)$$,#)5#- $>' ')#65 bGcRd)

"#

3(3)/G/ !"# $%&'(

-;<=&$)7#&"/.*./$01#(3\JHL]#.801#&"\JQCO]"/$4*& -;<=&$)7# #7" ) /$4*& $!%

WJ*./$01#(3$/.#.801/#2$( ) >!7e#.8)5 JHLD

ZJ/#2$#(*./$01/#2$( ) >!7e#.8)5 JQCO

!!%'.(&!T$-;<=&$)7#&"'/.01#(3#.8/#2$(*0;<=&$)7#$!'/.01/#2$(Z!'&"8 !(8"#85H01/.)*+5&'(23'(0,-.8 '4(

('/."&$)7-;<=&$)7##3).&'#'!!%//.01#(3#.8/#2$( /01/#2$(#.8/$4*& ) #.8)5JQCO #7").*./$)$*&&*#).

I /G/ !"# $%&'($,+&"- &'$)$$,$4 !%4"!'/.*./$01#(3

4 ;<=&$)7#/.2+6&"4"&!/7$3##'- &!#!($!'!101!f1) !%ABS ADCIN AND ANDNOT ASM AUXIO

BANK0 BANK1 BANK2 BANK3 BANK4 BANK5 BANK6 BANK7BANK8 BANK9 BANK10 BANK11 BANK12 BANK13 BANK14 BANK15BANKA BIN BIN1 BIN2 BIN3 BIN4 BIN5 BIN6BIN7 BIN8 BIN9 BIN10 BIN11 BIN12 BIN13 BIN14BIN15 BIN16 BIT BRANCH BRANCHL BUTTON BYTE

CALL CASE CLEAR CLEARWDT CON COS COUNT

DATA DCD DEBUG DEBUGIN DEC DEC1 DEC2 DEC3DEC4 DEC5 DEFINE DIG DISABLE DIV32 DTMFOUT

EEPROM ELSE ENABLE END ENDASM ENDIF ERASECODE EXT

FOR FREQOUT

""

GET GOSUB GOTO

HEX HEX1 HEX2 HEX3 HEX4 HEX5 HIGH HPWMHSERIN HSEROUT

I2CREAD I2CWRITE IBIN IBIN1 IBIN2 IBIN3 IBIN4 IBIN5IBIN6 IBIN7 IBIN8 IBIN9 IBIN10 IBIN11 IBIN12 IBIN13IBIN14 IBIN15 IBIN16 IDEC IDEC1 IDEC2 IDEC3 IDEC4IDEC5 IF IHEX IHEX1 IHEX2 IHEX3 IHEX4 IHEX5INCLUDE INPUT INTERRUPT IS ISBIN ISBIN1 ISBIN2 ISBIN3ISBIN4 ISBIN5 ISBIN6 ISBIN7 ISBIN8 ISBIN9 ISBIN10 ISBIN11ISBIN12 ISBIN13 ISBIN14 ISBIN15 ISBIN16 ISDEC ISDEC1 ISDEC2ISDEC3 ISDEC4 ISDEC5 ISHEX ISHEX1 ISHEX2 ISHEX3 ISHEX4ISHEX5

LCDIN LCDOUT LET LIBRARY LOOKDOWN LOOKDOWN2 LOOKUP LOOKUP2LOW

MAX MIN MOD

NAP NCD NEXT NOT

OFF ON OR ORNOT OUTPUT OWIN OWOUT

PAUSE PAUSEUS PEEK PEEKCODE POKE POKECODE POLLIN POLLMODEPOLLOUT POLLRUN POLLWAIT POT PULSIN PULSOUT PUT PWM

RANDOM RCTIME READ READCODE REM REP RESUME RETURNREV REVERSE

SBIN SBIN1 SBIN2 SBIN3 SBIN4 SBIN5 SBIN6 SBIN7SBIN8 SBIN9 SBIN10 SBIN11 SBIN12 SBIN13 SBIN14 SBIN15SBIN16 SDEC SDEC1 SDEC2 SDEC3 SDEC4 SDEC5 SELECTSERIN SERIN2 SEROUT SEROUT2 SHEX SHEX1 SHEX2 SHEX3SHEX4 SHEX5 SHIFTIN SHIFTOUT SIN SKIP SLEEP SOUNDSQR STEP STOP STR SWAP SYMBOL SYSTEM

THEN TO TOGGLE

USBIN USBINIT USBOUT

VAR

WAIT WAITSTR WEND WHILE WORD WRITE WRITECODE

XIN XOR XORNOT XOUT

"$

H51/ !"# $%&'(6B?>

*./$;<=Rd?=$ '*5#'.)2JJJ?BA;K<:>?":) 2$!$7 $!(4 &!*./$!%*5#-;<=Rd?=).!g3 \/ ).)' )5hi] *4 &!jk/HLPC #.8!#63%3!%*./$;<=Rd?=

LH51/ !"# $%M

;<=&$)7#$l#.8) $(:M$,3!2"%*./$) (31!3*#'5 #6#73#$ !2+3!%#$"!(RCD!&"&!)5*./$/>3*./$;<=Dj@KCB).!g3#&"&$73'# 3!%

N,-./ !"# $%&'(3OHHH5

*/ 3/ ';<=&$)7##.825/'(((.m3(!3/$,#4 /((#-&!#(!" ADDHFn K@FC!&">: 4 7$3#.( ) '2+)$'!/%)$$# (#$,:) )5&:$"4 ;<=01!f1\'*) III JDCKHLJAD/$$7 $!(25/'#$"!2"%$(:M]

#".S(!((.m3(!3-&$73'#'T#.8'3*'!!%4 ;<=&$)7#!(((.m3(!3'3*' ) !(&'$'+ 4 '$!(25/'!3!(>: 4 $ /((5U"(#' 67 CEPBQ=;PBR6BDBA>@?BEP7ED9=>E?BEPF!(;<=&$)7#$>: !25/'!1M%#>/7: Z!'&" >RB6B<9QEB=G/ #89:=>#S<PB?</89:=>:>RB#PTR9>G/8B:;E9UTB// 4 %&"89:=>:>RB#PTR9> #"$,'*$4 ) 5 / $,4 ) !( ;<=&$)7#!%$(:M/4 !%?@ABAnC<Pon@!$ /'3e4 #$:&!4 #.8$3!(>: 4 :\pB@CFnKkoLCB]/$ '$- !(!#2+ !2"%KoL6$/!($l6$,4 ) 3!%#7"4 ;<=&$)7#!(?@ABAnC<Pon@6'#7?@ABAnC<Pon@$,& *5#3!%;<=&$)7#) #

"%

I89:=>:>RB#PTR9> &)('( 5,-.&'(

?@ABAnC <Pon@ #.8-8B:;E9UTB.#N!f1 $,'*) 5IIIJDCAHF@qoCJAD *4 4 '$!( ;< =&$)7#!%$(:M/RCD

IH51/89:=>:>RB#PTR9>

#4#'!(;<=&$)7#RCD*./$?@ABAnC<Pon@$,#"3!%) )5DALPon@JCOC2+:2$!$7 $!(4 *5# rsKLr?@ABnC<Pon@ ZJWJaJW \$#-#'4! #./.) ] !(#(3&3)5DALPon@JCOC*5#%#7"#3$3!%.t$(!($-!%u3!%#6$(:M #$" !*./$?@ABAnC<Pon@$,)..t$ <PHBPBEBHD?@ABAnC<Pon@?@ABAnC<[email protected] #3$ -?@ABAnC<Pon@!:.W W

!"#$%!

"&

II5/,. !"# $%

#7" ?@ABAnC<Pon@(/3!%-;<=&$)7#RCD (/#% #$:v@CI ;HL@A=jP@F-?@ABAnC<Pon@* ;HL@A=jP@F/:.W Z

M3!%;<=&$)7#RCD \"$l])' g3/ '$,.t$ #7" & *!*$!3 /M- $:g3$$##'& $,.t$ #7"/-*./$ '#) *#$".t$%.m !:.W V #7"& )#"*5#3!%;<=&$)7# '##$"7(/ ' .t$ #7""!

& '()*+,-.$ /01 234 53 678293:2;2<'()*=#()'>-4:59

? 4 782976'()*=#()'>-2@A

BCD E '()*=#()'>-4:59:5 BCD E 4:59;FG9

!"# " $!%&"'()*+, "$ -.,/

01234567891:;7<=945>?"?@@/' !$ A0;;5BBCDDE7>:B0B5:F?"?@@-'!

"'

I 3H(3V H)*+ ,2G/89:=>:>RB#PTR9>

H62@E 4I0 !"#$%!

!"#$%&# '#$()&*+$!),-./0/12/343%!5/36%15/105%()& 789: ;<=8>:>?

@#A2*+$!5+B2()&C33! DE

!&2F

D-%D32G7HIHJKI>? 12/343%D-%5/LE-@03-

?@ABAnC <Pon@ #.8*./$ 0'/' $#-*./$ '01#(3!(;<=&$)7# #-*./$&'(&$)$*&&*# '01#(3!%#.8#" *$'.(&!T!%

WJ01)*+'G*4 /&'$-!'!1#.8!'/(/&!#(&$#$ /- $:u! &'$#- !(*./$)

ZJ./ >RB7W@A>=B=#7"*).!/#(!'/.&&u) '#6'!%!$,///#("!'/.u) '

"(

VJ./ 5/G.XH5(5 #$"&$)7*./$#3- >37-+%) %/- >37u-+%$>: 4 $,4 #$&3(!#!%*./$//,(-+%(!>37 $,#- )./ )-*./$)

`JY 5/ Y3 / '!T!1M:.GdR//#-' #7" !#)

wJY'0+/0 '$&!/ )-/&$)7*./$)' >: #3$ $,4 *./$) '#6'

XJ./ 0+ G.Z(C#B=9;A >??TE9:;P9>E<[9ER>JF4 4'/>- $:$$)$*&&*#>&!Rd;cx"<d=cs*$,&$l"u) 3

!%!$&M$(!373#N1"u

#.U 2*./$) #7"/ )-":#7 $!)

#":./((&$)7).,+*./$- $:)$*&&*#) /!&/ '$,!&!#'#7"&$)7/*./$

!(>: 4 4 '$!(( R \F@BAo@PRCoEECB]$#&"$"!(!*./$/((23#3#6.#7":>-*./$)

IL 'Z,-./G/89:=>:>RB#PTR9>

'Z\9AB]7[\PBKyb] $!(#-*./$%@BE\PBKy=]#.U2*./$(!+)' / ' %#;DB\PBKy<](!+2*./$#;DB"<4 (!+)53/(((*5#/4")5$#;DB"AA4 (!+)5!%$#.U: A><B4 .U 2*./$/5:-M!% A><B"AA.U 2*./$!%$$B>@BE4 #.U2*./$$#.U4 %=9EP#BPT@4 &#&"73$7#7"73$72*./$=9EP=BD9BJ!(/>73$7 73$7=9EP!(73$72*./$#&"73$77W9P*./$?@ABAnC<Pon@

")

'Z7R9P^ER>\PBKyz]4 #3). %$BR>\<Q@pPyPBKyz]4 2%&!,:#3 % TP\PBKy]!- &'$ >@S\PBKy]&!- &'$;<PB\PBKyv]'- &'$7"%6BABPB\PBKyRCK](- &'$#BAB:P"AA\PBKy]#"- &'$!%$\9ER\PBKyY]& - &'$$B@A;:B\PBKy]& / '/ '- &'$\9ER]BWP\YV]4 & - &'$,!).

'Z_9BJ >RB7W@A>=B=#.U".U nCdOjKBCB!(

#- ,+'u-*./$) *#B=9;A >??TE9:;P9>E<[9ER>J\Y`]4 #.U "

- $:$!/:.$,:./(() $

`>>AK;=<#"//,(#&"$" */,(#&"$"u$!%

!""#$%&'&(&)*+) / )5$\bCI]^#.U)5$:/ '\=jCF]"(!+)5\<H|C]#.8

"*

"#$%&'&,-+.%/0$'1(234%56%'5278+934.281:/1'4$%$4;%22%3) /#(-)$*&&# &$)5*./$^# <CB@HKDDoF@AHP@FL

<!=<=>#$%&'&8?@2A'?2B+:C4%56%' !(g/'#7!(F@BAo@PRCoE '\4 )$) !(;<=&$)7#RCD]

D"!#$%&'&56A1%3,4%56%'.( '& \Y@Fn]^/- $:\CjKHAC]^ (!#.8DDCFP#.8

#6-+.84E28%3527$FG,'0/HI$'1(2%3J *.3?@ABAnC<Pon@/#2$#(2

*./$*4 )5?Jdd2+!()$*&&*#$WZ/W`(3!%$ )$#.8 & '%

4 #25/'!(*./$- $:)$*&&*#*!*$!3

!"# %`%]4 ;<&$)7#/25/'4 *./$)$*&&*#$#!%

"!

7R9P>=%@P9>E0'/' $#-*./$*/(/#.8'u!%

K#6-+.8$L+0&)HA) //*5##3$ ^#"/#-(!^!-/6.^*)./$- >37#.8

M!.!(//:./((-!'!1#7"/(/&!&$#$43-!'#-!'/./!T!1Mu!

M" &$#$)' '!'-*./$*!*$!3$,4">: #-2*./$'(!#.8'!'!#3$ *./$ *!*$!3

NO"!#"!( *./$'(- $:*g$#7->: >3'$*./$#'4!$")$*'(#$")#- :3##6/ '#!%, )$ 4 &'$$,%#.8/((?HFoHK)

$#

'ZaBA@

aBA@`>@9:<4 !(#.U#- : /#4 *./$?@ABAnC<Pon@/4 ;<=#("%

89:=>:>RB#PTR9>AT</#&M$(!3-*./$?@ABnC<Pon@KoL/#->: >3!(25/'KoL #&4 #73$/&'$$,-*./$6#73$$ '

"K>TP/##'4!-*./$?@ABAnC<Pon@

$"

89=;:AB G.Z((/,2G/&)('(

#$"#-*./$01#(3 '?@ABAnC<Pon@/ ' &$)7 ';<=&$)7#) )5JQCO!#.8)501#&"-)$*&&*#!% #-"*./$- $:%'&'$0)$*&&*#2+%4 25/'4"?@BHAKC 7!9-+%*(31!3*#'5 #6#73#$ !$,'*) IIIJ@FCOJAJPQ*?@BHAKC%!(/>'; _[[!#.8/>'&'(&$- !!"#$%

H51/

#- ).*5# rsKLr?@BHAKC~ />2$$7 $!(4 3!%*!(#(3&3)5D<CPojWXWJCOC \$#-#'4!#./.) ]", '*$6 !(#(3&3)54"!#'!% .m - &'$/ "!3!%*./$ .t$=(!().!3!%#6$(:M

I(3'*5b,-./G/89=;:AB #4 *./$?@BHAKC) *)..t$<PHBPBEBHD?@BHAKC?@BHAKC

YKHLQ.m !-*./$!:. W `

H 76+J"'()

(1&-DMM3N23O,3

D-%F) 5%3)P%25/&F0

Q/%! R.&(""2(*0!0R*+$!0# D-%D32G3*S3%32

D-% 5%.&(""2(*0!0R*+$T'/

D-%"438UVWXJ>IHW8UY8>9

)Z[&QD ! R.&(""2(*0!0R(2&E

!0#! R5%.&(""2(*0!0R

"S3D$%

)Z[&T'/%32

$$

ILIb)/(WJ.t$ =db4 #.U)5$Jd *./$)$*&&*#

ZJ.t$ <vd4 (!+2*& 2+#.8)5$Jdg3"5..3

VJ.t$ =x?4 #-- $:-)5Jd'&'$-)$*&&*#

`J.t$ vdY4 '(*./$*#.(#(- $:(!5#5!(- $:) )$*&&*#!*./$- $:/ '

wJ.t$ dR4 - $:)$*&&*##")'

XJ.t$ ;Gbd4 '(- $:'0)$*&&*#

[J.t$ d<d4 (- $:0'&'$*./$-)$*&&*##"

_J4#"#()$*&&*#

ILII 'Z,-./G/

'Z\9AB%@BE\9AB 4 #.U)5$Jd *./$#$"!(.t$=db#;DB\9AB"< 4 (!+/5$- $:4""$B:BEP\9AB< 4 #.U)5#&#.U4 %7W9P *./$

'Z_9BJ4 :&7$3#!%$-)$*&&*#

=>Q=;?!TccB=C\F4 /#-2*& #$"#"#$:%.m /- $::.Z `*/- $:!%:.-#-l3(/!/%>: 4 $,/ )-\Cn@P]- $:) *#"/-'&'$ / '.&) !"4 5S4!Y@KKBEBHD;oppCB6)

6;P;!TccB=C\IF4 /#-'&'$- $:7$#$"#"#$:%.m /- $::.Z w>: 4 $,/ )-\Cn@P]- $:) *#"/-'&'$ / '.&) !"4 5S4!Y@KKRHPH;oppCB6)

>Ec9QT=;P9>EC\dF/#g/' #"-)$*&&*#*#$"#".m Fp@EoBHP@F!:.Z X

>TEP=>Q=;?4 /'-)$*&&*#$*./$'*./$!'$'-)$*&&*#*./$)$#6#

"AJ;S<>EP>@4 !-?@BHAKC :/(&!%

$%

'Z6BD9:B4 !(#"#(-)$*&&*# 3 '

'Z >??;ER=>Q=;? e9@C\LF4 *./$)$*&&*##$"!(.t$=x?_B=9cS e9@C\NF4 '(#-- $:)$*&&*#',: ")$$B;R e9@C\fF4 - $:)$*&&*##$"!(.t$dR7=;<B e9@C\gF4 (- $:0'&'$-)$*&&*#!A;Eh e9@C\iF4 '(- $:'0'&'$-)$*&&*#

'Z%@P9>E/(#.8 '&",L96-+.8%?5006+%4%56%'527H%9P,0$#!%

=>Q=;?j_B=9cS=>Q=;? #"#7"*./$/'(- $:*./$)$*&&*#!(- $:(!5#5

K 62@A4@ F 76

L 62@A4@ F 5

$&

=>Q=;?j_B=9cS6;P;#"#7"*./$/'(- $:'&'$- $:)$*& &*#!) !(*./$

=>Q=;?j_B=9cS6#"#7"*./$/'(&R-)$*&&*#=>Q=;?j_B=9cS >Ec9QT=;P9>E#"#7"*./$/'(&7$3#"

&Fp@EoBHP@F-- $:*./$)$*&&*#,L9;Q,6+%2&6CRA$9+',+'+%S(ITU&V.( '

"TP>DB=9cS;cPB=@=>Q=;?#" '(- $:!*./$#6!*$!3"TP>B=;<BKBc>=B@=>Q=;?#"(- $:0'&'$*./$=>Q=;?;AA;RR=B<<#" *./$- $:/#-'&'$*./$

- $:$*./$$-#6''#"#-- $:aOVYYY).,L9;Q,+'*+,-./0.120/0221302&65,8A$9+'H&6L20.L9:$9+'P-+4%56%',L9,F8;A+:1.144045*.64 #"7-3#") V/&"GsW GsV

ILI5 >Ec9QT=;P9>E).#$:v@CIFp@EoBHP@F$#!%%<:9AA;P>=4 #"43-'#3!TTMU-)$*&&*#$_/((&"

#$%I,H25006-+2/+H-+ WX#$%I,H2$9+'SQ1'L6IYMZM #$%I,H2$9+'SQYMZ)1 DWX[#CRA,/\\+G+]6+B+:6_X`#CRA9P% B+:C DWX`D`>#CRA9P% B+:6_X`a<!#CRA9P% B+:C48:;Q+N bP7'Q,/\\+G$9+'SQcN dY,L6'+8A9:DWX`a<!#CRA9P% B+:648:;Q+N bP7'Q,/\\+G$9+'SQcN dY,L6'+8A9:

>RB@=>PB:P4 #"*$-.!- $:)$*&&*#

M 24 ) /NO%+$ /:74479 '() 076+ J" '()

$'

>Ec9QT=;P9>E4 #" &'$$,73#N1-)$*&&*#&'$$,&!T) /e=Xe!"!>#2&6C.A9HR38f61;'%3;-++d1'L;-++e`XgV<X>#2&6C.A(+9%3/1;'%3;-++d1'L;-++hN=D_hgV<! !>#2&6C.A9P%0%+9+H38Q;f6H3;-+.A+;Q%QH1'4$%&*#

'&5%8/1E2Q):282H-+69L+;Q6-+.819A;-++igi!>#2&6C.A4%56%'A'?22C1'4$%$4;%22%38A9:5%8/

H-+jki5;;QP7CRAjlbiH+'6HIe`X e! c m> # CRAf0I26+%Q:A'?22C.L9:$9+'P-+4%56%'8A9:H/9

1'4$%$4;%22%3

,-./89=;:AB 89:=>:>RB#PTR9>

?@ABAnC <Pon@ $,#4 25/'!('*- $:)$*&&*#) !!&$)7*./$ ';<=&$)7#/ ' 7!9*./$'$ #7#7.t$YWa ?@ABAnC<Pon@ #7.t$#'6#3$&$)7 /#2$#(/'**& )$*&&*##6$(:M

)6$#4!%) (/3!%25/' '$!%4"-25/' ?@ABAnC<Pon@(#!$-!%).%

G1)*+#.U*./$?@ABAnC<Pon@/ '#"#$:vd;HL@A=jP@F#7"#.U ;HL@A=jP@F-+%$#"/6.BEBHDDCB!:.

$(

G1)*+ I.t$ #7"#73$#&"*./$!'$#- )..m 7 $!'#"-#&"*./$7 $25/'u$ #"!:.

G1)*+#"?@BHAKC)$$:% &3#"!'- BCHPCHAoLPDjBEBHDDCBCFPBk!%.t$ *./$/ 4"25/' (4"[email protected]$ #7"-!%).

G1)*+ L*./$/ 4")5*./$!! %4")5&"n opC 4'!:.!%.t$ #7"$-!%).

G1)*+N& )##6(*./$?@BHAKC)' *$,/((!*$!3*.t$ "( '#*.t$

$)

G1)*+f #7" -?@BHAKC #$"#4 ?@ABAnC<Pon@ #.8).!*$!3 7$3#?@BHAKC!%

-e -l $hex-filename$ -p -v -x

!"#$"$%&'(%!$

)

)*+,+-./

!#0"123456,7

*&'$$-7$3#).$!/":#) )5cL@FEjHBHDCPCBI@PQ?@ABnCJPOP*5##6()5?@BHAKC!&#6#( .t$ #7"(& !(*./$?@BHAKC

$*

!"

!"## $ %&'"##()*(+,,-+./0-+12-*(3+456667879:;<= %&'"##;>?9: @%ABCA8=DE !"##FG:;9DC8B8=DE !"## 8H=:;<E>7IBJ;<;B;K?

!"#"

$ % &''(% )*

%+++&,-

&+.

&+/

&+01*.

234-5

)*/++$22$

3& /06&+

+7889

3: %+7

0 $3&''( ;$"<=>?

!"#$%%

#!$%&'())* + ,-

+-+

./

!

"#

!

$ %

&'()*+*&,&-./

0 12!&

-3/& 4

$#&5*.

&'( !"#$%%

;<66787 %&'"##$5@LJD676?AHI8MHEA7C9H8H=:B=:BE>79EJ8N@<HO.PABIQEJ8F68E87RST"&UVJ 976H8?W6FBJEJ8B99O.PABM7V<JEHE6678796>7OPJJDAXA7CA9NB7JJB@BJ8<=:J?Y9:9B=:BE>7MCJB@9IH8HAII7A7CIHC7"< 7C89EA?7BJZZYC78?[II7%LIA89: S;<JDAJ77A7CA?CN;E@TV#\/&T@\ID

%%6&

.0

)* !"#$%%

J;BJZ= S66787 %&'"##FG:9BJ;<]GV@EJJD667878H9J89GJ?YIH8H8H=:B8?[69% 8FI86F88 @L^_`8I]9:BJZZYab;A S

!"

#

$

%&

'

%&

(

(

(

(

)*%

*%

+$+$

++

,'

,'

)

-'

-'

.

!"#$

/-,0'1

#

23%

*$$

-'

µ

$

!

!

4 #

5

-'66

-'

""

#

$ %

.%

& '

%

%

&

'(

$

*

.#%*/ 2

-'

*

$

-'

#

#*

-'

-'

#

#*

4&

%&

%&

%&

&

&

&

&

&

#

%

3

-'

*

-'

'

4&*.

+

$

')

$

)

)

)

(

)

(

)

(

+)#*

-'

)

( '

&

)%)*

( '

-

#

.!

!

!"##;<cNBI<<I:A?JEGD$d(-0e058H=:;B]JA89:J77A7CA?CN; 68H=:JfCJAJN879D9:9: g\U 8H=:;J66787A7CF99:AJN879Dg\U J=:KJD9D8=:8=:8I:N;ACJEAJ9:A89:CK77;<NBI<<I:A?JEGD G;AJN879DJJfCJ>9: g\U> CJAJEA89:C77:IK $?CY%T\U5 GB]JfCJAJ

BI< h%9:8?[BI<8?b?b8H=:N;JJD % 8i#LS@9:JAJN879D ]AJN879D9CJ: ST@U E8HE %C97I8?[jLk;O.P%IBA8=BcCA89:H7J:$Olm n5]JBA89:C9JVo 6P%A7CF986pP%9:JAJ9:?q;J@;9AJ8I\T&U

BJ @ 8?[F9BI<<I:8H8FJHH7CAB:8nOSrrB]JAJIHJDA<ST@\T&U8H=:BN879D9:g\UA8H=:?qJ8B99:8IEGD9:MIH7E@C9F986pP@9:?qJAJ;8Ig\T%U8

"#$%&

AJN879D g\UBG:CB;JF9^!&&@ 8H=:BAJNB> g%@T\UBJ;<;6?AE>7;66787 %&'"##

B67E>7HI8C9BI<h@;<87=; %&'"##>;66?A=J BG:EBI<C8?[87=N;JO.PABBcCE %&'"##6]>;66?AO.PB9ACIBA]>;6JO.PB98E9CIB9BG:EBI<C87=EE^O6;6JE^OC8EJBI<.h.n8H=:;<;98FE66787]>;66?AE^OC8EJBAJNB>BJ6?A 8=:E^OJAJg%@T\U66787 %&'"##C8EB>66?A69BME>7E6?ACCME &A7C #E66787

..

'$() !"##96>7OPE%&JJf@J

6;<EPSP# 8?[EBE>7;<E\ 8?[E.BJ?qBJZZYHJ7B8R88I7E6>7OPA7CEL 8?[EhBJ>?AEE>79:B?J6>7OP69J?JU%9:?J8EEABM7BJY99:;<6>7OP9:9NB7J$3)s,1tu(5B];<Jv8?87=;<NB7J=R

E Vo SA7C \E66787 %&'"##8EJO.PSoO.P\A7CO.P& 8H=:ABB]C

EJBJZZY8B9E !"##;<EHSE66787 %&'"##JEBJZZYFG:;<FIB8wV 8H=:EJ76H8?W6F

*+ ++JBJZZYIH=EJ?Y8HcB]C6ME

LV oE\A7CE.L.@6EH879DB]VA=#, +-8H=:JBJZZYIHAC7B8E??C7M7J

A?7BJZZYC78?[II7E%LIc;66787 %&'"## #, +(

"#,+( 8H=:B7IjLkA7Cj%k?J?YcK;cC?I 8=:8I:NJDAEHJDC8?[EIHC7VE9:;<8<=:?YcC9N879Dg\UA7C?

+,-./01' !"#$%% 2'34)))''((*01' !"#$%%

.1

*./%&)+012"

B=:BE>7CHI8J66787 %&'"##B]ME&A7C#FG:8?[EHB=:BE>7E6>7xhn>A7\8O@V@9:8?79:CJAJEHE66787;yh@V@C]>B?Ji@FG:8?[8R8AP r

3

EJ8NE !"##;< & 8O@rVP68CEJ87=:EHPLJP%A7C8R88I7E@B8 CEJ87=:EHP@JPVA7C8R88I7EH%69O.P&A7CO.P#FG:8?[O.P@B9ABM7E8

AJ9:;J?F9 O@rVP?CAJN879D g\UA7CAJcEJ8 $gU25FG:6A89:;B]EJCAB8R9:

EH Lo %A7C @;<EJ8F68 6N879DE8F68A89: 8H=:;9CABH9:;<EJ8

45./-67

8H=:; !"##B]ECA7CB]?C;<K77I:EGDEVzhOA7CESzhPE66787 %&'"##C]>;<8?[EHBJ8<=:JCJB @69J@VA7C@S 8?[JH>7J?;JCJB @

!"#$%%&'(

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS Oscilator

782 %%69&:5.;<=>??@&""A&8 60866## B8 2 )*'+,*'-./)+(0

.2

(#-)1234+- 56(&/ 121781 9:; <=

)>?@ABCACDE;FGD@C*?@BHAIE &(0 -'*&0 <CJCK :

8(!LM?@ABCACDE;[email protected]( 9:; <=)N'*O0

10&(,PQ 0/'-0R*?@BHAIE - ( SL+- */' TUL12& VK"+(<9VK$%%+()++)/WL120P-2)/2/*+('0)+((

<9VK$%%'M&/' 8(<9VK$%%XL1+(<9VK$%%-2<=Y<:?1Y?L"L)*((<9VK$%%%L&/)12-2 +(<9VK$%%ON<Z[R)12&(

!"#$ %&'',-2:!K!+<9U><9W*<9X+ +(\]^ -

X!_Ω-2'*&\]^''+(1(0\]^/&'*&'/ !a(+)-&(&'/`_a

5)6-7/ !"#$%%

.3

' File : a0101.bas' Description : Drive LED at RBb by HIGH command@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHz

HIGH PORTB.3 ' Set LED at RB3 --> ONLOOP: GOTO LOOP ' Still Here

60 -&2bYb)12+(\]^-2(+<9U &2bYb-S+1

+)<9UO)0&'/ !a-2+-'&2c'*,7 ,-2/1O 0+2\]^-2+<9U/

,5,89:'61-7/;<3'!"+=:!L!L!+- -2:!K!) (<9VK$%%&.

:!L!LS'-2:!K!)12Q5)+&2-2''*&Qcd&2-2+(\]^-2*- +d7d2 S&21=ZeZe=<e9LW O+<9WO)0'd&2<9W-'/`!a(&-2:!KS

' File : a0102.bas' Description : Drive LED at RB4 by basic method

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHz

OUTPUT PORTB.4 ' RB4 --> OUTPUTPORTB.4 = 1 ' Set LED at RB4 --> ONLOOP: GOTO LOOP ' Still Here

, 5,89:661 -7/!"2= ,301=>9:?@&:6619 8A8 9B)'?13'9 1

' File : a0103.bas' Description : Basic 3-dots running light

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzTRISB = %11000111 ' RB3,RB4,RB5 --> OUTPUTLOOP: PORTB = %00001000 ' LED at RB3 --> ON

PAUSE 500 ' Delay Time 0.5 SecPORTB = %00010000 ' LED at RB4 --> ONPAUSE 500 ' Delay Time 0.5 SecPORTB = %00100000 ' LED at RB5 --> ONPAUSE 500 ' Delay Time 0.5 SecGOTO LOOP

,5+,'61-7/=C=,301=

.)

(1+(0P)010C860869&#BD %2# 0 #B

&(-2:!KUQ-/f-- ) +,*((N$(/R &2TRISB

!" # $% &'( )*+

!" # $% &'( ),+

&(&+,&-2)&c&+,$(/ )-2 &

:!L!LU+- -2:!KU) (<9VK$%%&.

$%- ./'01(02$#3'$#$ 4 '$56047-

( ) )*++#$ +,((<9VK$%%-&/&(// ,'*-Q)- &/-21

N?=^]R*&/-7N<];]eR)12+'cd(/)0/'/ &/)12&/'&2g'd'O.'&/'5 +((<9VK$%%

60 4 '',-2:!KS&Q12-&/+ :e:'*-'/ !a'<S

!_hΩ-2),12-&/;!'*+ :e:+ :e:-'/ _a7d2Q-*&.<!&.\]^/&&/

5'D*)4)=0 ;<8:=0 8 9B/5E5)8A)=F

.(

0 4

2"% '&(&/56(&/-2 9:; <=)/f--2 -2&01

,'&( &2IF...THEN c-&/Q*12+g

+- '*1)-2(&/'+)-2O)/)0/'/ +- +,&( -'/&:^ =[!

6 :!LSL!.'&/+((<9VK$%%-2<:_,-2:!KU

:!LSLS+- -2:!KW) (<9VK$%%

:!LSLU&/&.+(<9VK$%%-2/+d

(048 38'9!&($-03-:

C6 BC8&@&!D $9$&# #BD 8 #@/.EF;& "0#GH$60 C"0C896&%622# &@/.EF;&D 6#&IJ?

5+6)B!5F !"#$%%0180:'4)=0 6'&=9B=)=,&&,8 GH.

' File : a0104.bas' Description : Reading digital input via switch board

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzÄDCON1 = $07 ' Set PORTA & PORTE --> Digital I/OLOOP:IF PORTA.0 = 0 THEN ' Test Switch at RA0 Press ?

FREQOUT PORTA.4,300,1000 ' Show Sound on Piezo 0.3 SecENDIFGOTO LOOP ' Test Again

,52,&=9B=)=)=0 89:&&B'83,9

."

- !$).# %/'((<9VK$%%((-'0&(12,\ ^ - ( - *-

+'12,-2:!KW7d2'* *- 12-*(0)12 9:; <=)((/(,\ ^.+)(

12,\ ^+(<9VK$%%+)"+*( +)<^WK<^%(++,^WK^%)12&+, ,\ ^W(/c+)< _(+<;*< X(+]&+<ij+,\ ^)12+- +,' ,\ ^)- -

00 6#,&-./&C8&:5.K@(5.&:'E&%#,8

+- 56(&/&( 9:; <=))1212 (,\ ^'*-*k112+)((+-1: DEFINE LCD_DREG PORTD ' Set LCD Data port2: DEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit bus3: DEFINE LCD_RSREG PORTC ' Set LCD Register Select port4: DEFINE LCD_RSBIT 0 ' Set LCD Register Select bit5: DEFINE LCD_EREG PORTC ' Set LCD Enable port6: DEFINE LCD_EBIT 5 ' Set LCD Enable bit7: DEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)8: DEFINE LCD_LINES 2 ' Set number of lines on LCD9: DEFINE LCD_COMMANDUS 2000 ' Set command delay time in microsecond10:DEFINE LCD_DATAUS 50 ' Set data delay time in microsecond

52)80:,-./I''D'',&&,8 GH.IJ$%% !"#$%%

1/

%0# & /3=5F3& -./&$8 $6 # &2C8%0# "#,-./- *- +*(-

6#6&; DEFINE LCD_DREG PORTD =<e^O)&(++, WK^%

6#6&* DEFINE LCD_DBIT W ++,/2('WN^WR #$ % 4!83 $% ;*;/

6#6&+ DEFINE LCD_RSREG PORTC =<e O)&(+<;

6#6&L DEFINE LCD_RSBIT 0 *(0(/++<;O(/_N< _R

6#6&M DEFINE LCD_EREG PORTC =<e O)&(+]

6#6&< DEFINE LCD_EBIT 5 *(0(/-2X+=<e O+]N< XR

6#6&? DEFINE LCD_BITS 4 '(/&12&+,O((W(/

6#6&> DEFINE LCD_LINES 2 '(+,\ ^OS(

6#6&N DEFINE LCD_COMMANDUS 2000 &(&&2S___/-

6#6&;J DEFINE LCD_DATAUS 50 &(&+,X_/-

3$: 3-&43<'9&=' >;LCDOUT(0,\ ^'*&&2*+,

68 3$/2'+- &$FE)12')(+,'-'*O+,&2 &2- '&.'*&$FE +,&2- '&.1 $01& -2:!KX /2(MainO-

6# LCDOUT $FE,$01 O&&2)12- '&.

6#6&* LCDOUT "Innovative" + &-2,\ ^(

6#6&+ LCDOUT $FE,$C0 O&&2)12712-2(-2S

6#6&L LCDOUT "Experiment" + &-2,\ ^(&

3$!; ? 9&=' > 09'$#4 #$# ;$FE,$80 ? 4@ $( %3&498 3'; $4

6 :!LUL!,\ ^&- ((Q!"+((<9VK$%%8&&- ('l-2\ ^JHAhI@mnF

10

' File : a0105.bas' Description : Show message on LCD module

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHz

DEFINE LCD_DREG PORTD ' Set LCD Data portDEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit busDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREG PORTC ' Set LCD Enable portDEFINE LCD_EBIT 5 ' Set LCD Enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

Main: LCDOUT $FE,$01 ' Send Command To Clear ScreenLCDOUT "Innovative" ' Show Text on Line 1LCDOUT $FE,$C0 ' Set Cursor on Line 2LCDOUT "Experiment" ' Show Text on Line 2

END

:!LULS+- -2:!KX) (<9VK$%%&.+(<9VK$%%-2/+d

9&='>3-&ABBCDEFGDH #$# '0IJHKGLHBF #$'

,5K,1&,-./ !"#$%%

!"#$!"%&'()*+$,-'.&/0$)*(!"12(!3245%"65"78)*( "1)*%*' 4&(-!7*(2+25"78)4&(8"3*#&(282'.&/0&7'92"/5

5K4,5K,-./ !"#$%%

1!

0 )1)$.#2*+" )*+

&12&+,*()/&12&.)0 o&12&<;KSUS7d25(*5&'*(*,((+,&((<9VK$%%- '&(12()/.)0o<;KSUS 7- \SUS&,-2:!K" 7- \SUS'*-2-2 *('*(ee\+Oo<;KSUS&(+&+,(-2+(+,'*-2 *(o<;KSUS(O*(ee\

5I)80:9 B!L+,&&,8 GH.IJ$%% !"#$%%

%" "6 ! 6C8 2C# 8,#%%6OP&QRSTU&VTUWXYZ[

bpqEBeEBr@sHIO&12&+,0 / /'*/)(*((t/(//&- +-2,:AAEuuCB@Eu CrrGs@AHF@Csu1bpqEBeEBr@sHI7d2-O, -+g+-

1.

89/8=:89;<JDA6?ACA;?q<=:9:<32-A7?|li

89/ 87=H9:I9:<**-)(ed1*t87=l^%=l^;K

89/ "JJD>?AEE>7;B=:BE>7;J9:;J66787?I8?[r&LL"%

89/'7J8BR896?ACABBJB=:BE>7EGDHIB=:BJ66787 $J87E;cH8?[9:8IEGD7JIJ6678789A7C9B=:BE>78IEGDA7

OP&0#4,8C8 &\X]U^]^_T&(V`_X^

c+- 56(&/.78?@ABCACDE;FGD@C ,?@ABCACDE;FGD@C'- &(&12&+,0 &c- -2, v@Ew ;EB@HI CrrGs@AHF@Csj@sDCw10x#W1/-2 (+?@ABCACDE;FGD@CQ,-2:!K%&&12&+,01;EB@HIACrrGs@AHF@Cs+?@ABCACDE;FGD@C.,&c((*o&12&+,12g.-

11

5%61LMNOPQ.RSSTUOVPWORUXOUYRZ6''1',&&,8

2""8, &:5.K@(5.&:'E&%&2&((*&+,0-2- , 9:; <=)- &2-

SEROUT

SEROUT2

HSEROUT

SERIN

SERIN2

HSERIN

/' -'*f/( cd&2,((g'+-*+&-

C8 %0# &(3'EabSEROUTO&2&+,0' )0+)/

-2&0 .,'O)/g-,((-SEROUT Pin,Mode,[Item ,Item...]

Pin cd+)-2&+,

Mode cd(*,((&12&+,c(_O&12&+, (S>W__(//-c(SO&12&+, (y>"__(//-

Item1+,-2&

80# %0# &(3'Eab&%"&7#,8,68 8&$7 8c$#B6#B

12

' File : a0106.bas' Description : Send serial data to computer by SEROUT command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzA VAR BYTEA = 0 ' Start A with 0MAIN: SEROUT PORTC.6,2,[A] ' Send A

PAUSE 10 ' Delay 10 MillisecondA = A+1 ' Increment AGOTO MAIN ' Again

%0d2

-:-2Q(+,& )0 -2&'*-_KSXX12& &12&+,0/bpqEBeEBr@sHI+,'*(' ,,((+&&-

z1+)< "&+, )0(*?CDE(S7d2 cd1(y>"__(//-&12&+,-2&12&+,()/'*(

,5I,01&'L7![\E89:1'53'&9=8 :!LWL!+- -2:!K") (<9VK$%%

:!LWLS12& *(<9VK$%%()0

:!LWLUMbpqEBeEBr@sHI1;EB@HI CrrGs@AHF@Cs?@ABCACDE;FGD@C1(Oy>"__(//-,((+,O$[!

:!LWLW&&.+bpqEBeEBr@sHI1;EB@HI CrrGs@AHF@Cs?@ABCACDE;FGD@C

'$MNJHKOHKLGBEP3<' $ %2+, *- -2 (&2SEROUT*&2+ 9:; <=)&c, *- '&12,8$C8 &:5.K@(5.&:'E%&')/) (/6/-8 Q)/ 'NwwwL@sELACLFnR1'8 2" & \X]U^]^_T(V`_X^

13

C8 %0# &(3'Eab*

,((&2SEROUT2 DataPin\FlowPin,Mode,Pace, Timeout,Label,[Item...]

DATAPIN& cd+)-2&+,

MODE cd-2,((&12&+,*(-2c1(y>"__(//-,((+,O$[!Mode($Wc1(S>W__(//-,((+,O$[!Mode(Uy"

Item 1+,-2&

+-2Q '+&2SEROUT*SEROUT2Q1SEROUT2&c)/g&c,((++,-2&>,((+&*Q&-2:!K%&Qcd,((+,-2&O+o&/(N*(0&2^] -2++,-2& R*+o& N*(0&29[-2++,-2&R'-&c&2127 &0+(*+d( &&&-|_^*|_:(

:!LWLX+- -2:!K%) (<9VK$%%

:!LWL"12& *(<9VK$%%()0

:!LWL%MbpqEBeEBr@sHI1;EB@HI CrrGs@AHF@Cs?@ABCACDE;FGD@C1(OS>W__(//-,((+,O$[!

' File : a0107.bas' Description : Send serial data to computer by SEROUT2 command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzA VAR BYTEA = 0 ' Start A with 0MAIN: SEROUT2 PORTC.6,396,[DEC A," ",BIN A,$0D,$0A]

' Show A in Decimal ModePAUSE 10 ' DelayA = A+1 ' Increment AGOTO MAIN

%0d2

-Mode+&2SEROUT2(Uy"7d2 cd1(&12&+,(S>W__(//-,((+,O(($[!-2bpqEBeEBr@sHI'*o+&12&

,5%,01&'L7![\E89:13'&9=8

1)

:!LWL$&&.+bpqEBeEBr@sHI1;EB@HI CrrGs@AHF@Cs?@ABCACDE;FGD@C

'$MNJHKOHKLGBEP3<' $ %

C8 %0# &Q(3'Eab

,((&2HSEROUT [Item ,Item...]

Item 1+,-2&

HSEROUTO&2&+,0-2( 7d2-,&12&0Z:<e1Z;:<e ,5 &2'*/2(,Z;:<e5 .&2DEFINE - *- -

DEFINE HSER_RCSTA 90h Q(/(+,

DEFINE HSER_TXSTA 20h Q(/&+,

DEFINE HSER_BAUD 2400 ( /f-&(

DEFINE HSER_SPBRG 25 (.-'/&;9<Y7d2O-'/&&((+ -2-,&12&0 ,5

1(

'*)(&2HSEROUT(SEROUT2- d'01&2b;]<=Ze'*( -2-,&12&+,0 ,5 *(&+,'*.+)-21(,&12&+,0-&c-2 +)+P*-2&2SEROUT2&c( 0!W(/+d0(5 '*-,&12&+,0 ,5 1 Q&2HSEROUT'*)1-2 '

# #BC8%%6& :5.&6,"8,2,e2C% "C8%0# &HSEROUT&$ 2 8

:!LWLy+- -2:!K$) (<9VK$%%

' File : a0108.bas' Description : Send serial data to computer by HSEROUT command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE HSER_RCSTA 90h ' Set receive register to receiver enabledDEFINE HSER_TXSTA 20h ' Set transmit register to transmitter enabledDEFINE HSER_BAUD 2400 ' Set baud rateA VAR BYTEA = 0 ' Start A with 0Main: HSEROUT ["Innovative "] ' Show Text in String

HSEROUT ["Experiment ",DEC A,$0D,$0A] ' Show String and Decimal NumberA = A+1 ' increment AGOTO MAIN

,5$,01&']L7![\E89:13'&9=8 :!LWL!_12& *(<9VK$%%()0MbpqEBeEBr@sHI1;EB@HIACrrGs@AHF@Cs?@ABCACDE;FGD@C1(OS>W__(//-,((+,O$[!

:!LWL!!&&.+bpqEBeEBr@sHI

'$MNJHKOHKLGBEP3<' $ %

1"

#8,2C8%0# & (3'5F

,((&2SERIN Pin,Mode,Timeout,Label,[Qual...],Item...

Pin1+)-2(+,&((<9VK$%%+< %N=<e L%R

Mode(*,((&12&+,c(_ cd(OS>W__(//-c(S cd((y>"__(//-,((+,O(($[!

Timeout cd(+,- O///-c(+,/-27-)- ,'** -2 Label

Qual O+,-2- (- ((+,-2c+,Q(-2 Item

SERIN&9%0# 26C#8,% &$7 " A&8&26082 #8,e2C 606#B

:!LWL!S+- -2:!Ky) (<9VK$%%

' File : a0109.bas' Description : Receive serial data from computer by SERIN command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE LCD_DREGPORTD ' Set LCD Data portDEFINE LCD_DBIT4 ' Set starting Data bit (0 or 4) if 4-bit busDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREGPORTC ' Set LCD Enable portDEFINE LCD_EBIT5 ' Set LCD Enable bitDEFINE LCD_BITS4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in usA VAR BYTELOOP: SERIN PORTC.7,0,["R"],A

LCDOUT $FE,$01,AGOTO LOOP

%0d2(+,')/ &2;]<[-'*6<O/2

(+,''*(+,-26<Q(-2:&2\ ^=Ze)12+,-2(&.-2,\ ^

&(?CDE&2;]<[O_ 1(S>W__(//-,((+,O(($[!

,5^,01&'L7!H_89:'1B)&9=8 4,-./ !"#$%%

2/

:!LWL!U12& *(<9VK$%%()0MbpqEBeEBr@sHI1;EB@HIACrrGs@AHF@Cs ?@ABCACDE;FGD@C1(OS>W__(//- ,((+,O$[! Q&(&(-1;EB@HI CrrGs@AHF@Cs+?@ABCACDE;FGD@C'**&12'&c&-2&')/.,Q

:!LWL!W- ()12&+, (<9VK$%%.;EsD;EB@HI Crr@s@AHF@Cs+?@ABCACDE;FGD@C'0x CssEAF&&.+,\ ^((<9VK$%%- (- ((-2&(;EB@HI CrrGs@AHF@Cs+?@ABCACDE;FGD@C

QHKGEP>CLLRBGSEFGCBTGSKCSCUHQFRUGC3<' $ %

#8,2C8%0# & (3'5F*

&2SERIN2(0)/2/'&2SERIN &c,(((+, ((cd&c'&((+, ,((&2--

SERIN2 DataPin\FlowPin,Mode,ParityLabel, Timeout,Label,[Item...]

DataPin1+)-2(+,&((<9VK$%%+< %N=<e L%R

Mode(*,((&12&+,c(Uy"((S>W__(//-c($W'*((y>"__(//-,((+,O(($[!

ParityLabel cd-2* 12/./)''&()/-7d2'*12--'&()/-N(/!U+Mode&O`!aR

Timeout cd* *(+, c-+,+*Label-2 -2- O///-

Item cd!1&(Q(+,-2('+/ZVZSXY&c,((+O(( )12(+,-2* g(

20

' File : a0110.bas' Description : Receive serial data from computer by SERIN2 command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE LCD_DREGPORTD ' Set LCD Data portDEFINE LCD_DBIT4 ' Set data bit start at bit4 in 4-bit modeDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREGPORTC ' Set LCD Enable portDEFINE LCD_EBIT5 ' Set LCD Enable bitDEFINE LCD_BITS4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in usDAT VAR BYTE[9]LOOP: SERIN2 PORTC.7,396,3000,OUT,[str DAT\9 ]

' Recieve Data 9 bytes save to DATLCDOUT $FE,$01,STR DAT\9 ' Show data on LCD ModuleGOTO LOOP ' Again

OUT: FREQOUT PORTA.4,100,2000 ' If Timeout, generate soundGOTO LOOP

%0d2'O(+,6y+Q( :e7d2O((* '

&-2,\ ^P--2-&+,')//U/-*-2 =ZeO &&P&- +())121.,(,

:!LWL!X+- -2:!K!_) (<9VK$%%

:!LWL!"12& *(<9VK$%%()0MbpqEBeEBr@sHI1;EB@HIACrrGs@AHF@Cs ?@ABCACDE;FGD@C1(OS>W__(//- ,((+,O$[! Q&(&(-1;EB@HI CrrGs@AHF@Cs+?@ABCACDE;FGD@C'**&12'&c&-2&')/.,Q

:!LWL!%- ()12&+, (<9VK$%%.;EsD;EB@HI Crr@s@AHF@Cs+?@ABCACDE;FGD@C'0x CssEAF&&.+,\ ^((<9VK$%%- (- ((-2&(;EB@HI CrrGs@AHF@Cs+?@ABCACDE;FGD@C

QHKGEP>CLLRBGSEFGCBTGSKCSCUHQFRUGC3<' $ =V,2W

,5F,01&'L7!H_89:'1B)&9=8 4,-./ !"#$%%

2!

468 &(TUXZ[&.^WW`YX]ZVX^Y

5$401&'L7!H_89:'1B)&9=8 4,-./ !"#$%%),5F

46,&-./&&'Kf)>??

#8,2C8%0# & Q(3'5F

HSERINO&2(+,0-2( 7d2-,&12&0Z:<e1Z;:<e ,5 &2'*/2(,Z;:<e5 .&2DEFINE - *- -

EFINE HSER_RCSTA 90h Q(/(+,DEFINE HSER_TXSTA 20h Q(/&+,DEFINE HSER_BAUD 2400 ( /f-&( DEFINE HSER_SPBRG 25 (.-'/&;9<Y7d2O-'/&

&((+ -2-,&12&0 ,5

3$#! :$#&='(0= 4-8$- X% 8=$#4&9 9'' YA> # $% Z -! :$#&=' "&[I\9&='3;3&=' "& 3$#YA>,]^W__;>_

-,((&2-HSERIN ParityLabel,Timeout,Label,[Item,...]

2.

ParityLabel cd-2* 12/./)''&()/-

Timeout cd* *(+, c-+,+*Label-2 -2- O///-

Item cd!1&(Q(+,-2('+<^7d2Q1+)< %&c,((+O(( )12(+,* g(

'*)(&2HSERIN(SERIN2- d'01&2b;]<['*( -2-,&12&+,0 ,5 *&c-2 +)+P*-2&2SERIN2&c( 0!W(/+d0(5 '*-,&12&+,0 ,5 1 Q&2HSERIN'*)1-2 '

# #BC8%%6& :5.&6,"8,2,e2C% "C8%0# &HSERIN&$ 2 8 $$

:!LWL!$+- -2:!K!!) (<9VK$%%

' File : a0111.bas' Description : Receive serial data from computer by HSERIN command

@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877 and HS OscilatorDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE HSER_RCSTA 90h ' Set receive register to receiver enabledDEFINE HSER_TXSTA 20h ' Set transmit register to transmitter enabledDEFINE HSER_BAUD 2400 ' Set baud rateDAT VAR BYTE

LOOP: HSERIN [DAT] ' Recieve Data 9 Byte Save To DATDAT = DAT + 3HSEROUT [DAT] ' Send Back To SerialGOTO LOOP ' Again

%0d2'&Qcd(+,')0 &2HSERIN'-2(+d

-U&(-2)0-O&Q+,-2(+')0&c*P/k&-

,5,01&']L7!H_89:'1B)&9=8 'B&13&*=` 1'3'&9=8 89:43'61 LMNOPQ.RSSTUOVPWORUaOVNRVRYMLWTYOR

21

:!LWL!y12& *(<9VK$%%()0M;EB@HIACrrGs@AHF@Cs?@ABCACDE;FGD@C1(OS>W__(//-,((+,O$[!

:!LWLS_- ()12&+, (<9VK$%%.;EsD;EB@HI Crr@s@AHF@Cs+?@ABCACDE;FGD@C'0x CssEAF&.<EAE@~E+;EB@HI CrrGs@AHF@Cs'&+,

QHKGEP>CLLRBGSEFGCBTGSKCSCUHQFRUGC3<' $ =

&8,6

8,6##&$%6#8,6 &g+&& #B &;&%"&:&%6##%"&:;<,'"'!78"7%%!$='

!!

"# $%&%' (

!"# #$#%&'()*+,+',-$++$(( !./0122 $'345 67,+85447'9:&#;7,55(44#,;7,* !"*&;# <8=*#-%'#>,33#;'?'##+,++(8**#'3 +,+5(4#'%;33$5*3-$++$((#%@*34-'(,&#+(8* !"&#;* A

!!"#$%&'()**+,-!./ 01234555" 255 645255/64525/ /6455512778/2/84555!92/"778/2/8 48!:%;&'/<=":>;?74/"?

!)

!

"#

$%&%

$%'&%

$%()&(

%&)

#*+, - . )

/01233 4-56778"9:;<(=33(

4>(

?@@! "AB (+8 5722-

$8AB @2( C9D 7 9/EFE2:;<@

"96G"GH"AB-

$"A-&

+I *

+I -

7$J<K(-L8 A6G

4-5-55 8#G"

!*

,=@&2 /./5? !& ./ . AB & 6&B & ) = +1 ./C58 D77/2 .1.?7/D . 07 8/ -

%)( ()(

,=@=?.AB 8 /. 7D&B 5/3?.8/ &B 8 /.) ?.8/ ) 8 /.) "8" ?. "87) "88 / ."8AB 5 "8E07 "?7/=

5 M-"- A5 4$? --6 -" 98ABI*65D"NA8AB"6

,=@A?D /4F5/3 /AG&B@/AG'@?7"80.57CD8A5 5/5 7 ?723H/D .

!+

,=@I? 7/8 //7 5/30 //8.=@D07 "?83"3

,=@J?H/D D/4F /AG&B@!D .0D"878/?77D5/35"8,=@A8/ 7D07 /AG&B@5/ D A@0.

,=@'?H/D 3D /4F08/ / "823 !5/2 I50.5/30 /AG&B@DH/07 A@"?83"3 5/3?/!7/ .0H/D/ ? .07K8 "8./!7"3

!,

,=@*/!7"3 A .0H/D/ 0?7"8 &6 I* +5/ 0/C - ? ./23 "8."3 /!7"3A .L 07

,=@)?4555" 2 /AG&J@ 0 2/A@5? 8/8/ 4555" 2"?7/5/3D /F 72E 7 +MNO /"823- !8774555"3.EA1DI9@D07 A@/74555" 2/3.EJ@

,=@P?/1 /AG=J@?7.8/ /07 2/&J@5/3?/1D /4F7!7 3 ."2Q"8/5/?7580/ /07 A@

7

)-

#*+#*+

#* -

7 9

7 9

,=@&&?23H/D /RSTU)** 0?7"8/23H/"8D/!703"8,=@&B!0 /AG&B@/A@

,=@&=?8 ,,I/ 50/1 .LM/15/35D?RSTU)**"82323H/ ./ /!7"8 5/3"8,=@&B!.23H/"8RSTU)**5 .23"8!78 / 83507 1RSTU)**/ /8 /.88

,=@&= 83 "853 VU&VU=!1?7/83/?7"2Q"/707 1/ 9D1.07 0/25/7?75//1307 8 /5I@)U'W0?70/ /2.L.L5"3707 8

,=@&A?"8./ 03/7 83 / .

,=@&I?5/4555/" 8 /?7R,BR,&RSTU)**.X/C523/ 7RYZYU#$%,

,=@&B[23H/D3"8373=5374F0[7/ !03/ AG&B@/A@D07 0. !?7"8D"3 A?735\/?7DRSTU)**5/323 /.23H//D./RSTU)** .

!"

!"#$ %%&!' %!" () %'%* '%!

+,-,./012 3!4%3!45%!" #6 "%3'%!4 (! 789:; ()%!4 8 % <3'<<"!" /01=>?@AA %& > ( 789:; 6%'%&

'B%!4"B3! >CCD2

'B3%&E =F82 "B3

'#G%6 H!

%**6

"' ICJ ()3%&% =FKL ") CL

<#G%B"%'!H

#%!4 M #

=F % ! !NOP

8F % ! !NOP

:F #"!B

MF "N!

!%& ( 789:; % '%**6"' %"B! M.=

#$%&'

!(

%'3%<<"!" /01=>?@AA %& %# M.= ()!#Q'!%3 +RS.@AA ! 2 $'T +;C "B +;=<!N!!"'%!%&'T +18 ! R $'T +;8 "B +;: <!N!!"'%! R T +1=

%!T( 789:; ()!%!%& 'B 7U; %&%!T' ! < 7U; 3!#Q 7U; "B! !T'% %& 7U; 'B!#Q! "B"%%&'B!#Q ')T'B3!)&&$! <3! !"# !"# "% %'! 8 ' !#Q ;0+U1V "B0WLU+V "%! !T $ !

!"##$%&'((

!"##$%&'())*+",-"./

!)

!"#"$ % &'( )*+,

-./ ""0123" 45%0.6&'17/. 0%.83/"69 0%.8:;<2= 1 >?<; '.% 0/"'@3" &A 7B 1= 7BCD5=* /' 6&'17/.EF,+GH

'***********************************************************'* Name : P0301.BAS *'* Notes : Test Direction of Motor *'***********************************************************@ DEVICE PIC16F877,HS_OSC ; used PIC16F877DEFINE OSC 20 ; Oscillator = 20 MHzLOOP:;***** Motor Free ***************

FREQOUT PORTA.4,200,2000 ; Beep;..... Motor A .........

LOW PORTC.2 ; Disable Motor ALOW PORTD.0LOW PORTD.1

;..... Motor B .........LOW PORTC.1 ; Disable Motor BLOW PORTD.2LOW PORTD.3PAUSE 5000 ; Delay 5 Second

;***** Motor Lock ***************FREQOUT PORTA.4,200,2000 ; Beep

;..... Motor A .........HIGH PORTC.2 ; Enable Motor A

;..... Motor B .........HIGH PORTC.1 ; Enable Motor BPAUSE 5000 ; Delay 5 Second

;***** Motor Forward ************ FREQOUT PORTA.4,200,2000 ; Beep;..... Motor A .........

LOW PORTD.0HIGH PORTD.1

;..... Motor B .........HIGH PORTD.2LOW PORTD.3PAUSE 5000 ; Delay 5 Second

;***** Motor Backword ***********FREQOUT PORTA.4,200,2000 ; Beep

;..... Motor A .........HIGH PORTD.0LOW PORTD.1

;..... Motor B .........LOW PORTD.2HIGH PORTD.3PAUSE 5000 ; Delay 5 SecondGOTO LOOP

)*+)"#, ##-./-0$121*345

!$

5+ "#-"6!-/7-8 9

)I" "2*1J1&>?<; 0.% 0/"'@KL2 ")I"'"' M*'N%$"6O&'A

!"#$%&'$()') )*

+ ),( !-#)% ( !"#% )$$./%'*0/+

$,(&1 $$.,(23"'*234!-#)%1 $'"5 6 23-'*237!"#

,('%& 23"'*234!"#)%23-'*237!-#

% ()0*'%*)%)(0 489:";4 (<6 =/%,')%(/%

6 ,')/='*/ >0/(%66 ,'6 $?@ABCDBEF$.')= )('*6 6 0(?GDH8CDBEF$.')= )' >)<I')=JK3(0'% >$%0/)(6 %$('%'

I"1&$.'&.*I" 40".O")"!"('.3PO)I"(1O=* .2Q 3P6/1Q40". ./"'P10/"' "2Q 1= J% P

!"

! "#$%&'('$"$)*' +#'"',-.$"/-*0' $)"&"$1+23'"1( 4*$,.'"*' )1&'' .0'

56 .' #1'+''/-)1+'"7'.' 7'+''/-)1+'"#1'128*' )1' 91*' )1/-'4*$%*' +#'"', 0''/-"*, "'**1'+*2"/'*/-"'*:' -&'('#"';*$%%2$1'*' )1+1,- $" ;+<5

!"!#$%

& !"$ $"' ()$!"

!!

'*****************************************************************'* Name : P0401.BAS *'* Notes : Turn Robot And Spin Robot *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ; used PIC16F877DEFINE OSC 20 ; Oscillator = 20 MHzHIGH PORTC.2 ; Enable Motor AHIGH PORTC.1 ; Enable Motor B

LOOP:;***** Motor Turn Left ****************

FREQOUT PORTA.4,200,2000 ; BeepLOW PORTD.0 : LOW PORTD.1 ;.. Motor A ....HIGH PORTD.2 : LOW PORTD.3 ;.. Motor B ....PAUSE 5000 ; Delay 5 Second

;***** Motor Turn Right ****************FREQOUT PORTA.4,200,2000 ; BeepLOW PORTD.0 : HIGH PORTD.1 ;.. Motor A ....LOW PORTD.2 : LOW PORTD.3 ;.. Motor B ....PAUSE 5000 ; Delay 5 Second

;***** Motor Spin Left ****************FREQOUT PORTA.4,200,2000 ; BeepHIGH PORTD.0 : LOW PORTD.1 ;.. Motor A ....HIGH PORTD.2 : LOW PORTD.3 ;.. Motor B ....PAUSE 5000 ; Delay 5 Second

;***** Motor Spin Right ****************FREQOUT PORTA.4,200,2000 ; BeepLOW PORTD.0 : HIGH PORTD.1 ;.. Motor A ....LOW PORTD.2 : HIGH PORTD.3 ;.. Motor B ....PAUSE 5000 ; Delay 5 Second

GOTO LOOP

)*) ",9/-0$121*34560!</"!

01,#!2,, A40$47(1O17/.2A0O"V0%")3" &A &*'(1O17/.2A00" V0%")2O0 &*'(1O17

.&0)"'O"V0%")2P17.&06)"'0" V0%"))I"AI"6.2)7 4&A')*2* ")I"'"3P /' 'W.%AX4&A'

- +./3" +.4! RO".O"176O"'1O"2P.0"17R12&'17/.3P17.&06)"'0"=()"' 2&$ &RO".)0"=176O"1O".O"=17R12&'3PJ "2A01=17.&06)"'O"=*'3" .)&A' '.&0)I"'"5O &./6()%S)"'.' &O" &3M')I"(1O40"Q0( "17.&0 K' 0/" .%- )/"2P6/ % " )")*5=A /0*(/%1 %(*%)(< )=)<6)&' '(K)*U,-

U )*+U,3" &A 0%.83/"69(1O &$17/.2P 0%.8:;<2= J1 3" &A 7B Compile and Program1= 7BCD5=* /' 6&'17/.

U- 7B:;<5=*2*J1&5=* &*'(1O17/.)I"'"KL2 "2A0'17/.

)$%(,(<((*($%)<'*))()'*'% '%

!+

17/.EF,+GH ".40"5O I"1&$ "&$40"Q0.60O$O2O0Y &ZZ"[O")*"Q$%2 ")I"'"'6&$.><\@M*'3" 0'3(K)*U,>($)A@ '(1O1Q0/""Q$%2RK ./60O &$"5.EH-]HH+2PEH]HH+-M*'"5.)&A' ''644)22 ""R I"1(1OJ" O"' &ZZ"[+^>5&2 0%NK2.@5=*&$40"Q0'.6O

( "40$47. .%&A3PY'&69.'(1O &$.. Q3P)I"'".Q I"2&'M*'"3

3P40"Q0" %6&'&A "&$40"Q0'.3M'(8O0%N2P&$'&)*Y(1O &$.0%N)*%4= "Y5&2 6&$.)2O0(8O "&$40" 0O"'5&2 8/0'$0 5=*(1O6O4/"'&_2*.".O' "0%N "A 0/"<) I/?LMNF40" 0O"'5&2 8/0'$0 =*)$ &$40" 0O"'5&2 )&A'1 0/"%0.A6 %23P4%4/"%0.A6 %2JQ.'4/"40" 0O"'5&2 )&A'1

4 .8V 4 .8V

2 .4V

V o lt

Tim e

V o lt

Tim e

4 .8V

3 .6V

V o lt

Tim e

4 .8V

1 .2V

V o lt

Tim e

> @ >@

>4@ >'@

5= 0#0#>-":6,?9*@ABC "DDE7FBC*@A!67G=HIB>C*@A!67G(=IBC*@A!67G;=I

'&_2*

'&_2*'&_2*

%0.A6 %2VD`

%0.A6 %2aV` %0.A6 %2-V`

!,

'*****************************************************************'* Name : P0501.BAS *'* Notes : Speed Control *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ; used PIC16F877DEFINE OSC 20 ; Oscillator = 20 MHzOUTPUT PORTC.1 ; RC1 = OUTPUT BEFORE USE CH#2

LOOP:HPWM 1 ,(100*255)/100,20000 ; Alway ONHPWM 2 ,(100*255)/100,20000 ; Alway ON

;***** Motor Forward ****************FREQOUT PORTA.4,200,2000 ; BeepLOW PORTD.0 : HIGH PORTD.1 ; ..... Motor AHIGH PORTD.2 : LOW PORTD.3 ; ..... Motor BPAUSE 5000 ; Delay 5 Second

FREQOUT PORTA.4,200,2000 ; BeepHPWM 1 ,(90*255)/100,20000 ; 20kHz, Duty Cycle 90%HPWM 2 ,(90*255)/100,20000 ; 20kHz, Duty Cycle 90%PAUSE 5000 ; Delay 5 Second

FREQOUT PORTA.4,200,2000 ; BeepHPWM 1 ,(80*255)/100,20000 ; 20kHz , Duty Cycle 80%HPWM 2 ,(80*255)/100,20000 ; 20kHz , Duty Cycle 80%

PAUSE 5000 ; Delay 5 Second

GOTO LOOP

.&0/"'3" K)*V,>F@4/"%0.A6 %2VD`1"RM'40" 0O"''5&2 8/0'$0 40" 0O"'JVD`'40" 0O"')&A'1&'&A'&_2*)*6O3P4/")/" &$>VDbUc@]DDd-Ue I"1&$K)*V,>@2P>@J " I"14/"%0.A6 %2aV`2P-V`."2I"&$

I"1&$ " O"' &ZZ"[+^O0 !"#"$ % '+GHfGH+E:4652)I"6O(8O4I" &*'g+^M*'J4I" &*' O"' &ZZ"[+^)"'h"0 )"'"5.EH-2PEH&' ' .&0/"' "(8O'"+^( )*+V,

)*=)"#>!J!>/-0)0,?9!K 9 "DDE*@A

I"1&$ "&$17/.4/"%0.A6 %2404/"" 0/"aD` 5=*(1O ""R&$42=*.(1O42=*)*66O

" I"14/"40"Q0)*O %6"33)I"(1O17/.'$%.&0(P10/"' "2A06/5'56O

!-

V(8O )*+V,3" &A"012 6&'17/.EF,+GH5=*)2'KL2 ")I"'"' "2P ")I"'"' &'A

(.%*.O I"1(1O+:EiH$%.J".57.>./6/3I"J.O' I"1(1O+:EiH$%.-J".57.=*'3" 4I" &*'g+^3P I"1(1O&.&.%@

- I"14/"+^4/"40"R*)/" &$-Djgk2P%0.A6 %2DD`M*'1"RM'"<\'6?-l;6O&$23% WX.202"J " I"1(1O.)I"'".Q)*DD`

/' 'W.%AX2O0 &*'(1O.42=*)*6O"'1O"J02"V0%")

U /' 'W.%AX2O02*4/"%0.A6 %2' &ZZ"[+^JlD`5=*240"Q0( "42=*)*'17/.2'J02"V0%")

V /' 'W.%AX2O02*4/"%0.A6 %2JcD`5=*240"Q0'.2'6 J02"V0%")

3" ALKO(8O'" ""R&$./'40"Q0 "42=*)*'17/.6O.".O' "

V- 7B:;<5=*2*J1&5=* &*'(1O17/.)I"'"KL2 ")I"'"

%(2AGAOLPQR*6 + )S *+'$6 +1%$

"0#0..!$565'789: 0;/3! "2, <4+## #0;.!!; "$565'789:/=" #.=> +/4#. #"./ ,1/"0!.0;""!"0; M*'([P 3P.O'L=*PP02")*.%*.O)I"'"2P'_=*)* %MA12&'.17)I"'"2O0"60OO0

m )*+m,2O0)2'&(1O)I"'" !"#$%&'(%)* +,-##. ..*,%,$// !++0(%"#$%&%,$// !.,%,!123%$%),% !*, ,

I"1&$"2P ")I"'"' &'A

! "#$%& '

+.

'*****************************************************************'* Name : P0601.BAS *'* Notes : Control Movement *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ; used PIC16F877

DEFINE OSC 20 ; Oscilator = 20 MHzHIGH PORTC.2 ; Enable Motor AHIGH PORTC.1 ; Enable Motor BTRISD = %11110000 ; RD0-RD3 = OUTPUTLoop:

GOSUB FORWARD : PAUSE 2000 ; Forward 2 secondGOSUB S_LEFT90 ; Turn Left 90 deg.GOSUB FORWARD : PAUSE 2000 ; Forward 2 secondGOSUB S_RIGHT90 ; Turn Right 90 deg.GOSUB BACKWARD : PAUSE 2000 ; Backward 2 secondGOSUB S_RIGHT90 ; Turn Right 90 deg.GOTO Loop ; Do again

FORWARD: PORTD = %00000110 : RETURN ; Forward routineBACKWARD: PORTD = %00001001 : RETURN ; Backward routineS_LEFT90: PORTD = %00000101 : PAUSE 600 : RETURN

; Turn left 90 deg. routineS_RIGHT90: PORTD = %00001010 : PAUSE 600 : RETURN

; Turn right 90 deg. routine

)*L "#>/-0<0<!

Q$%2 ")I"'"'.2P.f2P I"1(1O"E;D,E;J".57. I"1&$ /' &ZZ"[6&'0'3&$. " ./6AJ " I"14/"5..'3P6/(8O4I" &*'gGng1=?:^(./2P$%.=*'3" 0%N "&' 2/"0(8O3I"04I" &*'" %6

- &*''"(1O17/.42=*)*.'6O"'1O"-0%")2A0O"lD'S"42=*)*.' -0%")2A00"lD'S"R12&'-0%")2A00"lD'S" /)*3P(1O 2&$602K%*.O)I"'"(1/ 4&A'

I"1&$ /40$47 ")I"'"'.3PJ " I"14/"(1O &$.I"1/'5.)*.O' ".' I"1&$ " &*'2A0&A( 3PJ "2A0(1O2O)&A' 'O"'176()%S)"'.' &O" I"1PP02" "1/0'60O( / ""R&$2*4/"5=*(1O17/.2A0J7_" " MA6O

=*'3" 17/.(8O52&''"3" $..*&'&A8/0')*$..*.Q2P$..*/40"Q0( "17'.3P6/)/" & /'L2(1OPP)"')*42=*)*66/)/" &

!"

!"#$% & '!( )&"*+( ("'',!* -' *+ "% "''./ !*(*#''. **(*#"'( **(*#"!

!(***!%*0 '1*(*(1(*** !!(**#'/'234'# *(*#"%*!+'((**!.#.)*' .#.)*"(*#* (*"##5" 6!''"(**!'7(*&'$%'89:'(*!(6!*(*(#'!$%!!/

!$%'89:''234'#"(!"#';<'!!!'.!'8:=Ω'(* ('234'1(**#

#$%&&

!'

/.#.)*%>!((!':=?Ω'+"(*#.#.)*'"(*''@AB'('=<' *!!(%*00C%>'DEFE9GHIJ'7"' C.#.)*"(*#'.#.)* (*" 6!"')&%C 7&$!(*#"

* !(%6*(*# 6!!+(!' !(6!! 6!!''. ** !!($ !'=KL9=KM')')& ((6!"$ !'=K:9NKM<' '( $ 6!(%*00C%>$/!'O=9:P===

(6! !!(& /%>!!*'**! **')&&$""%%!6QC'/ DEFE9GHIJ'/(6!!(**#' O'/ !*QCR

!"##$ $ %!!&##

!(

' ()*+*,-./012%3 344 (-./5&67881!'%!3 9 1-./5&,6788%3%:4;4<<= 4 !;> 4?0@/A$5#72 3 $ (12;>$ '<<= 4 ! )0#,)0BC)0DC)E#,)E"FG!4 ! <<= 4 !!$ (1%HF (( !"#$#%% &'()*+,-./0#1&# 2$345# $'

(< !% 123%:40@/ (

!"!

#$'6780 !92 ():;)(<6%5'!= $ %2$ &> %?@,)7@I4$ (0@/JK512!!$ $ ( !1$1;>$<<= 4 !$1;> ' (' 4;!3 4 410D,5

8$ (0@/JK5 0@6L124 !:;44M($ !;4<<=H!1;>N#O44M(5#2F $ !4'%$ %:45&?I4;>#%AH;>N5O44M(!;45#2$$ !4'%$ %:45&?I;>#%A

b b b b b b b b b b 0 0 0 0 0 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

! "#$ %&&'()*+,

b b b b b b b b b b0 0 0 0 0 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

! "$ %&&'()*-

!" #$%&'()*&'(+,-

!)

! "#$%&

'()*++,-.%/0122(-.%3#4.%-56+*7,-./P0Q./-)J %4 (% !3%:40@/ 0@/.K%:;

ADCIN Channel,Var

&? /RSTTUV% HG2 $ ' 4 ! ! !#HG8

WSX% HG;12!Y$ %:4 !3%:40@/3 ;!!;;>5&

!! %H;! !3%:40@/4!4 $G !12DEFINE1-./P0Q./-)J %4 (

DEFINE ADC_BITS ./0/- 12&34 . 5;!!;>7C5#45"$G :!%3 344 (4 (%3 344 (-./5&6788%H!! ;>7 5#H%!%4 1! !Y%!%H!7%4 1! !"D&H!5#%4 %;>5C#"IH!5"%4 1! !IC#Z&

! "#$ ! !%

' !" #.+)/0.+)/12&'(+,-$33 !$& 4 556

!$

'*****************************************************************'* Name : P0701.BAS *'* Notes : Test Direction of Motor *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ' used PIC16F877

SENSOR0 VAR WORDDEFINE OSC 20 ' Oscilator = 20 MHzDEFINE ADC_BITS 10 ' Set number of bits in resultDEFINE ADC_CLOCK 3 ' Set clock source (Internal RC = 3)DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds

DEFINE LCD_DREG PORTD ' Set LCD Data portDEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit busDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREG PORTC ' Set LCD Enable portDEFINE LCD_EBIT 5 ' Set LCD Enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

ADCON1 = %10000000 ' All PORTA & PORTE is Analog

MAIN:ADCIN 0, SENSOR0 ' Read channel 2LCDOUT $FE,$01,"SENSOR0 = ", DEC SENSOR0PAUSE 500

GOTO MAIN

7 8.97 8# 78 '(+:1.;+<)=99 78 >+(

DEFINE ADC_CLOCK !:;$ <<=[\!12!3%:40@/4 !#,B3 % 4

N#O]12<<=[\!9 1"?6JQ/^"AN5O]12<<=[\!9 17?6JQ/^7AN"O]12<<=[\!9 1B"?6JQ/^B"ANBO]12<<=[\!!)/9 1?6)/A

DEFINE ADC_SAMPLEUS 50 !4% ;>%3 3 !PAUSEUS $;13;!%41!!Channel 4%!;4<<=

+8

!!!% B ! 4$ ' ()*+*,-./0;> 44 !%$$ ()0#4)051$ ;;>!$ 3;!% !%3%:4_/@$ ' ()*+*,-./0

!*

07`53%:4_/@5& !a"4 ()Pb,788

07`";\3;!%LcdX*d*eUQfgec*$ 3;!%-7,5!(34; ' ()*+*,-./0

07`B!;'h%LJ@E 3;!%?_E@$ )iKA!!43%:4_/@

A90%2B///%8C*8DEF

07`I' ()*+*,-./0%$ 3 1! !$ ()0# :$ !3%:4_/@G!

07`D' ()*+*,-./0%1$ ! !$ ()0# :!3%:4_/@G!

07`& ;43;!%-7,53 ;4 2 ! !2 # ?$)0#A%;>2 5 ?$)05A3 ;4 3;!%!

ADCIN 0 , SENSOR0

;>ADCIN 1 , SENSOR0

4!(343;!%4%$ 1$ 07`I,07`D !!4! 1!4 !! :!$)0# %

&5G!>2 5 H &?02 H %&? 2 I88CJ88 2 5 H &?%&? 28C*K8LM?>%29$$ H %#5 ?!= %05 H &?029 H M % H!!&%&?

%225 H != 02

92 !=

H M?!9!& $!9&? '9 # 78 >+("?4&@ABA.;+'

H! $!% !; 1; $ ! 1$1!4%!$G

! !H%!! !4$ 2 !' ($G:j4! !! 1!4 #

!!

!!!%! ;>! '=%! $ $4 12;> !; 1!!%4%; '!( '%1' ()*+*,-./0%H4 %%H!4!a=!I

6 %7 ,2'873-%' (!4 % :G!1' (4 ;$

96 %7 ,2'873/%' ( := ! 1' (4 ;$4 F $Z# k!Y

:6 %+, ,2'873/%' (!4 ! !;$ !1' (4 ;F 1' ( % :=% %

;6 %- ,2'873/%' (!4 ! !;F !1' (4 ;$ 1' ( % :=% %

!"#$%&' &(!)

!+

5.&12; 13;!% 3 12'1%!<534 =.%. ,.5.& 2#

2N&? %!= 5 H <534 =.%. 1..5.&2

#2N&? %!= 5 H 023 5.&!B%$?G&? 5 H &?02O%G05 H &?FPD

,H' !$!B## :'$ !5##

%& BE88O*88FPDQ

!:; $!! "2'%H%$ 3;!% '%1' (4 %3;!% -Z,5%4!

5`!% 3%:4;4<<= 4 !;> 4

"` Y 41% (04% (P %H:!1

B` $ %:4!! FG :!$ ()0#4)053 !;QEKQJ)#4QEKQJ)5!Y

I` ; !!4%0 ;@7;6<8 9 ;@7;6<*2%&H% G $'% ? &?!0

D`%;@7;6<89;@7;6<* 2%&H%G $'% ? &?!0 ?;>9 !4!14 ;A

&`%;@7;6<8 2%5$22G $'% ? &?!&L

8`%;@7;6<* 2%5$22G $'% ? &?!&02

'= C$8$32"8D4 E FC

!,

'*****************************************************************'* Name : P0801.BAS *'* Notes : Track Line *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ; used PIC16F877SENSOR0 VAR WORDSENSOR1 VAR WORD

DEFINE OSC 20 ; Oscilator = 20 MHzDEFINE ADC_BITS 10 ; Set number of bits in resultDEFINE ADC_CLOCK 3 ; Set clock source (Internal RC = 3)DEFINE ADC_SAMPLEUS 50 ; Set sampling time in microseconds

HIGH PORTC.2 ; Enable Motor AHIGH PORTC.1 ; Enable Motor BTRISD = %11110000 ; RD0-RD3 = OUTPUTADCON1 = %10000000 ; All PORTA & PORTE is Analog

MAIN:ADCIN 0,SENSOR0 ; Read channel 0ADCIN 1,SENSOR1 ; Read Channel 1

IF (SENSOR0 > 200) AND (SENSOR1 > 200) THEN ForwardIF (SENSOR0 < 200) AND (SENSOR1 < 200) THEN ForwardIF (SENSOR0 < 200) THEN S_LeftIF (SENSOR1 < 200) THEN S_RightGOTO MAIN

FORWARD: PORTD = %00000110 : GOTO MAIN ; Forward RoutineBACKWARD: PORTD = %00001001 : GOTO MAIN ; Backward RoutineS_LEFT: PORTD = %00000101 : GOTO MAIN ; Turn Left RoutineS_RIGHT: PORTD = %00001010 : GOTO MAIN ; Turn Right Routine

7 8.=7 8 ##?82""?4&@ABA.;+'#38

98:&?G $'$ $#% ? &?$

L3$'92'LM?4% !9&?%2%G& 0%% &'%2&?%2%GG $'% ? &?&$&% 9$2?92 $2&9$5#?9>2$2 0!*CDG

2 & R'92' !$9 09>2$2 2$2& ?9>2$22 # !G $'$25 # !!= >&G $'H2L02% H LM?!= >&G $'% ? &?$

>.?

'=G CH I C2 E!2""?4&4E48HI C" !2""?4&8:4 #38 4FC

>-?

+-

!"

! "#$%&'()*+* ,+-.+/++ 0122 3 '4 )*+*56789: ;9<5"< ,+-(/ . ' 012=>?@A2BC"DE,+-*2,+-)F2+3+G.+ ! "#$%& 2+

!"#$%&')3.G4 ( *2.0H) 012.

(+2.*1*I0I4F -*+2-2).(( ( 32. 3

012'. )F- J(+K E"LD + +)*+*, F *MN'( .0H)/+.+G)FO,,+-)F OFP 012'Q+.RRK)F I4F Q'( .+G)FO)F2'3'4 RRK,+- +**2.RRKO(,RRK)3 +G ,+-2G4 LD +

!" #$%

#$%&%

!'

'()*+,-./(,0-)*+*5678 S9: ;9< )*+*012)F 2

( *2 RRK3'(,+-+)F/+FO =>?@A*2(.3 +22.+'+**.)*+*O) .2).

'12"! #%&# +**.+ ( RRK,+-

T5U012,2=+00+((>"LD+O3)F*

+).0.+0(< VK(20222

0 F*2,-*+2(2O )+F ,+-.

1)3 WX<"=XDY')F&&'.W23 H+2(('2

,+-+2.+Z["W=W2L\WDD0.0)->]LJ0,+->0++).'O0)3(02L0N

''3%4%%5. ', 5678S9: ;9<2 -)F_"WJN'(.+)K++)O) .0)F,

,a#D\a#L\a#W(a#<, $%LI4F +**#$%LWb_Wc3+' .O-QF '2+)O-2/ I1. .,T5U012OF+) - +G 2'4 /. ',*2I0 dL

!"##$%&'()*+,-*.

!(

'67!!3%"8595()*+ -

OFQ+G,+-2.0')*+*2*2 ,+-, 5678S9: ;9<'4 ,+-+++Z["W=W2.2L\WDD0.0)->]L,+-)F 3.V,43-2.0.22 2 , .0-)F_"WJ,N

3"#:;< ,+-.V&.O0+OR.O0+O

3"#:;= ,+-.Ve.O0+OR.O0+O

3"#:;> ,+-.V%.O0+OR.O0+O

3"#:;? ,+-.VU.O0+OR.O0+O

)F .O0+OR.O0+OOF..2.032 F 2' .(I4F '(/OH.+)F F 3 '( ,+-.V.O0+ORG2.20+3 +,+-)F '(.V.O0+O !" '( ,+-.V23+2.

1732;@&/A/

!"#$

#$%"#$

!"#$&'!()*+#$ #$

5 B3%7@3!&'() *+ !,)- ( ./0+1 *11* ! ( 23415 46 *7/ 1*8469 :7.*8*2

!

!)

&'(; 7/ 846.<2*+192/. ! (

&'(! 1.*+.< 15 *5 .7/ 846.<*0+1 *27 &'(;*72*+*1234/

&'(= / .*0+1 !"#$% 28/ >&; 7*2.04*?@* ABCD&EBCA>F 31 5 //*0+1 !"#$% 9 2.04*/ :/ AF>G&(;

!"#$%$ &#'$'#$()$*+$,-&$". /0/)

* & 74H2 8 8 1 9 *:/* &ICFJ) /* -,-K */

!*

'*****************************************************************'* Name : P1001.BAS *'* Notes : Use SERIN2 Receive Data From Remote Control *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ' used PIC16F877KEY VAR BYTEDEFINE OSC 20 ' Oscilator = 20 MHzDEFINE LCD_DREG PORTD ' Set LCD Data portDEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4)DEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREG PORTC ' Set LCD Enable portDEFINE LCD_EBIT 5 ' Set LCD Enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

ADCON1 = $07 ' ALL PORTA & PORTE = Digital I/OMAIN:

SERIN2 PORTA.2,813,2000,MAIN,[KEY] ' Receive Data From IR Module

LCDOUT $FE,$01," KEY = ", KEY ' Show Data On LCD Module

IF (KEY = "A") OR (KEY = "a") THEN ' Check Key = "A" or "a" ?FREQOUT PORTA.4,100,2000 ' 2kHz BeepENDIF

IF (KEY = "B") OR (KEY = "b") THEN ' Check Key = "B" or "b" ?FREQOUT PORTA.4,100,2200 ' 2.2kHz BeepENDIF

IF (KEY = "C") OR (KEY = "c") THEN ' Check Key = "C" or "c" ?FREQOUT PORTA.4,100,2400 ' 2.4kHz BeepENDIF

IF (KEY = "D") OR (KEY = "d") THEN ' Check Key = "D" or "d" ?FREQOUT PORTA.4,100,2600 ' 2.6kHz BeepENDIF

GOTO MAIN

/01/$/#$%2." "33 456

*/ 9:0 0134490.*8 84*/L 9 +5 32*/ /2 +10 01/ *7+4 ./3 M04** // ./3 19 //19 /2 /31/7 ./3 0.04* A)-N) 4H ./* //*0 011:13410+1 OCI **7*P9:/ /374./4H/.*:5 3/ 0.*/2 ./L *1:04Q.0R.: FREQOUT 2 04*?@*ABCD&EBC A>F 31

"#$%$% &'() *+,-.+/

!$

&)-() 4S04* TUVWXVXYZ E[\YUX 2.04* A);N)

&)-(; 0104*734.8/. >X]XNABC& *7* TFI^ 5 .+/0 _O^I 2.:/ >`J /a

&)-(! 0 01 ^bcd >ZeX[Z= */34.0+1 !"#$%**:2 0+1 OCI

1#$-/&,+($&2/*+ 34 -/&$5 67664 '$ 86696: !)$1&( & ;"/< =1##-&0>?-+ '$"@$$1&+A2!& >B 2C

**74H*0 01 >N= 4H/2 +1:*215 */ >X]XNABC& 0.2 +1/79*: >X]XNABC& 15 34 15 .1 17.R. 1917.21*@9*:1.*.8

&))() 4S04* TUVWXVXYZ E[\YUX 2.04* A))N)

&))(; 0104*734.8/. >X]XNABC& *7* TFI^ 5 .+/0 _O^I 2.:/ >`J /a

/"#&$ *1# /"@1#2$21+ DE #&&2$21+-$". /)$&&-&$". /?)&F "G'#$()$*+00/)

""01$23%452%%1%

7 /$$8!83#9#" /#$%2. :!"#/ ;<=>?# #@3 "!"!83#92,A,0B57

,!-./012345637

8)(9!:25;5<=>?@

!+

'*****************************************************************'* Name : P1101.BAS *'* Notes : Control ROBO-PICA With Remote Control *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ' used PIC16F877KEY VAR BYTEDEFINE OSC 20 ' Oscilator = 20 MHzADCON1 = $07 ' ALL PORTA & PORTE = Digital I/OHIGH PORTC.2 ' Enable Motor AHIGH PORTC.1 ' Enable Motor BTRISD = %11110000 ' RD0-RD3 = OUTPUTMAIN: SERIN2 PORTA.2,813,100,FREE,[KEY] ' Wait Recieve Motor

' If No Data Stop MotorIF (KEY = "A") OR (KEY = "a") THEN Backward ' Pess A or a actionIF (KEY = "B") OR (KEY = "b") THEN S_Right ' Press B or b actionIF (KEY = "C") OR (KEY = "c") THEN S_Left ' Press C or c actionIF (KEY = "D") OR (KEY = "d") THEN Forward ' Press D or d actionGOTO MAIN

FREE: PORTD = %00000000 : GOTO Main ' Stop motor routineFORWARD: PORTD = %00000110 : goto Main ' Forward routineBACKWARD: PORTD = %00001001 : Goto Main ' Backward routineS_LEFT: PORTD = %00000101 : GOTO Main ' Turn left routineS_RIGHT: PORTD = %00001010 : GOTO Main ' Turn right routine

AB 9-A* C!.**: & 19 ^ 4H 8 8 1.: ADCON1 = $07

*7 P 12 & 19 D 5 8/. 15 .P+8 1:/ //*0+1 /2 >&; .: E^>BJ; 1:/3*P34 f^g3/**.L * )-- 11 *9034:11 h>^^ R<4H*.8*15 2 1* //*0 011 :344../*/2 0 015 3/

* I 5 Y 8/.15 342* C 5 V 8/.17.R.* D 5 ] 8/.17.2* & 5 b 8/.15 .1

/ 0 /$$8!83#9 2,A,0B57 :!"$C "3"8//#$%2.

!!

!"

!" # $%&% #' $(")*( +,--% (")%&%%' .'/0/ ('1 # 223 !.* +,--% &"44*# ! "#$%&"'($ )

*+,-. //012 " 0+,0 1 %# &#&()1 # +%&

567859:;<=>?@A/ %() ! '*+BC7D'.E- 'F-8.E-'' 567!# -#$+& A-8G7.*'&&223") '/0&--+ #$H97--9=%9()+ ' 223223%!# $+&IJ:7A/ +,IJ:

!"

#$%&&%'(

")

()1 "4 K7223%$1 # -8.E-' K7%!# $+& 567.*"4 #$ IJ:=.0223%!# $+& L-8M= .*# -#$+& $ 8&&--97 #7FN)8()+B &)&$ 834' '

$' --!E0%'/0&#+ #' H97/ (")"4 !*+%&%"--!E$&O P88

3/45.6789:8

2 ;/36/ !""#$% &""'( )#*+,$""% -&,',. #$% &""'( )&#$% & *+/0*#/0"*#$% &""'( .#$% % "#

1,23456788+)*.#$% &""'( *9'91,:% % *.*9',)#91 ) &

!!" !!"

#$ !!" %& '!!()

%& '

"*

&;56!7$ <*9'23456788& .%

!"#$%$&'()*+,-+./01!2"*+,3

! 4 - 0-0

$" .%-:,:%, ,:.09,:.0",=>?'$*"/0&9<);56!7$ <*@-: 9: :. * /0A 9,$ BC : +,')# -*@ =D?.$&*"/0"."% ) E.:.0".1"9"*$ 9',-$1,*, )' : '1&9 *+/0,1"9=D?$ <*,

*'F'"GHIJKIKLMNOPLHK*. '":.0Q6

2,'" .%9'& 23KRK6QS> % $#2GT?D*+/0)&) "

" & 2 % :,' : '1&9 -:0=D?.$&&+,+" % :.0",=>?-1",*#&

#$% & '()*+, !"-.+

01!2" -5632"*+,230* 72 2"-+0+2"82" *+,*9 : 2 -+0+*5;806: +6< *2"8-+:

6= 2 2"*60! ;: -> <>565,*1;! ::9!*>?* <;*>?* - :<9- -0>@;! !-0-

"+

'*****************************************************************'* Name : P1301.BAS *'* Notes : Detect Wall Show Status ON LCD *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ' Use PIC16F877

DEFINE OSC 20 ' Oscilator = 20 MHz

DEFINE LCD_DREG PORTD ' Set LCD data portDEFINE LCD_DBIT 4 ' Set starting Data bitDEFINE LCD_RSREG PORTC ' Set LCD register Select portDEFINE LCD_RSBIT 0 ' Set LCD register Select bitDEFINE LCD_EREG PORTC ' Set LCD enable portDEFINE LCD_EBIT 5 ' Set LCD enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

ADCON1 = $07 ' ALL PORTA & PORTE = Digital I/OMAIN:HIGH PORTE.1 ' Infrared LED ON

HIGH PORTE.0IF (PORTA.3 = 0) THEN ' Check IR MOdule detection

LCDOUT $FE,$01,"DETECT WALL_L"' If detect, show on LCD

ENDIFIF (PORTA.5 = 0) THEN

LCDOUT $FE,$01,"DETECT WALL_R"ENDIFPAUSE 100 ' DelayLCDOUT $FE,$01GOTO MAIN ' Check again

&% /$ &%01*2%3 %3 !" .24* ".5676/8(#

*+,-(!

1&*$0" )",=>?& )#:DEFINE LCD_U0".:%"!: )+2:%"*'V $$,$ +*2+ ).$*2?>TWXY!8)=D?$ <**$0" &1".07Z[\ )A :%".,$BC]3 U0*'V ",-: ,&".-: ,/

9"&+.*/!0-A,-+0* :-+:>./;! 0 9-.B)CDDED.*+,4-3:D)B9"&)#&)*/0 9: "/!01*,!0!23*$=#-+:>./;! 0 9-.B)CDDE/*+,4-3:D)B

^,4!'#'!23*$):*1,.2,",=>? % ,9'*$0" :"])"&.1%

",

'*****************************************************************'* Name : P1401.BAS *'* Notes : Detect Wall *'*****************************************************************@ DEVICE PIC16F877,HS_OSC ' used PIC16F877DEFINE OSC 20 ' Oscilator = 20 MHz

ADCON1 = $07 ' ALL PORTA & PORTE = Digital I/OHIGH PORTC.2 ' Enable Motor AHIGH PORTC.1 ' Enable Motor BTRISD = $F0 ' Set low nibble PORTD for driving motorMAIN:

HIGH PORTE.1 ' Infrared LED onHIGH PORTE.0IF (PORTA.3 = 1) AND (PORTA.5 = 1) THEN FORWARD ' Not detect, go

straightIF (PORTA.3 = 0) THEN LEFT ' Detect from leftIF PORTA.5 = 0 THEN RIGHT ' Detect from rightGOTO MAIN

FORWARD: PORTD = %00000110 :GOTO MAINLEFT: PORTD = %00001001 : PAUSE 1000 : PORTD = %00000101 : PAUSE 800

GOTO MAINRIGHT: PORTD = %00001001 : PAUSE 1000 : PORTD = %00001010 : PAUSE 800

GOTO MAIN

& 2:.0$%$ <*9 *'.*"/ && 2".BC:.0"*@ $0. % *. '"*+/0) B& "C/9"11 :,*,2$ )&-)& 2:&9&9'*"/0+$0./&

&%/9&%::";".5676/8(#*:+2% <

5+6*+,-(!#1! ! )+2,-D: :.0*'V +2$ +*2+ *@ **$,: "*2 )3?!63?*'V *2+11""*2&,$ BC )_1& `E$ <*:%]$ <*:%9"&".-: )& 2

*1,/0 :.09' *.'"&aT3b3? *+/011")& 2*1,/0 :.09' ^".-: :U*.'"&=DaA*+/011")& 2,,

*,.%*+/0,,.$0.c".-: : *.'"&3Sd[A *+/011")& 2,

,*,.%U*+/0,,.$0.8 )'",9'*$0" :] )"&, : & .%9',

!"#$%&%%'

"-

]*'F'"GHIJKIKLMNOPLHK*. '":.0Q]6

] 2,'" .%9'& 23KRK6QS> % $#2GT?D*+/0)&) "

-A,>,- *1!"#9:A,*+, < ! A, -A,=0>,+!"#2!:: <:+,0 * <;*>?* -*+,=0>,+

*09:A,*+,!"#0F=: -G=;96!"#0=2";**+,;: -A70!"9A;1!*+,!"# 6-+0* 0>@ :*1 +=A6*+,*+,-+0+:-+=>6>;: 9+

!"

!""#$%&'(&$%&'(&) *+,-./01"234!56# 4/ 71"89#:;<;=%>?@4"A 59BBC

1 18/$%&'(&)74D7E)"F "AC$%&'(&4()7G)"F "

!" #$%"

9C / 8 !"4()7G)FH1$%&'(&D7E)FH1$%&'(&)4!"/DHI7IJ4!!KEEL@"#59"23)HD7&HDJ4!"/MIJ

$%&'(&N$%&'(&)"23 !"A8EAA4!"/OJPPQRA#O$S'QA"#59OJ;TUQ $%&'(& 58"5F8"2CE&H7 I&HV / 58"42

#$%&'&( )*+ +*+*+ ,+

!" #$%&!'()(*+,-

!-

!"#"$ !"#"%

"#59A$%&'(&)E)"F "4!"/MIJ8)H&I7)HIIJ)HDJ8A"22"#59D"F "&H&IJ±)HEJ

"#59AG) "F "4!"/MIJ8)H&I=)HIIJ)HDJ8A"22"#59()"F "&J±)H&IJ

&''"!("" !" #$%"714221"A 49

F "231"BBC"4279""/" "WA"/"W45 8" 4 1 !" !"4279"/144 " "W/"W" 42 " "2 1 4 81/

!"#$% &%'()*+#$,%-.#/% &%01 #2

!.

" &' !"#"$ !"#"%

!" 74279 0"#"5!"A42 9 9"4279 " " A42 XY " 42Z"#Z11 9 7042!F "# 1""23"# 1/711C O[Q Z42794 8"/

L F

A X=

.$./0 12 30 4 .5

F AL

X

×=

4 !F "# 742 20BBC "2"23F0"22 4

!$

)'"(""*+'&,- .056#4 $%&'(&$%&'(&)"23 1402A

2 !"2" "5 0"8 "84/

+= 6 &.5

−= 6 &.5

'& 78$ 4 $&9!!

: & 78$#;2 $2$.<< 2!

!

-=>%;%/!? 8#; 43@5; &; #$5'AB*CDD%;EF>#.8 ;

-=>43@!6 &$!$.; $5G" &;%/!? 3.8#; ;#.&;;EF>

-=>E6 ;;EF> #.;!E>#./3/.$!;$#.&;6 8#; .5#$%/!? 43@!!./$;#./!43@-=> -=>

-=>H! .<< 2 #; 43@2!'I98@$2 ;.5 6 &&;J!.<< %$DK-LDM#$+,NOCDD.$./ #328$!;$ 0 .<< 2 J!3/

!!

!" !##$ %&'()*+,-./! 0!12 34 !5##6789:1.! 5 !.# ;/../< .:=.65>055.14 !.#" !##$ %&'()*+,- ;.5 5 .;!?5:.! 7# / 5!2 1.055 ##5 / /###7@ 2

-N>PQRST(S(UVWXYUR(#343@N*

-N> &3/.$&!'()(*+,-2 ./!%QZIJ[@&;&.

"#$%&'($)*++#',## - . /

'****************************************************************'* Name : P1601.BAS *'* Notes : Read data from GP2D120 module *'****************************************************************

@ DEVICE PIC16F877a , HS_OSC ' Use PIC16F877 and HS OscilatorDAT VAR Word ' Save Raw DataSENSOR7 VAR WORD ' Save DataI var byte ' CounterR var word ' Save Converted DataDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE ADC_BITS 10 ' Set number of bits in resultDEFINE ADC_CLOCK 3 ' Set clock source (Internal RC = 3)DEFINE ADC_SAMPLEUS50 ' Set sampling time in microseconds

DEFINE LCD_DREG PORTD ' Set LCD Data portDEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit busDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREG PORTC ' Set LCD Enable portDEFINE LCD_EBIT 5 ' Set LCD Enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCD

'!(')' !"#"% *' +,#-./.!0,1234

/00

'!(')' !"#"% *' +,#-./.!0,12&4

DEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

ADCON1 = %10000000 ' All PORTA & PORTE is AnalogMain:

Dat = 0 ' Clear data for AverateFor i = 1 to 5 ' Loop 5 time for averate data ADCIN 7,SENSOR7 ' Read channel 7 dat = (Sensor7 + DAT) ' sum datanextDAT = DAT/5 ' averate dataLCDOUT $FE,$01,"Raw = ",DEC3 Dat ' show RAW data on LCDR = (2914 / (DAT+5)) -1 ' Convert data ==> centimeterLCDOUT $FE,$C0,"Far = ",DEC2 R," CM"' Show On LCDpause 200goto Main ' Again

-3*&! " 45657-..8!3993 ::;9%#<<=:7%#<<=>?@A B>CD $#/ E8!3993 ::; 329#F7F-G 9#F &:-!.9H:" 2 01 .8I:# " !"9!&!2-!2J F-8*&%I: " 3!K:LMN

7#F-9 " 8!&*:.2K.2$J!$ &:-9.2$J!$"F8*&% " 3!K:LMN/ # " 7#F9$1

23/ 6 0 ; G 46 $ 2 243@ N J.\ J[@050&;&!'()(*+,- 7!25.!743@3# $; &; 43@6 &;# 43@6 .$0[43@ [@!2J5&;46 &5&3

&. 0[ 0 2 ;6 35435.50 43@!./$;7; 30 0 43@!./$;$ 3.!7; &; @$0 43@!./$;30 .!7@$; 2 .@$&;&!0[@43@7&.$>= 43;&!.4 $9; 3 43 !7; !25J5.!7; &; ]&;&!0[@43@!$; &; J;4./$$0 43@ ;43@2$G#$1,;

0121- %3# 43&#3 5&5#

/0/

'****************************************************************'* Name : P1701.BAS *'* Notes : Robo-PICA in Object detection mission *'****************************************************************

@ DEVICE PIC16F877a , HS_OSC ' Use PIC16F877 and HS OscilatorSENSOR7 VAR WORD ' Save DataDEFINE OSC 20 ' Use Oscillator 20 MHzDEFINE ADC_BITS 10 ' Set number of bits in resultDEFINE ADC_CLOCK 3 ' Set clock source (Internal RC = 3)DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microsecondsDEFINE LCD_DREG PORTD ' Set LCD Data portDEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit busDEFINE LCD_RSREG PORTC ' Set LCD Register Select portDEFINE LCD_RSBIT 0 ' Set LCD Register Select bitDEFINE LCD_EREG PORTC ' Set LCD Enable portDEFINE LCD_EBIT 5 ' Set LCD Enable bitDEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits)DEFINE LCD_LINES 2 ' Set number of lines on LCDDEFINE LCD_COMMANDUS 2000 ' Set command delay time in usDEFINE LCD_DATAUS 50 ' Set data delay time in us

HIGH PORTC.2 ' Enable Motor AHIGH PORTC.1 ' Enable Motor BTRISD = %11110000 ' RD0-RD3 = OUTPUTADCON1 = %10000000 ' All PORTA & PORTE is Analog

Main: ADCIN 7,SENSOR7 ' Read channel 7LCDOUT $FE,$80,"Raw = ",DEC3 Sensor7 ' show RAW data on LCDIF (sensor7 > 350) thenPORTD = %00001001 ' Robot BackwardPause 500PORTD = %00000101 ' Robot Spin Leftpause 1000endifPORTD = %00000110 ' Robot Forwardgoto Main

'!5')' !"#"%67)&)8)7893:-./.!0,1736&3;8 <<

-D>PQRST(S(UVWXYUR(#343@D*-D> &3/.$&!'()(*+,- &

-D>E6 &!'()(*+,- $5J[/43@4543@3 2. $@$3# $2 ./!%QZIJ[@&;&. .$! 46 $ #$&!

/01