Код:
$prog &HFF , &HE4 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes.
$regfile = "m32def.dat" ' specify the used micro
$crystal = 8000000 ' used crystal frequency
$baud = 1200
Config Pinb.2 = Input ' если 1 то идет зарядка
Config Pind.2 = Output : Portd.2 = 1 :
Config Pind.2 = Input : Tsop1 Alias Pind.2
Config Pind.3 = Input : Tsop2 Alias Pind.3
Config Pinb.0 = Output : Led_ir1 Alias Portb.0
Config Pinb.1 = Output : Led_ir2 Alias Portb.1
Config Pinb.2 = Output : Led_ir3 Alias Portb.2
Config Pinc.4 = Output : Led_r1 Alias Portc.4
Config Pinc.5 = Output : Led_g1 Alias Portc.5
Config Pinc.6 = Output : Led_r2 Alias Portc.6
Config Pinc.7 = Output : Led_g2 Alias Portc.7
Config Pind.6 = Output : Old_ir_led Alias Portd.6
Config Pind.7 = Output : Portd.7 = 0 : Spik Alias Portd.7
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Pinc.2 = Output : Drl Alias Portc.2 : Config Pind.4 = Output
Config Pinc.3 = Output : Drr Alias Portc.3 : Config Pind.5 = Output
Dim Speed As Byte : Speed = 150
Dim B As Integer : B = 0
Dim C As Integer :
Print "Start"
Wait 2
Led_r1 = 1
Gosub ПискВкл
Led_r1 = 0
Config Rc5 = Pind.2
Enable Interrupts
Dim Address As Byte , Command As Byte
' Код управления с пульта от телевизора
Do
Getrc5(address , Command)
If Command = 32 Then Gosub Прямо
If Command = 17 Then Gosub Влево
If Command = 16 Then Gosub Вправо
If Command = 33 Then Gosub Назад
Waitms 50
Gosub Стоп
Loop
' Это когда препятствия нет, едем перед, когда есть едем назад.
' Но в данном случае он не выполняется потому что из-за верхнего цикла
' мы сюда никогда не дойдем :-)
Do
Speed = 150
Gosub Радар1
If Tsop1 = 0 Then
Gosub Назад
Led_r1 = 1 : Waitms 100
Gosub ПискВкл
Else
Led_r1 = 0 : Gosub Прямо : Waitms 100
End If
Waitus 100
Loop
'==============================================================================
'==============================================================================
Влево:
Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Вправо:
Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Прямо:
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Назад:
Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Стоп:
Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return
ПискВкл:
For B = 0 To 1000
Spik = 1
Waitus 300
Spik = 0
Waitus 300
Next
Return
ПискВыкл:
Spik = 0
Return
Св_Кр_1:
B = 0
For B = 0 To 5
Led_r1 = 1
Led_g2 = 0
Waitms 200
Led_r1 = 0
Led_g2 = 1
Waitms 200
Next
Led_g2 = 0
Return
Св_Зл_1:
B = 0
For B = 0 To 5
Led_g1 = 1
Led_r2 = 0
Waitms 200
Led_g1 = 0
Led_r2 = 1
Waitms 200
Next
Led_r2 = 0
Return
Св_Кр_2:
B = 0
For B = 0 To 5
Led_r2 = 1
Waitms 200
Led_r2 = 0
Waitms 200
Next
Return
Св_Зл_2:
B = 0
For B = 0 To 5
Led_g2 = 1
Waitms 200
Led_g2 = 0
Waitms 200
Next
Return
Св_Жл_1:
B = 0
For B = 0 To 5
Led_g1 = 1
Led_r1 = 1
Led_g2 = 0
Led_r2 = 0
Waitms 200
Led_g1 = 0
Led_r1 = 0
Led_g2 = 1
Led_r2 = 1
Waitms 200
Next
Led_g2 = 0
Led_r2 = 0
Return
Радар1:
For B = 0 To 12
Led_ir1 = 0
Waitus 18
Led_ir1 = 1
Waitus 16
Next
Return