PDA

View Full Version : Sos !!! Các pác nào biết về ngôn ngữ pic-basicpro giúp em với...!!!!


loveofteens8x
21-12-2010, 11:00 PM
em đang làm 1 bài đồ án về Công nghệ m-touch,theo phương pháp biến đổi tần số. Em đang nghiên cứu ngôn ngữ Pic-basicpro. vì ngôn ngữ này mới lạ nên em chưa hiểu lắm,với lại phần lớn là em nghiên cứu của người ta.. 2 bữa nữa là thầy kêu lên hỏi rồi, nhưng giờ thì em lại chưa biết rõ, mong pác nào biết về ngôn ngữ này thỉ làm ơn chỉ dạy em út 1 xíu. Nếu mấy pác giải thích từng lệnh thì hay biết mấy, em xin thanks các pác nhiều lắm!!!!

'************************************************* ***************
'* Name : UNTITLED.BAS *
'* Author : [DO ANH VIET] *
'* Notice : Copyright (c) 2010 [electronics_viet@yahoo.com] *
'* : All Rights Reserved *
'* Date : 12/17/2010 *
'* Version : 1.0 *
'* Notes : *
'* : *
'************************************************* ***************
'************************************************* ***************
'* Name : M-TOUCH.BAS *
'* Author : [DO ANH VIET] *
'* Notice : Copyright (c) 2010 [electronics_viet@yahoo.com] *
'* : All Rights Reserved *
'* Date : 12/4/2010 *
'* Version : 1.0 *
'* Notes : PIC 16F84 PROJECT *
'* : *
'************************************************* ***************



' 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
DEFINE LCD_RSBIT 2
' Set LCD Enable port
DEFINE LCD_EREG PORTB
' Set LCD Enable bit
DEFINE LCD_EBIT 3
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
' Set command delay time in us
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
DEFINE LCD_DATAUS 50


dg1 var byte
dg2 var byte
dg3 var byte
dg4 var byte
dg5 var byte
dg6 var byte


t1 var byte
t2 var byte
t3 var byte
t4 var byte
t5 var byte
t6 var byte


i var byte


i=0


st:

i=i+1
POT porta.0,255,dg1
POT porta.1,255,dg2
POT porta.3,255,dg3
POT portb.0,255,dg4
POT porta.2,255,dg5

lcdout $fe,1,"Telephone"
pause 50
t1=dg1
t2=dg2
t3=dg3
t4=dg4
t5=dg5

if i=50 then
i=0
goto main
endif
goto st

main:

lcdout $fe,1,"SOS"
POT porta.0,255,dg1
if dg1<(t1-1) or dg1>(t1+1) then call ct1

POT porta.1,255,dg2
if dg2<(t2-1)or dg2>(t2+1) then call ct2

POT porta.3,255,dg3
if dg3< (t3-1) or dg3> (t3+1) then call ct3

POT portb.0,255,dg4
if dg4< (t4-1) or dg4> (t4+1) then call ct4

POT porta.2,255,dg5
if dg5< (t5-1) or dg5> (t5+1) then call ct5

goto main


ct1:
lcdout $fe,1,"Canh sat",$fe,$c0,"113"
pause 1000
DTMFOUT PORTa.4,500,100,[1,1,3]
return
ct2:
lcdout $fe,1,"Chua Chay",$fe,$c0,"114"
pause 1000
DTMFOUT PORTa.4,500,100,[1,1,4]
return
ct3:
lcdout $fe,1,"0988223803"
pause 1000
DTMFOUT PORTa.4,500,100,[0,9,8,8,2,2,3,8,0,3]
return

ct4:
lcdout $fe,1,"0938634786"
pause 1000
DTMFOUT PORTa.4,500,100,[0,9,3,8,6,3,4,7,8,6]
return

ct5:
lcdout $fe,1,"Cap Cuu",$fe,$c0,"115"
pause 1000
DTMFOUT PORTa.4,500,100,[1,1,5]
return

KVLV
22-12-2010, 01:20 AM
tải về xem nha

http://melabs.com/downloads/PBP_Manual_0609_260.pdf

KVLV
22-12-2010, 12:56 PM
thay mấy links này chữ xx thành tt mới có thể vào

official website hxxp://melabs.com/
forum for picbasic pro hxxp://www.picbasic.co.uk/forum/

xài đồ chôm hxxp://www.sonsivri.com/forum/index.php?topic=25291.0
MicroCode Studio 4 hxxp://melabs.com/resources/win_ide.htm#Studio
MPLAB IDE hxxp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

những links trên là những gì cần thiết để học picbasic pro.

$fe = số hex tương tự trong c là 0xfe

%00001010 = số nhị phân (binary)

dấu ' là comment trong picbasic pro, hay là lời ghi chú/giải thích

st: là label, 1 nơi/địa chỉ mà trong chương trình có thể dùng goto hoặc gosub để gọi tới

dg1 var byte 'khai báo variable dg1 là 1 byte

POT porta.0,255,dg1 'đọc biến trở ở porta0 và chứa data trong variable dg1, 255 scale (maximum value cho dg1, số thập phân (decimal))

lcdout $fe,1,"Telephone" 'hiển thị trên lcd chữ Telephone, clear lcd first, hàng 1 của lcd
pause 50 'chờ 50 millisecond

if i=50 then 'nếu i=50 thì set i=0 quay về main, goto st là quay về label st.
i=0
goto main
endif
goto st

DTMFOUT PORTa.4,500,100,[0,9,3,8,6,3,4,7,8,6] ' câu này tra trong manual ở post #2 sẽ hiểu thêm.

những câu nào không biết thì hỏi ?

loveofteens8x
23-12-2010, 02:05 AM
anh giải thích giùm em thêm 2 lệnh này nữa được ko ạ !
t1 var byte

if dg1<(t1-1) or dg1>(t1+1) then call ct1

KVLV
23-12-2010, 03:33 AM
t1 var byte 'khai báo t1 là byte (8 bits)


if dg1<(t1-1) or dg1>(t1+1) then call ct1
if dg1 ít hơn t1 trừ 1 hoặc là dg1 lớn hơn t1 cộng 1 thì gọi ct1 (theo tôi nên dùng gosub thay cho call)



anh giải thích giùm em thêm 2 lệnh này nữa được ko ạ !
t1 var byte

if dg1<(t1-1) or dg1>(t1+1) then call ct1

loveofteens8x
23-12-2010, 08:28 PM
ok. tại code này đã chạy rồi , nên em dùng Call luôn. Em cám ơn anh nhìu nghen..!

ruabien207
12-03-2011, 08:18 PM
hoangthe_cung nhom
Pac KVLV co nhieu link hay lam!do lai bai tap lon cua nhom!
sau bai tap lon nay,nhom dang phat trien de tai lon hon lam do an tot nghiep,,,
neu co the mong Pac giup do nhieu lam
cho em hoi la Pac co am hieu ve cong nghe M_touch nhieu khong,,,

KVLV
12-03-2011, 11:58 PM
hoangthe_cung nhom
Pac KVLV co nhieu link hay lam!do lai bai tap lon cua nhom!
sau bai tap lon nay,nhom dang phat trien de tai lon hon lam do an tot nghiep,,,
neu co the mong Pac giup do nhieu lam
cho em hoi la Pac co am hieu ve cong nghe M_touch nhieu khong,,,

tôi thì không rành về m touch nhưng nói không phải khoe, với chương trình mà loveofteen8x đã post, tôi có thể viết lại hoàn chỉnh hơn. lúc này tôi có vài đồ án nên không rãnh làm mấy việc này.

Nếu em có vấn đề gì thì post lên diễn đàn, nếu tôi có ghé ngang, tôi sẵn sàng giúp đỡ.