Код: Выделить всё
;**********************************************************************
; 1 - Vdd - 5 вольт
; 2 - OSC1 - 20 MHz
; 3 - OSC2 - 20 MHz
; 4 - MCLR
; 5 - RC5/CCP1 - выход ШИМ
; 6 - RC4 - Band 1
; 7 - RC3 - Band 0
; 8 - RC2 - Freq 2
; 9 - RC1 - Freq 1
; 10 - RC0 - Freq 0
; 11 - RA2 - включение девиации
; 12 - RA1/ICSPCLK
; 13 - RA0/ICSPDAT
; 14 - Vss - общий
;**********************************************************************
list p=16f1824
#include <p16f1824.inc>
errorlevel -302
;**********************************************************************
__CONFIG_CONFIG1,_CP_ON&_CPD_ON&_BOREN_OFF&_PWRTE_ON&_WDTE_OFF&_FOSC_HS&_MCLRE_ON
__CONFIG _CONFIG2, _STVREN_ON&_BORV_HI&_LVP_OFF&_PLLEN_OFF
;**********************************************************************
arg EQU 0x70
load_T0 EQU 0x79
aaa EQU 0x7B
temp EQU 0x7C
temp1 EQU 0x7D
;**********************************************************************
ORG 0x000
nop
goto main
ORG 0x004
movf load_T0,w ; предустановку
movwf TMR0 ; грузим в таймер
incf arg,f ; инкрементируем аргумент
movf arg,w
andlw 0x7F
btfsc PORTC, 4
goto no_test
btfss PORTC, 3
goto test
no_test call sin
movwf aaa
load_PWM swapf aaa,w
andlw b'00110000'
iorlw b'00001111'
movlb .5
movwf CCP1CON
rrf aaa,f
rrf aaa,w
andlw b'00111111'
movwf CCPR1L
movlb .0
bcf INTCON,T0IF
retfie
test movwf aaa
addwf aaa, f
comf aaa, f
goto load_PWM
;----------------------------------------------------------------------
;----------------------------------------------------------------------
main movlb .0
movlw b'00100000' ; T0IE = 1
movwf INTCON
clrf PIR1
clrf T1CON
........
........
END


