Skip to content

Instantly share code, notes, and snippets.

@mmajewsk
Last active December 15, 2015 00:44
Show Gist options
  • Save mmajewsk/db945f67b7fc513500b6 to your computer and use it in GitHub Desktop.
Save mmajewsk/db945f67b7fc513500b6 to your computer and use it in GitHub Desktop.
proj1.asm
MEM "plik.mem"
dac_config DSIO $40
dac_data DSIN $41
data_swap equ S0
opoznij_1u_const EQU 11
reg_1m equ S1
reg_1u equ S2
const_reg_swap equ S3
data_var equ S4
dac_data_var equ S5
frame_ram_iterator equ S6
byte_bit_iterator equ S7
dac_data_input equ S8
flag equ S9
zero equ SA
HIGH_MSB_BYTE EQU %11111111
LOW_MSB_BYTE EQU %00000000
HIGH_LSB_BYTE EQU %11111111
LOW_LSB_BYTE EQU %00001111
int_status DSIO $E0
button_int_mask DSIO $12
int_mask DSIO $E1
buttons DSIO $10
led DSIO $00
;data is stored in ram[0] and ram[1]
;so the ram[0] has msb
;;;DAC COMMUNOication
load flag, %00000000
out flag, int_status
load flag, %00000001
out flag, int_mask
load flag, $FF
out flag, button_int_mask
load zero, 0
load data_swap, %00000100
call sinus_init
call set_CLR
main:
in data_swap, buttons
comp data_swap, %00000100
call Z, sinus
comp data_swap, %00000010
call Z, kwadrat
comp data_swap, %00000001
call Z, piloksztalt
jump main
;;;;;;;;;;;;;;;;;;;;;;;;;;;Steering;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
przerwanie:
in data_swap, buttons
out zero, int_status
out data_swap, led
reti enable
;;;;;;;;;;;;;;;;;;;;;;;;;;;Signals;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
kwadrat:
call kwadrat_high
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call kwadrat_low
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
call opoznij_1m
RET
kwadrat_high:
load dac_data_var, %11111111;;; !!data_msb
store dac_data_var, 2
load dac_data_var, %11111111;;; !!data_lsb
store dac_data_var, 3
call send_frame_to_ADC
ret
kwadrat_low:
load dac_data_var, %00000000;;; !!data_msb
store dac_data_var, 2
load dac_data_var, %00001111;;; !!data_lsb
store dac_data_var, 3
call send_frame_to_ADC
ret
piloksztalt:
call pila_low
call pila_high
RET
pila_low:
load dac_data_var, %00000000;;; !!data_msb
store dac_data_var, 2
load dac_data_var, %00000000;;; !!data_lsb
store dac_data_var, 3
pila_low_petla:
call send_frame_to_ADC
fetch dac_data_var, 3
add dac_data_var, %00000000
store dac_data_var, 3
fetch dac_data_var, 2
addc dac_data_var, %00010000
store dac_data_var, 2
jump NC, pila_low_petla
ret
pila_high:
load dac_data_var, %11111111;;; !!data_msb
store dac_data_var, 2
load dac_data_var, %11111111;;; !!data_lsb
store dac_data_var, 3
pila_high_petla:
call send_frame_to_ADC
fetch dac_data_var, 3
sub dac_data_var, %00000000
store dac_data_var, 3
fetch dac_data_var, 2
subc dac_data_var, %00010000
store dac_data_var, 2
jump NC, pila_high_petla
ret
;;;;Sinusssssssssssssssssssssssssss
sinus:
load flag, 7
sinus_loop:
fetch dac_data_var, flag
store dac_data_var, 2
add flag, 1
fetch dac_data_var, flag
store dac_data_var, 3
add flag, 1
call send_frame_to_ADC
comp flag, 101
jump NZ, sinus_loop
ret
;;;;;;;;;;;;;;;;;;;;;;;;;Whole data sending;;;;;;;;;;;;;;;;;;;;;;;;;;
send_frame_to_ADC:
load dac_data_var, %11111111 ;;; / dont ca
store dac_data_var, 0;;; / re bits
load dac_data_var, %00111111;;; !!address & command
store dac_data_var, 1
call set_CS_high;;low setting is done in other procedures
load frame_ram_iterator, 0
call send_byte_data_to_ADC
load frame_ram_iterator, 1
call send_byte_data_to_ADC
load frame_ram_iterator, 2
call send_byte_data_to_ADC
load frame_ram_iterator, 3
call send_byte_data_to_ADC
call set_CS_high
RET
send_byte_data_to_ADC:
FETCH dac_data_var, frame_ram_iterator
LOAD byte_bit_iterator, 8 ;25d
call send_bit_from_byte_data_to_ADC
RET
send_bit_from_byte_data_to_ADC:
SL0 dac_data_var
LOAD data_var, 0
ADDC data_var, 0
call send_bit_to_ADC
SUB byte_bit_iterator, 1
JUMP NZ, send_bit_from_byte_data_to_ADC
RET
;;;;;;;;;;;BIT SENDING HERE;;;;;;;;;;;;;;;;;;;;;;;;;;
send_bit_to_ADC:
call set_CS_low ;;must be high before and after sending all data
call opoznij_1u
call set_bit
call raise_clock
call read_DAC
call opoznij_1u ; at least 4ns
call fall_clock
ret
set_CLR:
load const_reg_swap, %0100
out const_reg_swap, dac_config
ret
set_CS_low:
load const_reg_swap, %1000
out const_reg_swap, dac_config
ret
set_CS_high:
load const_reg_swap, %1100
out const_reg_swap, dac_config
ret
set_bit:
sl0 data_var
add data_var, %1000
out data_var, dac_config
ret
raise_clock:
add data_var, %0001
out data_var, dac_config
ret
read_DAC:
in dac_data_input, dac_data
ret
fall_clock:
sub data_var, %0001
out data_var, dac_config
ret
;;;;;;;;;;DELAYS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
opoznij_1m: LOAD reg_1m, 25 ;25d
czekaj_1m: CALL opoznij_1u
SUB reg_1m, 1
JUMP NZ, czekaj_1m
RET
opoznij_1u: LOAD reg_1u, opoznij_1u_const
czekaj_1u: SUB reg_1u, 01
JUMP NZ, czekaj_1u
LOAD reg_1u, reg_1u ;NOP
RET
sinus_init:
load dac_data_var, %10000000
store dac_data_var, 7;;2048
load dac_data_var, %00000000
store dac_data_var, 8
load dac_data_var, %10010001
store dac_data_var, 9;;2320
load dac_data_var, %00000000
store dac_data_var, 10
load dac_data_var, %10100001
store dac_data_var, 11;;2588
load dac_data_var, %11000000
store dac_data_var, 12
load dac_data_var, %10110001
store dac_data_var, 13;;2847
load dac_data_var, %11110000
store dac_data_var, 14
load dac_data_var, %11000001
store dac_data_var, 15;;3091
load dac_data_var, %00110000
store dac_data_var, 16
load dac_data_var, %11001111
store dac_data_var, 17;;3316
load dac_data_var, %01000000
store dac_data_var, 18
load dac_data_var, %11011011
store dac_data_var, 19;;3519
load dac_data_var, %11110000
store dac_data_var, 20
load dac_data_var, %11100111
store dac_data_var, 21;;3696
load dac_data_var, %00000000
store dac_data_var, 22
load dac_data_var, %11110000
store dac_data_var, 23;;3843
load dac_data_var, %00110000
store dac_data_var, 24
load dac_data_var, %11110111
store dac_data_var, 25;;3958
load dac_data_var, %01100000
store dac_data_var, 26
load dac_data_var, %11111100
store dac_data_var, 27;;4039
load dac_data_var, %01110000
store dac_data_var, 28
load dac_data_var, %11111111
store dac_data_var, 29;;4085
load dac_data_var, %01010000
store dac_data_var, 30
load dac_data_var, %11111111
store dac_data_var, 31;;4094
load dac_data_var, %11100000
store dac_data_var, 32
load dac_data_var, %11111110
store dac_data_var, 33;;4067
load dac_data_var, %00110000
store dac_data_var, 34
load dac_data_var, %11111010
store dac_data_var, 35;;4004
load dac_data_var, %01000000
store dac_data_var, 36
load dac_data_var, %11110100
store dac_data_var, 37;;3906
load dac_data_var, %00100000
store dac_data_var, 38
load dac_data_var, %11101011
store dac_data_var, 39;;3775
load dac_data_var, %11110000
store dac_data_var, 40
load dac_data_var, %11100001
store dac_data_var, 41;;3613
load dac_data_var, %11010000
store dac_data_var, 42
load dac_data_var, %11010101
store dac_data_var, 43;;3423
load dac_data_var, %11110000
store dac_data_var, 44
load dac_data_var, %11001000
store dac_data_var, 45;;3209
load dac_data_var, %10010000
store dac_data_var, 46
load dac_data_var, %10111001
store dac_data_var, 47;;2974
load dac_data_var, %11100000
store dac_data_var, 48
load dac_data_var, %10101010
store dac_data_var, 49;;2722
load dac_data_var, %00100000
store dac_data_var, 50
load dac_data_var, %10011001
store dac_data_var, 51;;2458
load dac_data_var, %10100000
store dac_data_var, 52
load dac_data_var, %10001000
store dac_data_var, 53;;2187
load dac_data_var, %10110000
store dac_data_var, 54
load dac_data_var, %01110111
store dac_data_var, 55;;1914
load dac_data_var, %10100000
store dac_data_var, 56
load dac_data_var, %01100110
store dac_data_var, 57;;1643
load dac_data_var, %10110000
store dac_data_var, 58
load dac_data_var, %01010110
store dac_data_var, 59;;1379
load dac_data_var, %00110000
store dac_data_var, 60
load dac_data_var, %01000110
store dac_data_var, 61;;1127
load dac_data_var, %01110000
store dac_data_var, 62
load dac_data_var, %00110111
store dac_data_var, 63;;892
load dac_data_var, %11000000
store dac_data_var, 64
load dac_data_var, %00101010
store dac_data_var, 65;;677
load dac_data_var, %01010000
store dac_data_var, 66
load dac_data_var, %00011110
store dac_data_var, 67;;486
load dac_data_var, %01100000
store dac_data_var, 68
load dac_data_var, %00010100
store dac_data_var, 69;;324
load dac_data_var, %01000000
store dac_data_var, 70
load dac_data_var, %00001100
store dac_data_var, 71;;192
load dac_data_var, %00000000
store dac_data_var, 72
load dac_data_var, %00000101
store dac_data_var, 73;;93
load dac_data_var, %11010000
store dac_data_var, 74
load dac_data_var, %00000001
store dac_data_var, 75;;29
load dac_data_var, %11010000
store dac_data_var, 76
load dac_data_var, %00000000
store dac_data_var, 77;;1
load dac_data_var, %00010000
store dac_data_var, 78
load dac_data_var, %00000000
store dac_data_var, 79;;9
load dac_data_var, %10010000
store dac_data_var, 80
load dac_data_var, %00000011
store dac_data_var, 81;;54
load dac_data_var, %01100000
store dac_data_var, 82
load dac_data_var, %00001000
store dac_data_var, 83;;134
load dac_data_var, %01100000
store dac_data_var, 84
load dac_data_var, %00001111
store dac_data_var, 85;;249
load dac_data_var, %10010000
store dac_data_var, 86
load dac_data_var, %00011000
store dac_data_var, 87;;395
load dac_data_var, %10110000
store dac_data_var, 88
load dac_data_var, %00100011
store dac_data_var, 89;;571
load dac_data_var, %10110000
store dac_data_var, 90
load dac_data_var, %00110000
store dac_data_var, 91;;774
load dac_data_var, %01100000
store dac_data_var, 92
load dac_data_var, %00111110
store dac_data_var, 93;;999
load dac_data_var, %01110000
store dac_data_var, 94
load dac_data_var, %01001101
store dac_data_var, 95;;1242
load dac_data_var, %10100000
store dac_data_var, 96
load dac_data_var, %01011101
store dac_data_var, 97;;1500
load dac_data_var, %11000000
store dac_data_var, 98
load dac_data_var, %01101110
store dac_data_var, 99;;1768
load dac_data_var, %10000000
store dac_data_var, 100
ret
ORG $3FF;
jump przerwanie
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment