Написал программу для PIC16F628A,регулятор мощности...
|
|
198022alex |
Дата: Пн, 24.02.2014, 23:35 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
2
Замечания:
±
На сайте с 03.02.2014
Статус:
Offline
|
Написал программу,проверил на железе,работает.Но мне кажется,что написал не правильно.ваши мнения господа. PIR1 = %00000000 PIE1 = %00000000 VRCON = %00000000 INTCON = %00000000 CMCON = %00100101 TRISA = %11111111 TRISB = %00000000 PORTA = %00000000 PORTB = %00000000 A VAR BIT B VAR WORD A=0 B=9300 main: IF PORTA.0=0 THEN B=B+1 IF B>=9300 THEN B=B-1 ENDIF ENDIF IF PORTA.3=0 THEN B=B-1 IF B=1100 THEN B=B+1 ENDIF ENDIF
If CMCON.7 = 1 AND A=0 Then PAUSEUS B PORTB.0=1 IF B<9300 AND 8300 THEN PORTB.1=1 PORTB.2=0 PORTB.3=0 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<8300 AND B>7100 THEN PORTB.1=1 PORTB.2=1 PORTB.3=0 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<7100 AND B>5900 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<5900 AND B>4700 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<4700 AND B>3500 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=0 PORTB.7=0 ENDIF IF B<3500 AND B>2300 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=1 PORTB.7=0 ENDIF IF B<2300 AND B>1100 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=1 PORTB.7=1 ENDIF PAUSEUS 100 PORTB.0=0 A=1 EndIf
IF CMCON.7=0 AND A=1 THEN PAUSEUS B PORTB.0=1 IF B<9300 AND 8300 THEN PORTB.1=1 PORTB.2=0 PORTB.3=0 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<8300 AND B>7100 THEN PORTB.1=1 PORTB.2=1 PORTB.3=0 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<7100 AND B>5900 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<5900 AND B>4700 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=0 PORTB.6=0 PORTB.7=0 ENDIF IF B<4700 AND B>3500 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=0 PORTB.7=0 ENDIF IF B<3500 AND B>2300 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=1 PORTB.7=0 ENDIF IF B<2300 AND B>1100 THEN PORTB.1=1 PORTB.2=1 PORTB.3=1 PORTB.4=1 PORTB.5=1 PORTB.6=1 PORTB.7=1 ENDIF PAUSEUS 100 PORTB.0=0 A=0 ENDIF GoTo main:
|
|
|
|
ADMIN |
Дата: Вт, 25.02.2014, 05:22 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Ну, например, вместо
PORTB.0=1 ---------------------- PORTB.1=1 PORTB.2=0 PORTB.3=0 PORTB.4=0 PORTB.5=0 PORTB.6=0 PORTB.7=0
Можно написать PORTB=%00000011 и так далее...
|
|
|
|
xvovanx |
Дата: Вт, 25.02.2014, 13:44 | Сообщение # 3 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
332
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
вот это может давать ошибки
IF B<9300 AND 8300 THEN - во втором условии нет В (8300), Таких две строки
Сообщение отредактировал
xvovanx - Вт, 25.02.2014, 13:45
|
|
|
|