MOV A , 30H MOV A , # 05H NEXT: MOV 30H , # 20H JZ NEXT ADD A , 30H ED: SJMP $ ANL A , # 80H MOV 30H , A
例3.7根据R3的内容转向对应的程序,R3的内容为0~n,处理程序的入口符号地址分别为
PR0~PRn(n 128) 。
PR0 EQU 0110H INC DPL PR1 EQU 0220H POP ACC PR2 EQU 0330H MOVC A , @ A+DPTR
MOV DPL , A
ORG 0000H MOV DPH , B MOV A , R3 CLR A ADD A , ACC JMP @ A+DPTR MOV DPTR , # TAB TAB: DW PR0 , PR1 , PR2 , , PUSH ACC PRn MOVC A , @ A+DPTR END MOV B , A
例3.8设有5个按键0,1,2,3,4,其编码分别为63AH,47H,65H,70H,8BH,要求根据按下的键转向不同的处理程序,分别为PR0 , PR1 , PR2 , PR3 , PR4,设按键的编码已在B寄存器中,编出程序。 PR0 EQU 0110H JMP @ A+DPTR PR1 EQU 0220H AGAN: POP ACC PR2 EQU 0330H INC A PR3 EQU 0440H CJNE A , # 5 , NEXT
PR4 EQU 0550H SJMP $
ORG 0000H JPT: AJMP PR0 MOV DPTR , # TAB AJMP PR1 MOV A , # 0 AJMP PR2 NEXT: PUSH ACC AJMP PR3 MOVC A , @ A+DPTR AJMP PR4 CJNE A , B , AGAN TAB: DB 3AH , 47H , 65H , 70H , POP ACC 8BH RL A END MOV DPTR , # JPT
3-9设计一个延时10ms的延时子程序,已知单片机的使用的晶振为6MHz 解:机器周期数 ORG 0020H 1 MOV R0,#0AH 1 DL2:MOV R1,#MT
1 DL1:NOP 1 NOP
2 DJNZ R1,DL1 2 DJNZ R0,DL2 RET
内循环DL1到指令DJNZ R1, DL1 的计算: (1+1+2)*2μs *MT=1000μs