单片机汇编语言查表实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下面是汇编语言实现楼宇对讲功能的查表实例:

当单片机外部系统发来不同的指令时,便启动查表功能,实现不同的操作,如单片机接收到的指令保存在RXD中,RXD+1保存指令终止符号,如要实现某个操作,外部发来0XA0操作符到RXD中,0XFF到RXD+1中,即开启查表,开始执行下列程序:

MOV A,(RXD_Buf+1)

CJNE A,RXD_Buf,Exit_Receive_Msg_Proc如果为退出指令,则退出

MOV B,RXD_Buf

JmpX_By_Ins Division_Instruction,Run_Instr_Addr子程序

;==================================

Division_Instruction:

DB00H,01H,03H,05H,06H,07H,09H,0AH,13H,14H,15H,16H

DB28H,29H,2AH,2CH,2EH,30H,31H,33H,35H,FAH;FLAG OF END

;==================================

Run_Instr_Addr:

LJMP Call_By_Manger;00H;

LJMP Put_Down_Hook;01H;

LJMP Put_Off_Hook;03H;

LJMP Disable_Calling;05H;

LJMP Enable_Get_Msg;06H;

LJMP There_Are_Msg;07H;

LJMP Call_By_Door;09H;

LJMP FeedBack_Alarm;0AH

LJMP Put_Off_Hook_For_Out;13H;

LJMP Set_Up_Fortify_By_GLC;14H;

LJMP Disable_Alarm_By_GLC;15H;

LJMP Reset_Divi_Password;16H;

LJMP Calling_By_T_Main;28H;

LJMP Hook_On_By_Brother;29H;

LJMP Hook_Off_By_Brother;2AH;

LJMP Hook_On_By_T_Main;2CH;

LJMP Calling_By_Brother;2EH;

LJMP Define_Baud_Rate;30H

LJMP GLC_Proced_Alarm;31H

LJMP Graphic_Msg_In_Main;33H

LJMP Rst_Standart_Rate;35H

Return_Main_Body_For_Divi_Ins:

LJMP Exit_Receive_Msg_Proc;FAH

JmpX_By_Ins MACRO I_Table,F_Table

MOV DPTR,#I_Table将指令表首地址赋给DPTR

LCALL DPTR_Comp_B调用

MOV A,R05此时R05表示查找到的位置

MOV B,#03LJMP指令占三个字节

MUL AB

MOV DPTR,#F_Table将功能地址赋给DPTR,加上要跳转的位置

JMP@A+DPTR找到相应的LJMP子程序,开始执行

ENDM

;=============================

DPTR_Comp_B:;INPUT INSTRUCTION CODE,RETURN R7---INSTRUCTION SEQUENCE

MOV R05,#0从头开始查表

Comp_Next_DPTR:

CLR A

MOVC A,@A+DPTR将指令表首地址赋给A

CJNE A,B,Chk_End_Flag此时B为接收的指令,如A0H,不相等,跳转,如果找到,则退出

SJMP Exit_DPTR_Comp

Chk_End_Flag:

CJNE A,#FAH,Comp_INC_DPTR A不是跳出指令,跳转,往下查表

SJMP Exit_DPTR_Comp

Comp_INC_DPTR:

INC DPTR位置加1

INC R05

SJMP Comp_Next_DPTR查找下一个

Exit_DPTR_Comp:

RET

;=====================================

相关文档
最新文档