Last active
December 15, 2015 00:44
-
-
Save mmajewsk/db945f67b7fc513500b6 to your computer and use it in GitHub Desktop.
proj1.asm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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