单片机复习材料(7)
发布时间:2021-06-05
发布时间:2021-06-05
汇编语言程序CALLASM.ASM——完成50个数据采集并存于BUF位首址的单元。
PUBLIC _CALLASM MOV R0, A MOV @R0, A DFFE SEGMENT CODE MOV R7, #50 INC R0 RSEG DFFE MOV DPTR, #7FF8H DJNZ R7,AGA _CALLASM: AGA:MOV A,#0 POP 00H PUSH 07H MOVX @DPTR, A POP 07H PUSH 00H JB P3.4, $ RET MOV A , R7 MOVX A, @DPTR END 汇编语言程序DAYL.ASM——延时
PUBLIC _DAYL NOP DTE SEGMENT CODE DJNZ R1,LOP1 RSEG DTE ; DJNZ R7,DELA _DAYL : NOP EXIT: RET DELA: MOV R1,#0F8H END LOP1: NOP
4-16 C程序向汇编传递6个参数,汇编完成6个数的相加,将和返回C程序。 ************C_CALL.C*************** #pragma code small char v_e=0x55; *aa =A_ret;} extern int afunc (char v_a,char char v_f=0x98; void main (void ){ v_b,char v_c ,char v_d ,char v_e, int data *aa; char a1,a2,a3; char v_f); int A_ret; a1=0;a2=2;a3=3; void C_call (void) aa=0x33; C_call(); {char v_a =0x11; A_ret a1=1;
char v_b=0x18; =afunc(v_a,v_b ,v_c,v_d,v_e,v_f); a2=3; char v_c=0x33; *aa =A_ret ; while(1); char v_d=0x44; *aa =(int)0; } ***********AFANC.ASM************* PR_AFUNC SEGMENT CODE v_d: DS 1 ADD A,v_e DT_AFUNC SEGMENT DATA v_e: DS 1 ADD A, v_f OVERLAYABLE v_f: DS 1 MOV R7,A ; PUBLIC ?_afunc? BYTE RSEG PR_AFUNC MOV A, #0 PUBLIC _afunc RLC A _afunc; RSEG DT_AFUNC USING 0; MOV R6, A; ?_afunc? BYTE : MOV A,R7; RET v_a : DS 1 ADD A,R5; END v_b: DS 1 ADD A,R3; v_c: DS 1 ADD A,v_d
5-1 设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED亮;开关打开,LED熄灭。 SJMP AGA
JB P1.1,LIG CLR P1.0 LIG:CLR P1.0 SETB P1.0 AGA:SETB P1.1 SJMP AGA