【第22期】观点:IT 行业加班,到底有没有价值?

C51单片机汇编程序问题解决:

原创 2015年11月20日 17:10:04

C51汇编程序出错解决

最近开始学习了一点汇编语言,刚好应课程要求,就来编一些简单的C51程序,结果在定时器中断跳转的时候出错了,错误截图如下:

demo.asm(8): error A51: TARGET OUT OF RANGE

源程序代码块是报错在CJNE指令这里

ORG   000BH
        INC    R1
        CJNE   R1,#4000,MAINLOOP
        CPL    P0.0
        MOV    R1,  #0
        RETI

错误原因:通俗讲是因为MAINLOOP代码块距离这个中断代码块的地址太远,所以超出范围,无法跳转过去,所以要解决就必须中间设置一个类似中转站的地方。

错误解决之后的代码如下:

ORG   000BH
        INC    R1
        CJNE   R1,#4000,0048H
        CPL    P0.0
        MOV    R1,  #0
        RETI
ORG   0048H
        JMP MAINLOOP
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

51单片机 指纹模块 波特率问题解决和命令分析2

波特率问题解决 昨天查到无法通信的原因是因为波特率 指纹模块的波特率默认的是57600,我想把它改小,指纹模块最小的波特率为9600 先要将上位机的波特率改为57600,本来我想用电脑改,但不能...

ubuntu-11.04安装VMware tools遇到找不到C header的问题解决

    装了个ubuntu-11.04版本,用的是VMware精简版本的,所以支持不好。    转载这篇,搞定了   [日期:2011-03-29] 来源:Linux社区  作者:silv

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

sprintf在51单片机中转换字符出错问题解决

sprintf是C语言库中具有转换数据类型的功能函数,出现一种情况, 在51单片机中,定义unsigned  char   temp; 然后 想用串口直接把temp 以十进制数是、形式打印出来,是...

51单片机学习笔记,模拟iic总线连续读写24c02存储器

AT24C02A, 2K SERIAL EEPROM: Internally organized with 32 pages of 8 bytes each,the 2K requires an 8-bit data word address for random word addressing...

AT24C02,04,08... 系列MC51单片机驱动程序

头文件: #ifndef _AT24C_EEPROM_Driver_H#define _AT24C_EEPROM_Driver_H #include <reg52.h>#include <intrins.h>#include "...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)