Пт июн 07, 2019 05:51:13
Пт июн 07, 2019 06:06:13
Пт июн 07, 2019 10:51:24
Вт июн 11, 2019 21:19:14
$map
$regfile = "m328pdef.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
'--- Конфигурация входов и выходов контроллера ----------
Ddrb = &B00001011 'Конфигурация порта В. Считать с права на лево (PORTB.7...PORTB.1,PORTB.0), 0 - вход, 1 - выход
Set Portb.4 'Включить внутренний подтягивающий резистор
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8 'Активируем и настраиваем ШИМ
'--- Инициализация PCINT0 ----------
Pcmsk0 = &B00010000 'Активирует обработку прерывания PORTB.4
Enable Pcint0 : On Pcint0 Buttonon
Enable Interrupts 'Разрешаем прерывания
'--- Обзываем всякие переменные ----------
D1 Alias OCR1A 'Диоды фары
D2 Alias Portb.3 'Индикаторный диод
Button1 Alias Pinb.4 'Переменная для кнопки
Dim I As Byte 'Универсальная переменная (0-255)
Dim Y As Byte 'Универсальная переменная для прерывания
Dim K As Bit 'Флаг отключения
Dim Ledmode As Byte 'Переменная для режимов
'--- Подпрограмма сна ---
Main_sleep:
Reset D1
Ledmode = 0
'--- Ждем отпускания кнопки ---
Bitwait Button1 , Set
Waitus 20
'--- Засыпаем ---
Powerdown
'--- Ждем нажатия на кнопку ---
K = 0
'--- Основная программа ---
Main:
Do
Select Case Ledmode
Case 0 : Gosub M0
Case 1 : Gosub M1
Case 2 : Gosub M2
Case 3 : Gosub M3
Case Else : Ledmode = 0
End Select
'--- Переход в спящий режим ----------
If K = 1 Then
Reset D1
Goto Main_sleep
End If
Loop
Buttonon:
If Button1 = 0 Then
Set D2
D1 = 0
Y = 100
Incr Ledmode
Do
If Button1 = 1 Then
Reset D2
Exit Do
End If
Waitms 10
Incr Y
If Y = 0 Then
K = 1
Reset D2
End If
Loop Until Y = 0
Else
Reset D2
End If
Return
End
'--- Режимы ---
M0: 'Мигалка / Половина яркости
D1 = 128
Waitms 300
D1 = 0
Waitms 300
Return
M1: 'Постоянный / Полная яркость
D1 = 255
Return
M2: 'Постоянный / Половина яркости
D1 = 128
Return
M3: 'Мигалка / Полная яркость
D1 = 255
Waitms 300
D1 = 0
Waitms 300
Return
Вт июн 11, 2019 21:25:39
Чт июн 13, 2019 09:54:00
Чт июн 13, 2019 18:02:40
Чт июн 13, 2019 18:10:26
Чт июн 13, 2019 20:16:26
Вс июн 30, 2019 14:55:12
Чт июл 25, 2019 17:10:03
Вс июл 28, 2019 08:27:00
Сб авг 03, 2019 18:26:55
Пн авг 26, 2019 08:52:16
Вт авг 27, 2019 20:59:48
Чт ноя 28, 2019 14:22:40
$regfile = "2313def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 8
$framesize = 16
Config Portd.6 = Output 'âûõîä íà ñâåòîäèîä
Config Portb = Output 'âûõîäû íà ØÄ
Config Pind.2 = Input 'ãåðêîí
Dim S As Byte 'íîìåðà îáìîòîê ØÄ
Dim A As Byte 'ñ÷åò÷èê ñåêóíä
Dim F As Bit 'ôëàã ñðàáàòûâàíèÿ ãåðêîíà
S = 0 : A = 0 : F = 0
Config Int0 = Falling
On Int0 Pusk 'çàïóñê ØÄ
Config Timer1 = Timer , Prescale = 64 , Clear Timer = 1
Ocr1a = 62500
On Oc1a Timecount 'ïåðåïîëíåíèå òàéìåðà ÷åðåç 1 ñåê
Led Alias Portd.6
Enable Interrupts
Enable Int0
Enable Timer1
Stop Timer1
Do
If F = 1 Then 'ñðàáîòàë ãåðêîí
Led = 1 'çàãîðåëñÿ ñâåòîäèîä
Decr S
If S = 0 Then 'ðàññ÷åò íîìåðîâ îáìîòîê ØÄ
S = 8
End If
Select Case S
Case 1 : Portb = &B00000001
Case 2 : Portb = &B00000011
Case 3 : Portb = &B00000010
Case 4 : Portb = &B00000110
Case 5 : Portb = &B00000100
Case 6 : Portb = &B00001100
Case 7 : Portb = &B00001000
Case 8 : Portb = &B00001001
End Select
Waitus 1000
End If
If A = 3 Then Goto Ex 'A=3 - ïðîøëî 3 ñåêóíäû
Loop
Ex:
Stop Timer1
Led = 0 : F = 0 : A = 0
Powerdown 'ÌÊ óñíóë
End
Pusk: 'íàæàòà êíîïêà ïóñêà
Start Timer1
F = 1
Return
Timecount: 'ïîäñ÷åò âðåìåíè
Incr A
Return
Чт ноя 28, 2019 21:50:24
Пт ноя 29, 2019 07:17:06
Пт ноя 29, 2019 08:38:23
Пт ноя 29, 2019 09:05:36