Пн янв 07, 2019 08:17:17
Пн янв 07, 2019 16:36:04
.global __reset
.global __T1Interrupt ; прерывание по переполнению таймера TMR1
__T1Interrupt:
push.s
.........
.........
pop.s
retfie
;==========
.include "p33ep128mc202.inc"
;==========
.global __reset
.global __AddressError
.global __StackError
.global __MathError
;==========
.text
__reset:
mov #__SP_init, W15
mov #__SPLIM_init, W0
mov W0, SPLIM
bra Main
;----------
__AddressError:
nop
nop
nop
retfie
__StackError:
nop
nop
nop
retfie
__MathError:
nop
nop
nop
retfie
;----------
Main:
nop
nop
Superloop:
nop
bra Superloop
;----------
.end
Вт янв 08, 2019 20:13:49
;==========
.include "p33ep128mc202.inc"
;==========
.global __reset
.global __AddressError
.global __StackError
.global __MathError
;==========
.text
__reset:
mov #__SP_init, W15
mov #__SPLIM_init, W0
mov W0, SPLIM
bra Main
;----------
__AddressError:
bclr INTCON1, #ADDRERR
nop
retfie
__StackError:
bclr INTCON1, #STKERR
nop
retfie
__MathError:
bclr INTCON1, #MATHERR
nop
retfie
;----------
Main:
nop
nop
Superloop:
nop
nop
bra Superloop
;----------
.end
;==========
.include "p33ep128mc202.inc"
;==========
.section buf1, near, bss
ptrArrVar: .space 2
arrVar: .space 64
;==========
.global __reset
.global __AddressError
.global __StackError
.global __MathError
;==========
.text
__reset:
mov #__SP_init, W15
mov #__SPLIM_init, W0
mov W0, SPLIM
bra Main
...........................
...........................
;----------
Main:
mov #arrVar, W1
mov #0xAA, W0
repeat #31
mov W0, [W1++]
Superloop:
nop
nop
bra Superloop
;----------
;----------
Main:
nop
nop
Superloop:
call MainInit
call MainCalc
call MainDraw
call MainControl
bra Superloop
;----------
;--- функции главного цикла ---
;----------
CommonMainFunc:
mov W0, DSRPAG
mov statMode, W0
sl W0, W0
mov [W1+W0], W1
mov #0x01, W0
mov W0, DSRPAG
call W1
return
MainInit:
btss statFlags, #req_init
return
bclr statFlags, #req_init
mov #psvpage(TabFuncInit), W0
mov #psvoffset(TabFuncInit), W1
bra CommonMainFunc
MainCalc:
btss statFlags, #data_ready
return
bclr statFlags, #data_ready
mov #psvpage(TabFuncCalc), W0
mov #psvoffset(TabFuncCalc), W1
bra CommonMainFunc
MainDraw:
mov #psvpage(TabFuncDraw), W0
mov #psvoffset(TabFuncDraw), W1
bra CommonMainFunc
MainControl:
mov #psvpage(TabFuncControl), W0
mov #psvoffset(TabFuncControl), W1
bra CommonMainFunc
;----------
FuncInit0:
<тело функции инициализации режима 0>
return
;----------
FuncInit1:
<тело функции инициализации режима 1>
return
;----------
...........................
<остальные функции>
;----------
FuncControl3:
<тело функции управления режима 3>
return
;----------
;----------
;--- таблицы указателей на функции
;----------
TabFuncInit:
.pword handle (FuncInit0)
.pword handle (FuncInit1)
.pword handle (FuncInit2)
.pword handle (FuncInit3)
TabFuncCalc:
.pword handle (FuncCalc0)
.pword handle (FuncCalc1)
.pword handle (FuncCalc2)
.pword handle (FuncCalc3)
TabFuncDraw:
.pword handle (FuncDraw0)
.pword handle (FuncDraw1)
.pword handle (FuncDraw2)
.pword handle (FuncDraw3)
TabFuncControl:
.pword handle (FuncControl0)
.pword handle (FuncControl1)
.pword handle (FuncControl2)
.pword handle (FuncControl3)
;----------
Вт янв 08, 2019 21:00:39
Debug build of project `C:\Microchip\_Prg\RTOS_3F_4011\RTOS_3F_4011.mcp' started.
Language tool versions: pic30-as.exe v3.30, pic30-ld.exe v3.30, pic30-ar.exe v3.30
Preprocessor symbol `__DEBUG' is defined.
Tue Jan 08 19:39:12 2019
Total program memory used (bytes): 0x60 (96) <1%
Data Memory [Origin = 0x800, Length = 0x800]
section address alignment gaps total length (dec)
------- ------- ---------- ----------
Buf1 0x800 0 0x42 (66)
Total data memory used (bytes): 0x42 (66) 3%
Dynamic Memory Usage
region address maximum length (dec)
------ ------- ----------
heap 0 0 (0)
stack 0x842 0x7be (1982)
Maximum dynamic memory (bytes): 0x7be (1982)
Executing: "c:\Microchip\Mpl880\MPLAB ASM30 Suite\bin\pic30-bin2hex.exe" "C:\Microchip\_Prg\RTOS_3F_4011\_Out\RTOS_3F_4011.cof"
Executing: C:\Microchip\_Prg\RTOS_3F_4011\AfterCompile.bat
Loaded C:\Microchip\_Prg\RTOS_3F_4011\_Out\RTOS_3F_4011.cof.
----------
Debug build of project `C:\Microchip\_Prg\RTOS_3F_4011\RTOS_3F_4011.mcp' succeeded.
Language tool versions: pic30-as.exe v3.30, pic30-ld.exe v3.30, pic30-ar.exe v3.30
Preprocessor symbol `__DEBUG' is defined.
Tue Jan 08 19:39:13 2019
----------
BUILD SUCCEEDED
Пт янв 11, 2019 18:50:54
KPAM писал(а):Синтаксис большинства самых используемых команд идентичен синтаксису 8-разрядных семейств, что делает очень простым переход на обсуждаемую платформу адептов 8-разрядных ПИКов.
Пт янв 11, 2019 19:56:29
KPAM писал(а):Синтаксис большинства самых используемых команд идентичен синтаксису 8-разрядных семейств, что делает очень простым переход на обсуждаемую платформу адептов 8-разрядных ПИКов.
Пт янв 11, 2019 21:45:53
Пт янв 11, 2019 23:53:42
KPAM писал(а):Синтаксис большинства самых используемых команд идентичен синтаксису 8-разрядных семейств, что делает очень простым переход на обсуждаемую платформу адептов 8-разрядных ПИКов.
Сб янв 12, 2019 07:10:52
;--- SQRT (W1:W0 -> W0)
SQRT:
mov # 0x8000, W5
clr W6
LpSq:
ior W6, W5, W6
mul.uu W6, W6, W2
sub W0, W2, W4
subb W1, W3, W4
btss SR, # C
sub W6, W5, W6
lsr W5, W5
bra NC, LpSq
mov W6, W0
return
;----------
Сб янв 12, 2019 12:25:11
Сб янв 12, 2019 14:01:41
Сб янв 12, 2019 22:16:18
Вс янв 13, 2019 07:03:09
Не пора ли, друзья мои, нам замахнуться на Вильяма, понимаете, нашего Шекспира!
.equ PTGCTRL, 0b00000000
;---опции PTGCTRL
.equ DisStepDel, 0b0010
.equ EnStepDel, 0b0110
.equ StartTmr0, 0b1000
.equ StartTmr1, 0b1001
.equ WaitSWTedge, 0b1011
.equ WaitSWTlevel, 0b1010
.equ CopyCnt0, 0b1100
.equ CopyCnt1, 0b1101
.equ CopyLit0, 0b1110
.equ GenBTE, 0b1111
;----------
.equ PTGADD, 0b00010000
.equ PTGCOPY, 0b00011000
;---опции PTGADD/PTGCOPY
.equ Counter0, 0b0000
.equ Counter1, 0b0001
.equ Timer0, 0b0010
.equ Timer1, 0b0011
.equ StepDelay, 0b0100
.equ Literal0, 0b0101
;----------
.equ PTGSTRB, 0b00100000
.equ PTGWHI, 0b01000000
.equ PTGWLO, 0b01010000
.equ PTGIRQ, 0b01110000
.equ PTGTRIG, 0b10000000
;---опции PTGTRIG
.equ PWMSE, 0b0000
.equ PWMMT, 0b0001
.equ PWM1Int, 0b0010
.equ PWM2Int, 0b0011
.equ PWM3Int, 0b0100
.equ PWM4Int, 0b0101
.equ PWM5Int, 0b0110
.equ OC1Tr, 0b0111
.equ OC2Tr, 0b1000
.equ IC1Tr, 0b1001
.equ CMP1Tr, 0b1010
.equ CMP2Tr, 0b1011
.equ CMP3Tr, 0b1100
.equ CMP4Tr, 0b1101
.equ ADCdone, 0b1110
.equ INT2ext, 0b1111
;----------
.equ PTGJMP, 0b10100000
.equ PTGJMPC0, 0b11000000
.equ PTGJMPC1, 0b11100000
TabPTGmode3:
;-----
.pword (PTGWHI|IC1Tr) ; step0 IC1->wait start PTG
.pword (PTGTRIG|0) ; step1 PTG->OC1
.pword (PTGCTRL|GenBTE) ; step2 PTG->OC3&OC4
.pword (PTGCTRL|StartTmr0) ; step3 period pump
.pword (PTGJMPC0|2) ; step4 counter of pump
.pword (PTGIRQ|3) ; step5 PTGIRQ3->start comp Tx->TMR7->IRQ TMR7->stop comp Tx
.pword (PTGCTRL|StartTmr1) ; step6 start delay to DMA-ADC
.pword (PTGIRQ|0) ; step7 PTGIRQ0->start DMA-ADC/stop comp Rx
.pword (PTGADD|Literal0) ; step8 Literal0+Adj->frame increment
.pword (PTGJMPC1|29) ; step9 counter of frame (if continuous goto 29 step)
.pword (PTGWLO|OC1Tr) ; step10 wait OC1
.pword (PTGIRQ|1) ; step11 PTGIRQ1->set next frame
.pword 0 ; step12
.pword 0 ; step13
.pword (PTGCTRL|GenBTE) ; step14 PTG->OC3&OC4(third frame of a period 50 Hz)
.pword (PTGCTRL|StartTmr0) ; step15 period pump
.pword (PTGJMPC0|14) ; step16 counter of pump
.pword (PTGIRQ|3) ; step17 PTGIRQ3->start comp Tx->TMR7->IRQ TMR7->stop comp Tx
.pword (PTGCTRL|StartTmr1) ; step18 start delay to DMA-ADC
.pword (PTGIRQ|0) ; step19 PTGIRQ0->start DMA-ADC/stop comp Rx
.pword (PTGCTRL|EnStepDel) ; step20
.pword 0 ; step21
.pword 0 ; step22
.pword (PTGCTRL|DisStepDel) ; step23
.pword 0 ; step24
.pword 0 ; step25
.pword (PTGCOPY|Literal0) ; step26 restore frame
.pword (PTGIRQ|2) ; step27 PTGIRQ2->set next 3 frames
.pword (PTGJMP|0) ; step28 go to start period
.pword (PTGWLO|OC1Tr) ; step29 wait OC1
.pword (PTGIRQ|1) ; step30 PTGIRQ1->set next frame
.pword (PTGJMP|1) ; step31 go to start second frame
;-----
.pword 0b1100 ; BTE-> OC3&OC4->pump
.pword 997 ; LIMT0=period pump=1000
.pword 45000 ; LIMT1=delay to ADC=770us
.pword 58000 ; LIMSD=1ms (for delay to end of 3-d frame)
.pword tauPump ; LIMC0=count of pump
.pword 1 ; LIMC1=count of frame
.pword 0 ; HOLD=LIMT0
.pword 1 ; ADJ=1
.pword 0 ; LITERAL0
;----------
; W0=указатель на таблицу исполнения модуля PTG
PTGinit:
clr PTGCST
clr PTGCON
clr PTGQPTR
mov W0, W2
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE0
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE1
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE2
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE3
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE4
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE5
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE6
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE7
mov [W2++], W0
mov [W2++], W1
sl W1, # 8, W1
ior W0, W1, W0
mov W0, PTGQUE8
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE9
mov [W2++], W0
mov [W2++], W1
sl W1, # 8, W1
ior W0, W1, W0
mov W0, PTGQUE10
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE11
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE12
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE13
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE14
mov [W2++], W0
mov [W2++], W1
sl W1, #8, W1
ior W0, W1, W0
mov W0, PTGQUE15
mov [W2++], W0
mov W0, PTGBTE
mov [W2++], W0
mov W0, PTGT0LIM
mov [W2++], W1
mov W1, PTGT1LIM
mov [W2++], W0
mov W0, PTGSDLIM
mov [W2++], W0
mov W0, PTGC0LIM
mov [W2++], W0
mov W0, PTGC1LIM
mov [W2++], W0
mov W0, PTGHOLD
mov [W2++], W0
mov W0, PTGADJ
mov [W2], W0
mov W0, PTGL0
bclr IFS9, # PTG0IF
bclr IFS9, # PTG1IF
bclr IFS9, # PTG2IF
bclr IFS9, # PTG3IF
bset IEC9, # PTG0IE
bset IEC9, # PTG1IE
bset IEC9, # PTG2IE
bset IEC9, # PTG3IE
bset PTGCST, # PTGEN
bset PTGCST, # PTGSTRT
return
Вс янв 13, 2019 13:27:17
Вс апр 07, 2019 18:35:24
Вт апр 09, 2019 20:03:16
LPF:
mov #psvpage(TabHamming), W0
mov W0, DSRPAG
mov #psvoffset(TabHamming), W8
mov #arrInput, W10
clr A, [W8]+=2, W4, [W10]+=2, W5
repeat #255
mac W4*W5, A, [W8]+=2, W4, [W10]+=2, W5
sftac A, #6
sac.r A, W0
mov W0, output
return
.......
.......
TabHamming:
.fixed 0.07672, 0.07686, 0.07728, 0.07798, 0.07896, 0.08022, 0.08176, 0.08357
.fixed 0.08566, 0.08802, 0.09066, 0.09357, 0.09675, 0.10020, 0.10392, 0.10789
.fixed 0.11213, 0.11663, 0.12138, 0.12639, 0.13165, 0.13715, 0.14290, 0.14889
.fixed 0.15511, 0.16157, 0.16826, 0.17517, 0.18230, 0.18965, 0.19720, 0.20497
.fixed 0.21294, 0.22110, 0.22946, 0.23801, 0.24674, 0.25564, 0.26472, 0.27396
.fixed 0.28337, 0.29292, 0.30263, 0.31248, 0.32247, 0.33259, 0.34283, 0.35320
.fixed 0.36367, 0.37425, 0.38493, 0.39571, 0.40657, 0.41751, 0.42852, 0.43960
.fixed 0.45074, 0.46193, 0.47317, 0.48445, 0.49577, 0.50710, 0.51846, 0.52983
.fixed 0.54120, 0.55258, 0.56394, 0.57529, 0.58661, 0.59791, 0.60917, 0.62039
.fixed 0.63156, 0.64267, 0.65372, 0.66469, 0.67559, 0.68641, 0.69714, 0.70777
.fixed 0.71830, 0.72872, 0.73902, 0.74921, 0.75926, 0.76918, 0.77896, 0.78859
.fixed 0.79808, 0.80740, 0.81656, 0.82555, 0.83437, 0.84301, 0.85146, 0.85972
.fixed 0.86779, 0.87566, 0.88332, 0.89078, 0.89801, 0.90504, 0.91183, 0.91841
.fixed 0.92475, 0.93085, 0.93672, 0.94235, 0.94773, 0.95286, 0.95774, 0.96237
.fixed 0.96674, 0.97085, 0.97469, 0.97828, 0.98159, 0.98464, 0.98741, 0.98991
.fixed 0.99214, 0.99409, 0.99577, 0.99717, 0.99828, 0.99912, 0.99968, 0.99996
.fixed 0.99996, 0.99968, 0.99912, 0.99828, 0.99717, 0.99577, 0.99409, 0.99214
.fixed 0.98991, 0.98741, 0.98464, 0.98159, 0.97828, 0.97469, 0.97085, 0.96674
.fixed 0.96237, 0.95774, 0.95286, 0.94773, 0.94235, 0.93672, 0.93085, 0.92475
.fixed 0.91841, 0.91183, 0.90504, 0.89801, 0.89078, 0.88332, 0.87566, 0.86779
.fixed 0.85972, 0.85146, 0.84301, 0.83437, 0.82555, 0.81656, 0.80740, 0.79808
.fixed 0.78859, 0.77896, 0.76918, 0.75926, 0.74921, 0.73902, 0.72872, 0.71830
.fixed 0.70777, 0.69714, 0.68641, 0.67559, 0.66469, 0.65372, 0.64267, 0.63156
.fixed 0.62039, 0.60917, 0.59791, 0.58661, 0.57529, 0.56394, 0.55258, 0.54120
.fixed 0.52983, 0.51846, 0.50710, 0.49577, 0.48445, 0.47317, 0.46193, 0.45074
.fixed 0.43960, 0.42852, 0.41751, 0.40657, 0.39571, 0.38493, 0.37425, 0.36367
.fixed 0.35320, 0.34283, 0.33259, 0.32247, 0.31248, 0.30263, 0.29292, 0.28337
.fixed 0.27396, 0.26472, 0.25564, 0.24674, 0.23801, 0.22946, 0.22110, 0.21294
.fixed 0.20497, 0.19720, 0.18965, 0.18230, 0.17517, 0.16826, 0.16157, 0.15511
.fixed 0.14889, 0.14290, 0.13715, 0.13165, 0.12639, 0.12138, 0.11663, 0.11213
.fixed 0.10789, 0.10392, 0.10020, 0.09675, 0.09357, 0.09066, 0.08802, 0.08566
.fixed 0.08357, 0.08176, 0.08022, 0.07896, 0.07798, 0.07728, 0.07686, 0.07672
Пн авг 16, 2021 12:25:16
Пн авг 16, 2021 13:41:26
Пн авг 16, 2021 14:17:49
Пн мар 28, 2022 08:27:15