编辑: 霜天盈月祭 2018-11-26

设置 TABLE1 地址中间字节. B0MOV Z,#TABLE1$L ;

设置 TABLE1 地址低字节. B0MOV A,BUF ;

Z=Z+BUF. B0ADD Z, A B0BTS1 FC ;

检查进位标志. JMP GETDATA ;

FC=0. INCMS Y ;

FC=1. NOP GETDATA: ;

MOVC ;

存储数据,如果 BUF=0,数据为 0035H. ;

如果 BUF=1,数据=5105H. ;

如果 BUF=2,数据=2012H. … TABLE1: DW 0035H ;

定义数据表(16 位)数据. DW 5105H DW 2012H … 2.1.1.4 跳转表 跳转表能够实现多地址跳转功能.由于 PCL 和ACC 的值相加即可得到新的 PCL,因此,可以通过对 PCL 加上不同的 ACC 值来实现多地址跳转.ACC 值若为 n,PCL+ACC 即表示当前地址加 n,执行完当前指令后 PCL 值还会自加 1,可参考以下范例.如果 PCL+ACC 后发生溢出,PCH 则自动加 1.由此得到的新的 PC 值再 指向跳转指令列表中新的地址.这样,用户就可以通过修改 ACC 的值轻松实现多地址的跳转. * 注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算.当PCL+ACC 后如有进位,PCH 的值会自动加 1. PCH-ACC 后若有借位,PCH 的值将保持不变,用户在设计应用时要加以注意. ? 例:跳转表. ORG 0100H ;

跳转表从 ROM 前端开始 B0ADD PCL,A ;

PCL=PCL+ACC,PCL 溢出时 PCH 加1. JMP A0POINT ;

ACC=0,跳至 A0POINT. JMP A1POINT ;

ACC=1,跳至 A1POINT. JMP A2POINT ;

ACC=2,跳至 A2POINT. JMP A3POINT ;

ACC=3,跳至 A3POINT. 深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2711B(文件编号:S&

CIC1047) 八位单片机 第9页共73 页 单片机提供一个宏以保证可靠执行跳转表功能,它会自动检测 ROM 边界并将跳转表移至适当的位置.但采 用该宏程序会占用部分 ROM 空间. ? 例:宏 MACRO3.H 中, @JMP_A 的应用. B0MOV A,BUF0 ;

BUF0 从0至4. @JMP_A

5 ;

列表个数为

5 JMP A0POINT ;

ACC=0,跳至 A0POINT. JMP A1POINT ;

ACC=1,跳至 A1POINT. JMP A2POINT ;

ACC=2,跳至 A2POINT. JMP A3POINT ;

ACC=3,跳至 A3POINT. 如果跳转表恰好位于 ROM BANK 边界处(00FFH~0100H) ,宏指令 @JMP_A 将调整跳转表到适当的位 置(0100H) . ? 例:如果跳转表跨越 ROM 边界,将引起程序错误. @JMP_A MACRO VAL IF (($+1)! &

0XFF00)VAL))! &

0XFF00) JMP ($|0XFF) ORG ($|0XFF) ENDIF ADD PLC, A ENDM * 注: VAL 为跳转表列表中列表个数. ? @JMP_A 运用举例 ;

编译前 ROM 地址 B0MOV A,BUF0 ;

BUF0 从0到4. @JMP_A

5 ;

列表个数为 5. 00FDH JMP A0POINT ;

ACC=0,跳至 A0POINT. JMP A1POINT ;

ACC=1,跳至 A1POINT. JMP A2POINT ;

ACC=2,跳至 A2POINT. JMP A3POINT ;

ACC=3,跳至 A3POINT. ;

编译后 ROM 地址 B0MOV A,BUF0 ;

BUF0 从0到4. @JMP_A

5 ;

列表个数为 5. JMP A0POINT ;

ACC=0,跳至 A0POINT. JMP A1POINT ;

ACC=1,跳至 A1POINT. JMP A2POINT ;

ACC=2,跳至 A2POINT. JMP A3POINT ;

ACC=3,跳至 A3POINT. 2.1.1.5 CHECKSUM 计算 ROM 的最后一个地址是系统保留区,用户应该在计算 Checksum 时跳过该区域. 深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2711B(文件编号:S&

CIC1047) 八位单片机 第10 页共73 页2.1.2 编译选项表(CODE OPTION) 编译选项 内容 功能说明 High_Clk IHRC_16M 高速时钟采用内部 16MHz RC 振荡电路,XIN/XOUT(P0.3/P0.2)为普通的 I/O 引脚. RC 外部高速时钟振荡器采用廉价的 RC 振荡电路,XOUT(P0.2)为普通的 I/O 引脚. 12M X'

tal 外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如12MHz) . 4M X'

tal 外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如4MHz) . Watch_Dog Always_On 时钟开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态. Enable 开启看门狗定时器,但在睡眠模式和绿色模式下关闭. Disable 关闭看门狗定时器. Fcpu Fhosc/1 指令周期=1 个时钟周期,必须关闭杂讯滤波功能. Fhosc/2 指令周期=2 个时钟周期,必须关闭杂讯滤波功能. Fhosc/4 指令周期=4 个时钟周期. Fhosc........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题