Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Написал программу для PIC16F628A,регулятор мощности...
198022alex Дата: Пн, 24.02.2014, 23:35  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 2
Репутация: 0   ±
Замечания:   ±
На сайте с 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:
Прикрепления: Untitled.pbp (2.6 Kb)
ЯНДЕКС Дата: 24.02.2014
ADMIN Дата: Вт, 25.02.2014, 05:22  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 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
Репутация: 59   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

вот это может давать ошибки

IF B<9300 AND 8300 THEN - во втором условии нет В (8300), Таких две строки

Сообщение отредактировал xvovanx - Вт, 25.02.2014, 13:45
  • Страница 1 из 1
  • 1
Поиск: