تبليغاتX
آموزش میکروکنترلر avr - (avr(5

دوستان خوبم سلام ان شاء الله که حالتون خوب باشه و تو دستورات پست قبلي مشکلي نداشته ايد البته اينجوري که شما نظر نميديد لابد خيلي خوب ياد گرفتيد ديگه البته اين ناشي از هوش بالاي شماست اما آخه بي معرفتا يه نظر بدين دل من هم براي نوشتن خوش باشه. خوب بگذريم تو اين پست ميخوام يه سري دستورات تبديل کدها به يکديگر و دستورات مربوط به حلقه هاي تکرار را آموزش بدم.

دستور HEX
اين دستور مقدار X را به مقدار هگزادسيمال آن تبديل کرده و در متغير VAR قرار مي دهد.

(VAR=HEX(X

به مثال زير توجه کنيد:

Dim A As Byte , B As String * 5
A = 95
(B = Hex(a
Lcd B                                                       'lcd 5F
End

دستور HEXVAL
اين دستور X را که يک داده هگزادسيمال است به مقدار دسيمال آن تبديل کرده و در متغير VAR قرار مي دهد.

(VAR=HEXVAL(X

به مثال زير توجه کنيد:

Dim A As Byte , B As String * 5
B = 5f
(A = Hexval(b
Lcd A                                                       'lcd 95
End


دستور STRING
با اين دستور مي توان کد اسکي x را به تعداد n به رشته تبديل و در متغير VAR قرار داد.

(VAR=STRING(N , X

به مثال زير توجه کنيد:

Dim A As String * 20
(A = String(3 , 66
Lcd A                                                       'lcd BBB
End


لازمه که يه کم در مورد کد اسکي( ASCI ) براتون توضيح بدم. ببينيد دوستان براي اينکه هر حرف،عدد یا کاراکتری را روی LCD نمایش دهیم باید کد اسکی آن را  به پایه های 7 تا 14 LCD اعمال کنیم.
جدول کد اسکی حروف و اعداد

کد اسکی        مبنای 10        
A

65

B

66

C

67

D

68

E

69

F

70

G

71

H

72

I

73

J

74

K

75

L

76

M

77

N

78

O

79

P

80

Q

81

R

82

S

83

T

84

U

85

V

86

W

87

X

88

Y

89

Z

90

0

48

1

49

2

50

3

51

4

52

5

53

6

54

7

55

8

56

9

57

دستور ASC
این دستور اولین کاراکتر رشته STRING را به مقدار اسکی آن تبدیل کرده و در متغیر VAR قرار می دهد.

(VAR=ASC(STRING

به مثال زیر توجه کنید:

Dim A As Byte , B As String * 5
"B = "LOVE
(A = Asc(b
Lcd A                                                       'lcd 76
End

دستور STR
این دستور متغیر عددی X را به رشته تبدیل کرده و در متغیر VAR قرار می دهد.

(VAR=STR(X

به مثال زیر توجه کنید:

Dim A As Byte , B As String * 5
A = 156
(B = Str(a
"Lcd B                                                       'lcd"156
End

دستور VAL
این دستور رشته X را به متغیر عددی تبدیل کرده و در متغیر VAR قرار می دهد.[این دستور دقیقاً عکس دستور STR عمل می کند.]

(VAR=VAL(X

به مثال زیر توجه کنید:

Dim A As Byte , B As String * 5
"B = "156
(A = Val(b
Lcd A                                                       'lcd 156
End

دستور IF
در این دستور زمانی که شرط عبارت expression درست شود و دارای ارزش شد دستورالعمل statement اجرا می شود که این دستورالعمل می تواند موراد مختلفی از جمله یک یا صفر کردن یک پایه از میکرو باشد.

IF Expression THEN statement

که همچنین می توان این دستور را به شکل زیر نیز به کار برد که در آنصورت اگر شرط عبارت Epression1درست شد دستورالعمل statement1 اجرا خواهد شد و در صورتی که شرط عبارت Expression1 درست نبود ولی شرط عبارت Expression2 درست بود دستورالعمل statement2 اجرا خواهد شد و در غیر اینصورت یعنی موقعی که شرط هیچکدام از دو عبارت Expression1 و Expression2 درست نباشد دستورالعمل statement 3 اجرا خواهد شد.

IF Expression1 THEN
statement1
Elseif  Expression2 THEN
statement2
Else
statement3
End if

به مثال زیر توجه فرمایید:

Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Output
Config Pinc.3 = Output
Config Pinc.4 = Output
A = Pinc.0
B = Pinc.1
C Alias Portc.2
D Alias Portc.3
E Alias Portc.4
If A = 1 Then
Set C
Elseif A = 0 Then
Set D
Elseif B = 1 Then
Set E
Else
Reset E
End If
End

در مثال بالا ابتدا توسط دستور CONFIG PORTX=INPUT/OUTPUT جهت پایه های پورت C را تعیین کردیم سپس برای هرکدام یک اسم مستعار در نظر گرفتیم و بعد با استفاده از دستور IF وضعیت پایه های ورودی را چک کردیم که در صورت درست شدن هریک از شرط ها دستورالعمل مربوطه اجرا خواهد شد.

حلقه تکرار DO - LOOP
این دستور یک حلقه تکرار بی نهایت است که وقتی درون آن شرط ها و یا دستوراتی را قرار می دهیم درستی این شرط ها دائماً چک می شود و دستورالعمل های مربوطه انجام می شود و اگر دستوراتی را در این حلقه قرار دهیم این دستورات دائماً تکرار می شوند مانند وقتی که می خواهیم برای روشنایی ترتیبی LED از دستور ROTATE استفاده کنیم این دستور دائماً تکرار شده و به این ترتیب LED ها پشت سر هم روشن و خاموش می شوند.البته می توان با استفاده از گزینه اختیاری UNTIL expression به ازای عبارت expression از درون این حلقه تکرار خارج شد. فرم کلی این دستور به صورت زیر است:

DO
   statement    
   [LOOP [UNTIL expression

به مثال زیر توجه کنید:

"regfile = "m32def.dat$
$crystal = 8000000
Config Port A = Output
A Alias Porta
A = 128
Do
   Rotate A , Left
Loop
End

در واقع ما با استفاده از برنامه بالا یک چشمک زن 8 کاناله ساخته ایم که شما می توانید آن را در محیط bascom نوشته و پس از کامپایل کردن آن را روی آی سی مورد نظر پروگرم(برنامه ریزی)کنید.

دستور CASE
این دستور مقدار متغیر VAR را با مقادیر مختلف TEST مقایسه کرده و اگر متغیر VAR با یکی از مقادیر TEST برابر بود دستورالعمل مربوط به آن اجرا خواهد شد.

Select Case Var
case test1: statement1
case test2: statement2
case else : statement3
End Select

که شما می توانید مقادیر test را به صورت تساوی با مقداری دلخواه،به صورت بزرگتر یا کوچکتر از مقداری دلخواه یا به صورت محدوده ای برای آن انتخاب کنید.

مانند:  Case 5:statement ، Case IS>4:statement ، یا Case 2 to 6 .

به مثال زیر توجه کنید:

Config Portc = Input
A Alias Portc
Do
   Select Case A
   Case 1 To 50 : Lcd A
   :Case Is > 50
   A = A * 2
   Lcd A
   End Select
Loop
End

خوب دوستان خوبم فکر می کنم برای این پست کافی باشه فقط یه سری از حلقه های تکرار می مونه برای پست بعدی. اگه تو دستورات این پست به مشکل برخوردید تو نظرات بنویسید خوشحال می شم کمکتون کنم.

فعلاً یا حق

نوشته شده توسط فرزان شجاعی در جمعه دوازدهم مرداد 1386 ساعت 20:12 | لینک ثابت |