📄 复件 9851_asm.asm
字号:
.include hardware.inc
.define _9851_PORT P_IOA_Data
.ram
.var FQ_UD,W_CLK,_9851_RESET;
.code
.public _ini_AD9851
_ini_AD9851:.proc
push r1,r5 to [sp];
bp=sp+1;
r1=[bp+7];
r2=[bp+8];
r3=[bp+9];
r4=[bp+10];
[_9851_RESET]=r1;
[FQ_UD]=r2;
[W_CLK]=r3;
[INDATA]=r4;
//_9851_RESET_UP
r2=[_9851_PORT];
r2|=[_9851_RESET];
[_9851_PORT]=r2;
//_9851_RESET_UP
//_9851_RESET_DOWN
r2=[_9851_PORT];
r3=[_9851_RESET];
r3^=0xffff;
r2&=r3;
[_9851_PORT]=r2;
r4=0;
//_9851_RESET_DOWN
pop r1,r5 from [sp];
retf;
.endp
.public _AD9851_ParallelSend
_AD9851_ParallelSend:.proc
push r1,r5 to [sp];
bp=sp+1;
r1=[bp+7];
//FQ_UD_DOWN
r2=[_9851_PORT];
r3=[FQ_UD];
r3^=0xffff;
r2&=r3;
[_9851_PORT]=r2;
r4=0;
//FQ_UD_DOWN
send_data_loop:
//W_CLK_DOWN
r2=[_9851_PORT];
r3=[W_CLK];
r3^=0xffff;
r2&=r3;
[_9851_PORT]=r2;
//W_CLK_DOWN
//senddata
r2=[_9851_PORT];
r2&=0xff00;
r2|=[r1];
[_9851_PORT]=r2;
//senddata
//W_CLK_UP
r2=[_9851_PORT];
r2|=[W_CLK];
[_9851_PORT]=r2;
//W_CLK_UP
r4+=1;
r1+=1;
cmp r4,5;
jne send_data_loop
//FQ_UD_UP
r2=[_9851_PORT];
r2|=[FQ_UD];
[_9851_PORT]=r2;
//FQ_UD_UP
pop r1,r5 from [sp];
retf;
.endp
.public _AD9851_SerialSenddata
_AD9851_SerialSenddata:.proc
push r1,r5 to [sp];
bp=sp+1;
r1=[bp+7];
call _SetToSerialMode;
//FQ_UD_DOWN
r2=[_9851_PORT];
r3=[FQ_UD];
r3^=0xffff;
r2&=r3;
[_9851_PORT]=r2;
r4=0;
//FQ_UD_DOWN
retf;
.endp
.public _add_array
_add_array:.proc
push r1,r5 to [sp];
bp=sp+1;
r1=[bp+7];
r2=[bp+8];
bp=r1;
r3=[bp+2];
r3=r3 lsl 4;
r3=r3 lsl 4;
r3+=[bp+3];
r4=[bp];
r4=r4 lsl 4;
r4=r4 lsl 4;
r4+=[bp+1];
r3+=r2;
r4+=0,carry;
r1=r3;
r1&=0x00ff;
[bp+3]=r1;
r3=r3 lsr 4;
r3=r3 lsr 4;
[bp+2]=r3;
r1=r4;
r1&=0x00ff;
[bp+1]=r1;
r4=r4 lsr 4;
r4=r4 lsr 4;
[bp]=r4;
pop r1,r5 from [sp];
retf;
.endp
.public _ini_system
_ini_system:.proc
push r1,r5 to [sp];
r1=0xffff;
[P_IOA_Dir]=r1;
[P_IOA_Attrib]=r1;
r1=0;
[P_IOA_Data]=r1;
r1=0xe0;
[P_SystemClock]=r1;
pop r1,r5 from [sp];
retf;
.endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -