.include "m16def.inc"
.cseg
.org 0
jmp start
.org ovf0addr
jmp t0int
.org icp1addr
jmp t0cp
.org $30
dada:
.db 21,24,27,30,34,37,40,43,46,49,52,55,58,61,63,66,69,72,74,77,80,82,84,87,89,91,93,96,98,99,101,103,105,106,108,109,111,112,113,114,115,116,117,117,118,119,119,119,119,119,119,119,119,119,119,118,117,117,116,115,114,113,112,111,109,108,106,105,103,101,99,98,96,93,91,89,87,84,82,80,77,74,72,69,66,63,61,58,55,52,49,46,43,40,37,34,30,27,24,21
start:
ldi r20, $4
ldi r21, $5f
out sph, r20
out spl, r21
;call init0
call init1
call iniport
bset i
here:
rjmp here
init0:
in r20, tccr0
ldi r21, $1
or r20, r21
ldi r21, $f9
and r20, r21
out tccr0, r20
in r20, timsk
ldi r21, $1
or r20, r21
out timsk, r20
ret
init1:
ldi r20, $a2
out tccr1a, r20
ldi r20, $11
out tccr1b, r20
ldi r20, 00
ldi r21, 50
out ocr1ah, r20
out ocr1al, r21
out ocr1bh, r20
out ocr1bl, r21
ldi r21, 150
out icr1h, r20
out icr1l, r21
in r20, timsk
ldi r21, $20
or r20, r21
out timsk, r20
ret
iniport:
ldi r20, $ff;
out ddrb, r20;
ldi r20, 255
out ddrd, r20
out portd, r20
ret
t0int:
in r20, portb
inc r20
out portb, r20
reti
t0cp:
;count = r30
;temp = r19
;zf = T in sreg
cpi r30, $c4
brne onwheel
overwheel:
ldi r31, $00
ldi r30, $60
in r20, sreg
ldi r21, $40
eor r20, r21
out sreg, r20
onwheel:
lpm r19, z+
brts zheng
brtc fan
zheng:
ldi r20, 1
out ocr1bh, r20
out ocr1bl, r20
ldi r20, 00
out ocr1ah, r20
out ocr1al, r19
reti
fan:
ldi r20, 1
out ocr1ah, r20
out ocr1al, r20
ldi r20, 00
out ocr1bh, r20
out ocr1bl, r19
reti
上傳一份完整的SPWM code in ASM,也旨在提高國(guó)人的設(shè)計(jì)水平
全部回復(fù)(15)
正序查看
倒序查看
@courier
zack如果你看到的話(huà),向你表示致意.用AVRstdio4編譯.這是個(gè)表長(zhǎng)為100的spwm發(fā)生器的源程序,我編的,用t1的兩路比較器分別輸出正反半周期的脈沖,好處是可以直接用于互補(bǔ)型的功率輸出,表中死區(qū)已經(jīng)留出來(lái)了.如果需要不同波形,可以通過(guò)該表方便的進(jìn)行調(diào)整.如果希望交流,可以和我聯(lián)系:wql81@sohu.com
courier,not bad!
I think it would be much better if you do some remarks after every instruction.
qq 27579653
I think it would be much better if you do some remarks after every instruction.
qq 27579653
0
回復(fù)