Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
; Assemble with AVRASM2 only - 64-bit integer constant calculation precision required
.equ xtal = 160000000 ; XTAL frequency in 0.1 Hz units
.equ freq = 719991 ; Output frequency in 0.1 Hz units
.equ ndds = 7 ; # of CPU clocks per single DDS loop
.equ delta = ((65536*65536*ndds*freq)/xtal) ; Phase acc delta value for a given output frequency
.equ DDRB = 0x17 ; SFRs for Tiny2313
.equ PORTB = 0x18 ;
.cseg
main:
sbi DDRB,7 ; PORTB.7 = frequency output
ldi r16,byte1(delta); Load a 32-bit delta value to r16..r19
ldi r17,byte2(delta)
ldi r18,byte3(delta)
ldi r19,byte4(delta)
dds: ; Main DDS loop, 7 CPU clocks per iteration
add r20,r16 ; Add a 32-bit delta value to a 32-bit phase accumulator r20..r23
adc r21,r17
adc r22,r18
adc r23,r19
out PORTB,r23 ; PORTB.7 = 32-bit phase accumulator MSb
rjmp dds
.exit