找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 697|回复: 5

汇编程序编译出错

[复制链接]
发表于 2007-4-11 21:20:46 | 显示全部楼层 |阅读模式
我的一个和上位机LV通讯的单片机的程序编译老是提示一个错误,请问是怎么回事?这个地方不应该错啊?就是倒数第二句红色的部分!调了很长时间,就是不行!帮忙看看》
ORG 0000H
LJMP START
ORG 001BH
INT:
  mov     a, 31H
   jnz     Goon
   dec      30H
Goon:
   dec      31H
   mov     a, 30H
   orl     a, 31H
   jnz     Exit           ; 100us *10000记数器不为 0, 返回
   
   mov      30H, #27H
   mov      31H, #10H
   CLR      TR1          ;到1S停止定时
   CLR      TR0          ;到1S停止记数
   mov      R3, TL0            ; 将记数结果送R3
   MOV      TH0,#0
   MOV      TL0,#0
   mov      TH1, #9CH
   mov      TL1, #9CH
   SETB     TR1          ;重新开始记数
   SETB     TR0          ;重新开始定时
Exit:
   reti
tongxun:      
MOV SCON,#50H ;设置成串口1方式   :说明:下位机接收到AF后,进入发送状态,把R3中的数据发送出去
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV TH1,#0FDH ;波特率9600
MOV TL1,#0FDH
SETB TR1      ;启动定时器T1
              ;以上完成通讯初始化设置
L3:JNB RI,L3
    CLR RI
    MOV A,SBUF
    CJNE A,#0AFH,L3
      
L2:MOV A,r3 ;将16进制的字符64发送到串口
MOV SBUF,A    ;将AF通过串口发送出去
L1:JNB TI,L1
    CLR TI
acall DELAY10
AJMP START
RET
DELAY10:      ;10毫秒延时子程序
MOV R4,#0ffh
D2:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET


START:
mov tmod,#00100110;t1定时器模式2,t0计数器模式2,最大计数255
mov th0,#0
mov tl0,#0
mov th1,#9ch;100微秒定时,初值156
mov tl1,#9ch
mov ie,#10001000;EA=1,ET1=1,允许T1中断
MOV 30H,#27H;10000次计数共一秒
MOV 31H,#10H
SETB TR1
SETB TR0
DENGDAI:
   JB P1.1,DENGDAI
    AJMP TONGXUN
END

[ 本帖最后由 haobo324 于 2007-4-11 21:21 编辑 ]
发表于 2007-4-11 22:53:37 | 显示全部楼层
哦,原来是汇编,真的是无能为力了,汇编指令都忘光光了,如果是C就可以帮上点忙!真的抱歉,看有没有熟汇编的朋友看一下,谢谢!
回复 顶

使用道具 举报

发表于 2007-4-12 09:41:16 | 显示全部楼层
现在正在C51,汇编也差不多忘光了
回复 顶

使用道具 举报

发表于 2007-4-13 12:39:07 | 显示全部楼层
貌似jb是不能这么用的,它只能对某些特定的bit位进行判断,你要先把这个端口的值送入到那里,好像是c什么的,就是单片机里的位寄存器 很多年前的事情了,说的不一定对

就如32汇编下有个跳转判断是JCXZ,就是对cx寄存器判断的。。所以判断前你要用move指令把你的变量传送到cx里
回复 顶

使用道具 举报

发表于 2007-4-19 21:06:49 | 显示全部楼层
在判断P1.1的状态前即DENGDAI:JB P1.1,DENGDAI前要对P1口置位.mov p1,#0FFH.
回复 顶

使用道具 举报

发表于 2007-4-19 21:25:58 | 显示全部楼层
ORG 0000H
LJMP START
ORG 001BH
LJMP INT_0
ORG 0040H
START:
mov tmod,#00100110B;t1定时器模式2,t0计数器模式2,最大计数255
mov th0,#0
mov tl0,#0
mov th1,#9ch;100微秒定时,初值156
mov tl1,#9ch
mov ie,#10001000B;EA=1,ET1=1,允许T1中断
MOV 30H,#27H;10000次计数共一秒
MOV 31H,#10H
SETB TR1
SETB TR0
MOV P1,#0FFH
DENGDAI:
   JB P1.1,DENGDAI
tongxun:      
MOV SCON,#50H ;设置成串口1方式   :说明:下位机接收到AF后,进入发送状态,把R3中的数据发送出去
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV TH1,#0FDH ;波特率9600
MOV TL1,#0FDH
SETB TR1      ;启动定时器T1
              ;以上完成通讯初始化设置
L3:JNB RI,L3
    CLR RI
    MOV A,SBUF
    CJNE A,#0AFH,L3
      
L2:MOV A,r3 ;将16进制的字符64发送到串口
MOV SBUF,A    ;将AF通过串口发送出去
L1:JNB TI,L1
    CLR TI
acall DELAY10
AJMP START
INT_0:
  mov    a, 31H
   jnz     Goon

   dec      30H
Goon:
   dec      31H
   mov     a, 30H
   orl     a, 31H
   jnz     Exit           ; 100us *10000记数器不为 0, 返回
   
   mov      30H, #27H
   mov      31H, #10H
   CLR      TR1          ;到1S停止定时
   CLR      TR0          ;到1S停止记数
   mov      R3, TL0            ; 将记数结果送R3
   MOV      TH0,#0
   MOV      TL0,#0
   mov      TH1, #9CH
   mov      TL1, #9CH
   SETB     TR1          ;重新开始记数
   SETB     TR0          ;重新开始定时
Exit:reti
DELAY10:      ;10毫秒延时子程序
MOV R4,#0ffh
D2:
MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET

END
好久没写汇编了,只是大体修改了一下,没调试.我看你的程序太乱,分布不合理,还有一些小细节要注意.中断可能也有问题.
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-30 05:07 , Processed in 0.050934 second(s), 8 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表