как говорил, что выложу рабочий код ШИМ. Напоминаю, что моя цель - это ШИМ с РОНами и вычисляемыми переходами! Конечно, долго, но все таки сделал то, что нужно! На личное свободных времени почти нет, поэтому припозднил немного) Итак, КОД:
;************************************************* ******************************
;MAIN PWM PROGRAM(1)
;************************************************* ******************************
TOP CALL T0_TOP
MOVWF T0
MOVWF K0
CALL T1_TOP
MOVWF T1
MOVWF K1
MOVF X, W
MOVWF COEF
CLRF PCLATH
INCF TABLE
CHECK_TBL MOVF TABLE, W
SUBLW 0X2C
BTFSC STATUS, Z
CLRF TABLE
;&&&&&&&&&&& KEYS &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&
; CHECK KEY MODE
MODE BTFSC GPIO, D'3';
GOTO VEL_DOWN
DEBOUNCE_8 BTFSS GPIO, D'3'
GOTO DEBOUNCE_8
CLRF PCLATH
MOVF SMOOTH, W
SUBWF PCL, F
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
; CHECK VELOCITY
VEL_DOWN BTFSC GPIO, D'4'
GOTO VEL_UP
DBNC1 BTFSS GPIO, D'4'
GOTO DBNC1
GOTO MINUS
VEL_UP BTFSC GPIO, D'5'
GOTO SAVETIME
DBNC2 BTFSS GPIO, D'5'
GOTO DBNC2
GOTO PLUS
PLUS MOVLW 0X14
ADDWF X
GOTO SAVETIME
MINUS MOVLW 0X14
SUBWF X
GOTO SAVETIME
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
; PWM
SAVETIME DECF COEF
CLRF GPIO ; TURN OFF PORTS
CHECK_0 MOVF T0, W
SUBLW 0X00 ;CHECK BY 0
BTFSC STATUS, Z
GOTO CHECK_1
CYCLE0 DECFSZ T0, F ;CYCLE 0 INTERVAL
GOTO CYCLE0
CHECK_1 MOVF T1, W
SUBLW 0X00 ;CHECK BY 0
BTFSC STATUS, Z
GOTO CHECKING
MOVF GPIO_1, W
MOVWF GPIO
CYCLE1 DECFSZ T1, F ; CYCLE 1 INTERVAL
GOTO CYCLE1
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
; VELOCITY
CHECKING MOVF COEF, W
SUBLW 0X00
BTFSC STATUS, Z
GOTO TOP
REWRITE MOVF K0, W
MOVWF T0
MOVF K1, W
MOVWF T1
GOTO SAVETIME
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
; A TABLE OF PWM
ORG 0X100
T0_TOP
MOVF TABLE, W
NOP
BSF PCLATH, D'0'
ADDWF PCL, F
DT 0X00 ;1
DT 0X0C ;2
DT 0X18 ;3
DT 0X24 ;4
DT 0X30 ;5
DT 0X3C ;6
DT 0X48 ;7
DT 0X54 ;8
DT 0X60 ;9
DT 0X6C ;10
DT 0X78 ;11
DT 0X84 ;12
DT 0X90 ;13
DT 0X9C ;14
DT 0XA8 ;15
DT 0XB4 ;16
DT 0XC0 ;17
DT 0XCC ;18
DT 0XD8 ;19
DT 0XFC ;20
DT 0XFC ;21
DT 0XFF ;22
DT 0XFC ;22
DT 0XF0 ;21
DT 0XE4 ;20
DT 0XD8 ;19
DT 0XCC ;18
DT 0XC0 ;17
DT 0XB4 ;16
DT 0XA8 ;15
DT 0X9C ;14
DT 0X90 ;13
DT 0X84 ;12
DT 0X78 ;11
DT 0X6C ;10
DT 0X60 ;9
DT 0X54 ;8
DT 0X48 ;7
DT 0X3C ;6
DT 0X30 ;5
DT 0X24 ;4
DT 0X18 ;3
DT 0X0C ;2
DT 0X00 ;1
ORG 0X200
T1_TOP
MOVF TABLE, W
BCF PCLATH, D'0'
BSF PCLATH, D'1'
ADDWF PCL, F
DT 0XFC ;22
DT 0XF0 ;21
DT 0XE4 ;20
DT 0XD8 ;19
DT 0XCC ;18
DT 0XC0 ;17
DT 0XB4 ;16
DT 0XA8 ;15
DT 0X9C ;14
DT 0X90 ;13
DT 0X84 ;12
DT 0X78 ;11
DT 0X6C ;10
DT 0X60 ;9
DT 0X54 ;8
DT 0X48 ;7
DT 0X3C ;6
DT 0X30 ;5
DT 0X24 ;4
DT 0X18 ;3
DT 0X0C ;2
DT 0X00 ;1
DT 0X00 ;1
DT 0X0C ;2
DT 0X18 ;3
DT 0X24 ;4
DT 0X30 ;5
DT 0X3C ;6
DT 0X48 ;7
DT 0X54 ;8
DT 0X60 ;9
DT 0X6C ;10
DT 0X78 ;11
DT 0X84 ;12
DT 0X90 ;13
DT 0X9C ;14
DT 0XA8 ;15
DT 0XB4 ;16
DT 0XC0 ;17
DT 0XCC ;18
DT 0XD8 ;19
DT 0XFC ;20
DT 0XFC ;21
DT 0XFF ;22
Выполняет функции:
8. Плавное включение и выключение красных светодиодов с регулированием скорости плавности
9. Плавное включение и выключение зеленых светодиодов с регулированием скорости плавности
10. Плавное включение и выключение синих светодиодов с регулированием скорости плавности
11. Плавное включение и выключение красных и зеленых светодиодов с регулированием скорости плавности
12. Плавное включение и выключение красных и синих светодиодов с регулированием скорости плавности
13. Плавное включение и выключение зеленых и синих светодиодов с регулированием скорости плавности
14. Плавное включение и выключение всех светодиодов с регулированием скорости плавности
15. Продолжение следует...