سلام
اساتید گرامی لطف کنید بگید مشکل این برنامه چیه که کامپایل نمیکنه؟
گیج شدم :sad:
اساتید گرامی لطف کنید بگید مشکل این برنامه چیه که کامپایل نمیکنه؟
گیج شدم :sad:
کد:
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = _
Porta.6 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0
Config Lcd = 16 * 2
Config Int0 = Falling
Config Int1 = Falling
Enable Interrupts
Enable Int0
Enable Int1
Enable Urxc
On Int0 Ex0_rut
On Int1 Ex1_rut
On Urxc Intlab
'-----------------------------------
Declare Function Search_eeprom()as Byte
Declare Function Check_in() As Byte
Declare Function Set_up() As Byte
Declare Function Yes_no() As Byte
Declare Function Delet_eeprom(byval Block_number As Byte) As Byte
Declare Function Show_eeprom(byval Block_number1 As Byte) As Byte
Declare Function Write_eeprom(byval Block_number2 As Byte) As Byte
'-----------------------------------
Door_open Alias Portd.6
Alarm Alias Portd.7
Yes_pin Alias Pinc.2
No_pin Alias Pinc.3
'-----------------------------------
Ddrd = &HC0
Ddrc = &H00
'-----------------------------------
Dim S(15) As Byte
Dim S1(10) As Byte
Dim Test(10) As Byte
Dim Data_base(100) As Eram Byte
Dim Valid_id As Byte , I As Byte , J As Byte
Dim I1 As Byte , Temp As Byte
Dim Ss As String * 10
Dim Yes_no_check As Byte , C As Byte , D As Byte
Dim Start_flag As Bit , Read_flag As Bit
Dim Up_down_flag As Bit , Usart_flag As Bit
'-----------------------------------
I = 1
Usart_flag = 1
Alarm = 1
Door_open = 0
Cursor Off
D = Check_in()
Do
If Read_flag = 1 Then
Read_flag = 0
Usart_flag = 0
C = Pinc And &H03
Select Case C
'---------------------------------check in Mode
Case 0:
For J = 1 To 10
S1(j) = S(j + 1)
Next J
Valid_id = Search_eeprom()
If Valid_id >= 0 And Valid_id < 10 Then
Door_open = 1
Alarm = 0
Cls
Lcd "Valid Card>NO." ; Valid_id
Lowerline
For J = 1 To 10
Lcd String(1 , S1(j))
Next J
Waitms 100
Alarm = 1
Waitms 3000
Door_open = 0
D = Check_in()
Else
Cls
Lcd "Invalid Card!"
Waitms 2000
D = Check_in()
End If
'----------------------------------Setup Mode
Case 3:
For J = 1 To 10
S1(j) = S(j + 1)
Next J
Valid_id = Search_eeprom()
If Valid_id >= 0 And Valid_id < 10 Then
'---------------------------------------Exist Card
Cls
Lcd "Already Exist:"
Lowerline
Lcd "NO." ; Valid_id ; " "
For J = 1 To 10
Lcd String(1 , S1(j))
Next J
Waitms 3000
Lowerline
Lcd " "
Lowerline
Lcd "Delete it? Y/N"
Yes_no_check = Yes_no()
If Yes_no_check = 1 Then
D = Delet_eeprom(valid_id)
Cls
Lcd "Block No: " ; Valid_id
Lowerline
Lcd "Delete Complete!"
Waitms 3000
D = Set_up()
Elseif Yes_no_check = 0 Then
Cls
Lcd "No delete!"
Waitms 3000
D = Set_up()
End If
Else
'---------------------------------------New Card
Cls
Lcd "New Card:"
Lowerline
Lcd "Save it? Y/N"
Yes_no_check = Yes_no()
If Yes_no_check = 1 Then
Cls
Lcd "Select Block:"
Lowerline
Lcd "Using UP/DOWN..."
Waitms 2000
Up_down_flag = 1
Valid_id = 0
D = Show_eeprom(valid_id)
Yes_no_check = Yes_no()
Up_down_flag = 0
If Yes_no_check = 1 Then
D = Write_eeprom(valid_id)
Cls
Lcd "Block No: " ; Valid_id
Lowerline
Lcd "Save Complete!"
Waitms 3000
D = Set_up()
Else
Cls
Lcd "No save!"
Waitms 2000
D = Set_up()
End If
Elseif Yes_no_check = 0 Then
Cls
Lcd "No save!"
Waitms 2000
D = Set_up()
End If
End If
'-------------------------Not Allow Mode
Case Else:
Cls
Lcd "Not Allow!"
Waitms 2000
D = Check_in()
End Select
End If
Usart_flag = 1
Loop
End
'-----------------------------------
Ex0_rut:
Dim R1 As Byte , T1 As Byte
If Up_down_flag = 1 Then
Waitus 200
If Pind.2 = 0 Then
If Valid_id < 9 Then
Incr Valid_id
Cls
Lcd "Block No>" ; Valid_id
Lowerline
Lcd "ID>"
For R1 = 1 To 10
T1 = Valid_id * 10
T1 = T1 + R1
Lcd String(1 , Data_base(t1))
Next R1
End If
End If
End If
Return
'-----------------------------------
Ex1_rut:
Dim R2 As Byte , T2 As Byte
If Up_down_flag = 1 Then
Waitus 200
If Pind.3 = 0 Then
If Valid_id > 0 Then
Decr Valid_id
Cls
Lcd "Block No>" ; Valid_id
Lowerline
Lcd "ID>"
For R2 = 1 To 10
T2 = Valid_id * 10
T2 = T2 + R2
Lcd String(1 , Data_base(t2))
Next R2
End If
End If
End If
Return
'-----------------------------------
Intlab:
Dim Usart_data As Byte
Usart_data = Udr
If Usart_flag = 1 Then
If Usart_data = &H02 Then Start_flag = 1
If Start_flag = 1 And I <= 15 Then
S(i) = Usart_data
Incr I
End If
If Usart_data = &H03 Then
Start_flag = 0
Read_flag = 1
I = 1
End If
End If
Return
'-----------------------------------
Function Check_in() As Byte
Cls
Lcd "Welcome:"
Lowerline
Lcd ">>> Check in <<<"
End Function
'-----------------------------------
Function Set_up() As Byte
Cls
Lcd "Setup:"
Lowerline
Lcd ">>Insert Card<<"
End Function
'-----------------------------------
Function Yes_no() As Byte
Dim Yes_no_ret As Byte
Yes_no_ret = 0
While Yes_pin = No_pin
Waitus 50
Wend
If Yes_pin = 0 Then
Yes_no_ret = 1
End If
Yes_no = Yes_no_ret
End Function
'-----------------------------------
Function Delet_eeprom(byval Block_number As Byte) As Byte
For I1 = 1 To 10
Temp = Block_number * 10
Temp = Temp + I1
Data_base(temp) = &HFF
Next I1
End Function
'-----------------------------------
Function Search_eeprom()as Byte
Dim K As Byte , P As Byte , Ret_val As Byte
Dim Test_flag As Bit
For P = 0 To 9
Ret_val = P
Test_flag = 1
For K = 1 To 10
Temp = P * 10
Temp = Temp + K
If S1(k) <> Data_base(temp) Then
Ret_val = 20
Test_flag = 0
End If
Next K
If Test_flag = 1 Then Exit For
Next P
Search_eeprom = Ret_val
End Function
'-----------------------------------
Function Show_eeprom(byval Block_number1 As Byte) As Byte
Cls
Lcd "Block No>" ; Block_number1
Lowerline
Lcd "ID>"
For I1 = 1 To 10
Temp = Block_number1 * 10
Temp = Temp + I1
Lcd String(1 , Data_base(temp))
Next I1
End Function




دیدگاه