标题: 学习51单片机汇编,一个编译错误,求指正 [打印本页]

作者: holikey    时间: 2020-6-28 21:04
标题: 学习51单片机汇编,一个编译错误,求指正
把demo.asm最后定义表的指令注释可以编译链接,
打开注释可以编译,链接有错误,不清楚哪里问题,设置已经是最大内存程序空间模型了,
哪位有空帮看下。。。
  1. $include (delay.inc)
  2. org 0x00
  3. ajmp start

  4. org 0x0b
  5. ajmp time0_isr

  6. org 0x30
  7. ;********************************main****************************************
  8. start:
  9.         mov 30h,#0h
  10.     acall time0_init
  11.         
  12.         acall uart_init
  13.         
  14. loop:nop
  15.         ajmp loop
  16. ;****************************************************************************
  17.         
  18.         
  19.         
  20.         
  21.         
  22. ;*****************************************
  23. ;funtion name: time0_isr
  24. ;describe:
  25. ;*****************************************
  26. time0_isr:
  27.         push acc
  28.         push psw
  29.         inc 30h
  30.         mov a,30h
  31.         cjne a,#20,t0_ret
  32.         cpl p1.0
  33.         mov sbuf,#0xaa    ;----------tx 0xaa
  34.         mov 30h,#0h
  35.         t0_ret:        
  36.             mov th0,#0x3c
  37.                 mov tl0,#0xb0
  38.                 pop psw
  39.                 pop acc
  40.         reti
  41.         

  42.         
  43. ;*****************************************
  44. ;funtion name: uart_init
  45. ;describe:
  46. ;*****************************************
  47. uart_init:    ;4800 ;boud = t1/32
  48.     mov scon,#0x50  ;uart mode:01
  49.         anl tmod,#0x0f
  50.         orl tmod,#0x20  ;t1 mode2
  51.         mov pcon,#0x80  ;double boud
  52.         mov th1,#0xf3   ;8bits auto load
  53.         mov tl1,#0xf3
  54.         clr es
  55.         setb ea
  56.         setb tr1
  57.         ret
  58. org 0xc800 ;50k start
  59. db  0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71        

  60. end
复制代码

5_查表-编译有错误.rar

21.38 KB, 下载次数: 4


作者: csmyldl    时间: 2020-6-29 07:39
org 0xc800 ;50k start  与选择的单片机有关,最大存储器是多大,8K地址是0x1FFF,DB所定义的是显示段码,贴出来的程序未看到用到,若真要用,只需在DB前加一个标号就可以了,应用时直接用标号地址,不必固定定义到C800H地址
作者: csmyldl    时间: 2020-6-29 07:41
实际其原因是所定义的地址超过了ROM的最大地址
作者: holikey    时间: 2020-6-29 11:28
csmyldl 发表于 2020-6-29 07:39
org 0xc800 ;50k start  与选择的单片机有关,最大存储器是多大,8K地址是0x1FFF,DB所定义的是显示段码,贴 ...

单片机stc89c816,程序空间62k,嗯,那个是段码,我试着点数码管的,但发现org定义在2k后面就会报错,不知道是我设置不对还是代码不对
作者: holikey    时间: 2020-6-29 11:29
csmyldl 发表于 2020-6-29 07:41
实际其原因是所定义的地址超过了ROM的最大地址

我猜也是这个原因,但是不知道怎么改
作者: holikey    时间: 2020-6-29 11:42
holikey 发表于 2020-6-29 11:28
单片机stc89c816,程序空间62k,嗯,那个是段码,我试着点数码管的,但发现org定义在2k后面就会报错,不知 ...

stc89c516,打错了,额
作者: 单片机爱好者223    时间: 2020-6-30 13:44
编译器没有和谐,代码限制2K
作者: holikey    时间: 2020-7-1 10:01
找到原因了,设置偏上rom到0x7fff的选项不能打钩,只选最大64krom模型就行了
作者: 烈火    时间: 2020-7-1 10:14
哦!在设置偏上rom到0x7fff的选项不能选上,只要选最大64krom模型就行了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1