۱۹-اسفند-۱۳۹۰, ۱۲:۱۲:۴۰
کد php:
$regfile = "m16def.dat"
$crystal = 8000000
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pina.0 = Input
Starts Alias Pinc.0
Stops Alias Pinc.1
Menu Alias Pinc.2
Incr_b Alias Pinc.3
Decr_b Alias Pinc.4
Swup Alias Pinc.5
Swdown Alias Pinc.6
Jack Alias Portd.0
Role Alias Portd.1
Heater Alias Portd.2
Portd = &B11111000
Portc = &B01111111
'////////////////////////////ADC Configuration////////////////////////////
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Stop Adc : Start Adc
'////////////////////////////Timer Configuration//////////////////////////
Config Timer0 = Timer , Prescale = 1
Enable Interrupts
Enable Timer0
On Timer0 Total
Timer0 = 0
Stop Timer0
Start Timer0
'///////////////////////////////Interrupts////////////////////////////////
Config Int0 = Falling
Enable Int0
On Int0 Halt
'///////////////////////////////Variables/////////////////////////////////
Dim Jack_delay As Word
Dim Role_delay As Word
Dim Set_point As Byte
Dim Quantity As Word
Dim Temp As Word
Dim Sum As Word
Dim Ave As Single
Dim Final As Single
Dim Steps As Byte
Dim Change As Byte
Dim A As Byte
Dim B As Byte
Dim Temp_1 As String * 3
'////////////////////////////////////////////////////////////////////////
Cls : Cursor Off : Delay
Reset Jack : Reset Role : Reset Heater
Do
Home
Lcd "jack= " ; Jack_delay ; " "
Locate 2 , 1
Lcd "Role= " ; Role_delay ; " "
Locate 1 , 10
Lcd "No= " ; Quantity ; " "
Locate 2 , 10
Lcd "Temp= " ; Final ; " "
If Starts = 0 And Swup = 0 Then
Set Jack
Bitwait Swdown , Reset
Waitms Jack_delay
Reset Jack
Bitwait Swup , Reset
Set Role
Waitms Role_delay
Reset Role
Decr Quantity
End If
Loop Until Stops = 0
Total:
Incr Steps
Select Case Steps
Case 1:
Case 2:
Stop Timer0 : Timer0 = 0
Incr Change
Temp = Getadc(0)
Stop Adc : Sum = Sum + Temp
If Change = 100 Then
Ave = Sum / 100
Final = Ave * 2.53
Final = Round(final)
Change = 0
Sum = 0
End If
Start Adc : Start Timer0
Case 3:
Stop Timer0 : Stop Adc : Timer0 = 0
If Menu = 0 Then
Incr A : Waitms 5
If A = 100 Then
Cls : Locate 1 , 6 : Lcd "SETTINGS" : Lcd " " : Waitms 300 : Cls
Do
Home : Lcd "Jack Delay= " ; Jack_delay : Lcd " " : Waitms 300
If Incr_b = 0 Then : Jack_delay = Jack_delay + 10 : Delay : End If
If Decr_b = 0 Then : Jack_delay = Jack_delay - 10 : Delay : End If
Loop Until Menu = 0
Writeeeprom Jack_delay , 1
Waitms 35
Cls
Do
Home : Lcd "Role Delay= " ; Role_delay : Lcd " " : Waitms 300
If Incr_b = 0 Then : Role_delay = Role_delay + 10 : Delay : End If
If Decr_b = 0 Then : Role_delay = Role_delay - 10 : Delay : End If
Loop Until Menu = 0
Writeeeprom Role_delay , 2
Waitms 35
Cls
Do
Home : Lcd "Temp= " ; Set_point ; "C'" : Lcd " " : Waitms 300
If Incr_b = 0 Then : Set_point = Set_point + 10 : Delay : End If
If Decr_b = 0 Then : Set_point = Set_point - 10 : Delay : End If
Loop Until Menu = 0
Writeeeprom Set_point , 3
Waitms 35
Cls
Do
Home : Lcd "No= " ; Quantity ; " " : Lcd " " : Waitms 300
If Incr_b = 0 Then : Quantity = Quantity + 5 : Delay : End If
If Decr_b = 0 Then : Quantity = Quantity - 5 : Delay : End If
Loop Until Menu = 0
Writeeeprom Quantity , 4
Waitms 35
A = 0
End If
Else
A = 0
End If
Steps = 0
Start Timer0 : Start Adc
End Select
Return
Halt:
Reset Jack
Reset Role
Reset Heater
Return