اون کدهایی را که شما می خواستین تولیدش کنید کد هایی هگذی هستند که روی پرت میکرو قرار می گیرند و توسط نرم افزار تولید شده اند . من راه بهتری به شما پیشنهاد می کنم :
حتماً می دونین که پرت های میکرو را به صورت زیر عدد گذاری می کنند
PORTD.0 = 1
PORTD.1 = 2
PORTD.2 = 4
PORTD.3 = 8
PORTD.4 = 16
PORTD.5 = 32
PORTD.6 = 64
PORTD.7 = 128
که مجموعشون برابر 256 هست پس اگر شما بخواهید PORTD.0 و PORTD.1 را یک کنید باید عدد 3 را روی پرت بگذارید ( عدد های متناظر پین های مورد نظر را باهم جمع می کنیم ).
پس می تونین با طراحی جدول مثل جدول زیر کارکترهای مورد نظر خود را طراحی کنید .
نکته : هیچ محدودیتی در تعداد ستون وجود ندارد ولی تعداد سطر ها نباید بیشتر از 8 تا بشه
به عنوان مثال برای نمایش عدد 3 که در زیر شکلش وجو دارد به صورت زیر عمل می کنیم :
کد:
Portd = 65
Waitms 40
Portd = 145
Waitms 40
Portd = 153
Waitms 40
Portd = 149
Waitms 40
Portd = 115
Waitms 40
اینم برنامه یک ساعت با ATmega8 :
مجموع دستورات wait در نمایش هر چهار متغیر برابر 250 میلی ثانیه می شود که به دلیل این که در حلقه For قرار دارد مجموعاً 1 ثانیه تاخیر به وجود می آید .
کد:
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd = Output
Dim M1 As Byte , M2 As Byte , H1 As Byte , H2 As Byte , S As Byte , Sh As Byte
M1 = 0 : M2 = 0 : H1 = 0 : H2 = 0 : S = 0
Do
For Sh = 1 To 4 Step 1
Select Case H2
Case 0 : Goto 0
Case 1 : Goto 1
Case 2 : Goto 2
Case 3 : Goto 3
Case 4 : Goto 4
Case 5 : Goto 5
Case 6 : Goto 6
Case 7 : Goto 7
Case 8 : Goto 8
Case 9 : Goto 9
End Select
Select Case H1
Case 0 : Goto 0
Case 1 : Goto 1
Case 2 : Goto 2
Case 3 : Goto 3
Case 4 : Goto 4
Case 5 : Goto 5
Case 6 : Goto 6
Case 7 : Goto 7
Case 8 : Goto 8
Case 9 : Goto 9
End Select
Goto Dobdot
Select Case M2
Case 0 : Goto 0
Case 1 : Goto 1
Case 2 : Goto 2
Case 3 : Goto 3
Case 4 : Goto 4
Case 5 : Goto 5
Case 6 : Goto 6
Case 7 : Goto 7
Case 8 : Goto 8
Case 9 : Goto 9
End Select
Select Case M1
Case 0 : Goto 0
Case 1 : Goto 1
Case 2 : Goto 2
Case 3 : Goto 3
Case 4 : Goto 4
Case 5 : Goto 5
Case 6 : Goto 6
Case 7 : Goto 7
Case 8 : Goto 8
Case 9 : Goto 9
End Select
Next
Sh = 0
Incr S
If S > 59 Then
S = 0
Incr M1
End If
If M1 > 9 Then
M1 = 0
Incr M2
End If
If M2 > 5 Then
M2 = 0
Incr H1
End If
If H1 > 9 Then
H1 = 0
Incr H2
End If
If H2 > 2 Then
H2 = 0
End If
Loop
End 'end program
0:
Portd = 126
Waitms 10
Portd = 129
Waitms 10
Portd = 129
Waitms 10
Portd = 129
Waitms 10
Portd = 126
Waitms 10
Return
1:
Portd = 4
Waitms 10
Portd = 2
Waitms 10
Portd = 256
Waitms 10
Portd = 0
Waitms 10
Portd = 0
Waitms 10
Return
2:
Portd = 134
Waitms 10
Portd = 193
Waitms 10
Portd = 161
Waitms 10
Portd = 145
Waitms 10
Portd = 142
Waitms 10
Return
3:
Portd = 97
Waitms 10
Portd = 138
Waitms 10
Portd = 141
Waitms 10
Portd = 129
Waitms 10
Portd = 113
Waitms 10
Return
4:
Portd = 24
Waitms 10
Portd = 20
Waitms 10
Portd = 18
Waitms 10
Portd = 256
Waitms 10
Portd = 16
Waitms 10
Return
5:
Portd = 159
Waitms 10
Portd = 137
Waitms 10
Portd = 137
Waitms 10
Portd = 137
Waitms 10
Portd = 113
Waitms 10
Return
6:
Portd = 126
Waitms 10
Portd = 137
Waitms 10
Portd = 137
Waitms 10
Portd = 137
Waitms 10
Portd = 114
Waitms 10
Return
7:
Portd = 7
Waitms 10
Portd = 7
Waitms 10
Portd = 250
Waitms 10
Portd = 5
Waitms 10
Portd = 3
Waitms 10
Return
8:
Portd = 102
Waitms 10
Portd = 153
Waitms 10
Portd = 153
Waitms 10
Portd = 153
Waitms 10
Portd = 102
Waitms 10
Return
9:
Portd = 78
Waitms 10
Portd = 146
Waitms 10
Portd = 146
Waitms 10
Portd = 146
Waitms 10
Portd = 126
Waitms 10
Return
Dobdot:
Portd = 0
Waitms 10
Portd = 0
Waitms 10
Portd = 36
Waitms 10
Portd = 0
Waitms 10
Portd = 0
Waitms 10
Return