找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6472|回复: 7
打印 上一主题 下一主题
收起左侧

救命 错了 我不会改

[复制链接]
跳转到指定楼层
楼主
ID:9021 发表于 2009-3-15 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个流水灯....调试时 JMP EXT0   JMP EXT1   CALL DELAY   错误!请高手指点



ORG 00H
JMP START
ORG 03H
JMP EXT0
ORG 13H
JMP EXT1
START: MOV IE, #10000101B
MOV IP, #00000100B
MOV TCON, #00000000B
MOV SP, #70H
MOV A, #00
MOV P1, A
MOV A,#00
LOOP: MOV P1, A
CALL DELAY
CPL A
JMP LOOP
EXTO: PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
MOV R3, #03
LOOP1: MOV A, #0FFH
CLR C
MOV R2, #08H
LOOP2: RLC A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP2
MOV R2, #07
LOOP3: RRC A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP3
DJNZ R3, LOOP1
POP PSW
POP ACC
RETI
ETX1: PUSH ACC
PUSH PSW
SETB RS1
CLR RS0
MOV R3, #03
LOOP4: MOV A, #0FCH
MOV R2, #06
LOOP5: RL A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP5
MOV R2, #06
LOOP6: RR A
MOV P1,A
CALL DELAY
DJNZ R2, LOOP6
DJNZ R3, LOOP4
POP PSW
POP ACC
RETI
RELAY: MOV R5, #20
D1: MOV R6, #20
D2: MOV R7, #248
DJNZ R7, $
DJNZ R6, D2
DJNZ R5, D1
RET
END

如何改呢 我是自学的
尝试改 但不知从那下手
情高手指点迷津
谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:9819 发表于 2009-3-18 10:48 | 只看该作者
现在都用C语言了,用汇编的比较少了啊
回复

使用道具 举报

板凳
ID:9875 发表于 2009-3-19 01:16 | 只看该作者

我不知道是不是还有其他人也会碰到这种错误
我简单的提一下
 写程序的风格 问题 不知道LZ 是自学的汇编 还是在大学生 在笑学习的
  我想对你说一句 你写程序很烂  希望你别见气
    做为规范  规范这个东西 并不是说 它很牛 我们得照着做
    而是就像我们沟通的语言一样 大家都遵守规范了 我们才能更有效的沟通
     LZ 的程序 很乱 放进UV2 首先  一个程序 没有一条备注
      这里我建议刚学写程序 时 就最好学着 给程序加注释 在最开始的时候 你觉得很简单 不必要
       但是到了后来 你写一个 上千条的汇编 行的程序时 你就会发现 你去吃了饭  陪女朋友去看场 电影 和朋友打打篮球 回来 你连自己写的程序都要花很大的时间去理顺里面的各个跳转 各个框架
         这也是为什么你看但饭是搞计算机程序设计的东西 经常赶通宵 加班   思路不能段  不然又会花很多的时间去整理清楚 
多的话不说了 话有点直 希望你不要介意 
  改好的程序   
  我贴出来 你自己看吧  
  标号 顶格 代码缩进对齐
  整个程序 整齐  归整   尽量多加一些备注 至少10%    




    

回复

使用道具 举报

地板
ID:9875 发表于 2009-3-19 01:16 | 只看该作者

;-----------------------------------------
;流水灯测试程序
;时间:---
;作者;---
;说明:----
;-----------------------------------------

     ORG 00H
     JMP START
     ORG 03H
     JMP EXTO   ;03H是外部中断0的入口地址 。。。。。。。。。。 这里应该是 0B 和1B
     ORG 13H    ;13H是外部中断1的入口地址 。。。。。。。。。。
     JMP ETX1
;-----------------------------------------
;主程序
;-----------------------------------------

START: MOV IE, #10000101B 
     MOV IP, #00000100B
     MOV TCON, #00000000B 
     MOV SP, #70H
     MOV A, #00
     MOV P1, A
     MOV A,#00
LOOP: MOV P1, A
     CALL DELAY
     CPL A
     JMP LOOP

;-----------------------------------------
;定时器0中断子程序
;-----------------------------------------

EXTO: PUSH ACC
     PUSH PSW
     SETB RS0
     CLR RS1
     MOV R3, #03
LOOP1: MOV A, #0FFH
     CLR C
      MOV R2, #08H
LOOP2: RLC A
     MOV P1, A
     CALL DELAY
     DJNZ R2, LOOP2
     MOV R2, #07
LOOP3: RRC A
     MOV P1, A
     CALL DELAY
     DJNZ R2, LOOP3
     DJNZ R3, LOOP1
     POP PSW
     POP ACC
      RETI
;-----------------------------------------
;定时器1中断子程序
;-----------------------------------------
ETX1: PUSH ACC
     PUSH PSW
     SETB RS1
     CLR RS0
     MOV R3, #03
LOOP4: MOV A, #0FCH
     MOV R2, #06
LOOP5: RL A
     MOV P1, A
     CALL DELAY
     DJNZ R2, LOOP5
     MOV R2, #06
LOOP6: RR A
      MOV P1,A
      CALL DELAY
      DJNZ R2, LOOP6
      DJNZ R3, LOOP4
      POP PSW
      POP ACC
      RETI
;-----------------------------------------
;延时子程序
;-----------------------------------------
DELAY:
      MOV R5, #20
  D1: MOV R6, #20
  D2: MOV R7, #248
      DJNZ R7, $
      DJNZ R6, D2
      DJNZ R5, D1
      RET
END

回复

使用道具 举报

5#
ID:11030 发表于 2009-4-11 15:32 | 只看该作者

ORG 00H
JMP START
ORG 0003H
JMP EXT0
ORG 0013H
LJMP EXT1
START: MOV IE, #10000101B
MOV IP, #00000100B
MOV TCON, #00000000B
MOV SP, #70H
MOV A, #00
MOV P1, A
MOV A,#00
LOOP: MOV P1, A
CALL DELAY
CPL A
JMP LOOP
EXT0: PUSH ACC
PUSH PSW
SETB RS0
CLR RS1
MOV R3, #03
LOOP1: MOV A, #0FFH
CLR C
MOV R2, #08H
LOOP2: RLC A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP2
MOV R2, #07
LOOP3: RRC A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP3
DJNZ R3, LOOP1
POP PSW
POP ACC
RETI
EXT1: PUSH ACC
PUSH PSW
SETB RS1
CLR RS0
MOV R3, #03
LOOP4: MOV A, #0FCH
MOV R2, #06
LOOP5: RL A
MOV P1, A
CALL DELAY
DJNZ R2, LOOP5
MOV R2, #06
LOOP6: RR A
MOV P1,A
CALL DELAY
DJNZ R2, LOOP6
DJNZ R3, LOOP4
POP PSW
POP ACC
RETI
DELAY: MOV R5, #20
D1: MOV R6, #20
D2: MOV R7, #248
DJNZ R7, $
DJNZ R6, D2
DJNZ R5, D1
RET
END

改好的,但不知道你的程序对不对,注意标号中的O和0及标号的写法!

回复

使用道具 举报

6#
ID:6343 发表于 2009-4-19 22:36 | 只看该作者
一直强调注释的
楼上正解

楼主的程序要看懂至少要半个小时
回复

使用道具 举报

7#
ID:17977 发表于 2009-10-11 19:48 | 只看该作者

顶!楼上的。

回复

使用道具 举报

8#
ID:15867 发表于 2009-10-26 09:26 | 只看该作者

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h>
void delay(void)      //延时子程序
{
 unsigned int i,j;    //循环延时
 for(i=0;i<400;i++)
 {
  for(j=0;j<121;j++)
  {;}
  }
}
void main(void)      //主程序
{
  uchar code ledp[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00,0xff,
             0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xff,
          0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x00,0xff,
          0x3f,0x9f,0xcf,0xe7,0xf3,0xf9,0xfc,0x00,0xff,
          0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x00,0xff,
          0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0x00,0xff,
          0xf0,0xe1,0xc3,0x87,0x0f,0x00,0xff,
          0x0f,0x87,0xc3,0xe1,0xf0,0x00,0xff,
          0xe7,0xc3,0x81,0x00,0xff,
          0x81,0xc3,0xe7,0x00,0xff,
             0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff,0x00,0xff,
                         0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0xff,0x00,0xff,
          0x00,0xff,0x00,0xff};//预定的写入P1的值
  uchar ledi;   //定义一个变量
  while(1)
  {
   P1=ledp[ledi];    //P1口读取预定值
   delay();       //调用延时程序
   ledi++;       //延时一次后读入下一个值
   if(ledi==104)      //如果读到最后一个数值
   {
   ledi=0;        //则将变量置0,从头开始
   }
   }                  
}

 

献丑了

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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