登录
首页 单片机论坛
回帖 发帖
正文

主题:求助!我是初学的,写了个程序段,请那位好心的大侠帮我看看,谢了!

点击:1112 回复:5

程序写的很烂很粗糙,还请各位大侠耐心看完多给点建议!!
(一)要求:查找在内部RAM的20H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为01H;未找到,则使51H单元置0。
程序:
MOV   R0   #20H
MOV   R5    #30H
LOOP:MOV   A   #00H
       MOV    A   @R0
        SUBB   A   #AAH
       JZ    LOOP1
        INC     R0
       DJNZ    R5    LOOP
       MOV    A    @R0
       SUBB   A   #AAH
       JZ   LOOP1
       MOV   51H   #00H
LOOP1:MOV   51H   #01H
END
(二)要求:查找内部RAM的20H~50H单元中出现00H的次数,并将查到的结果存入51H单元。
程序:
MOV   R0   #20H
MOV   R2   #00H
MOV   R5   #30H
LOOP1:ADDC   R2    #01H
LOOP:MOV   A   #00H
        MOV   A   @R0
        ADD   A   #00H
        JZ      LOOP1
        INC    R0
        DJNZ   R5   LOOP
        MOV   A   @R0
        ADD    A   #00H
        JZ   LOOP1
SUBB   R2   #01H
MOV   51H   R2
END
06-02-08 13:54
对(1)的修改
MOV   R0,#20H
MOV   R5,#31H
LOOP: MOV   A,#00H
mov  psw,#00h
  MOV    A,@R0
       SUBB A,#0AAH      
       JZ    LOOP1
        INC     R0
       DJNZ    R5,LOOP
       MOV 51H,#00H
       SJMP LOOP2
LOOP1:MOV   51H,#01H
LOOP2:END
我觉得用subb不好,会影响到psw位,不如用XRL
MOV   R5,#31H
MOV   A,#00H
LOOP:    MOV    A,@R0
        XRL A,#0AAH      
       JZ    LOOP1
        INC     R0
       DJNZ    R5,LOOP
       SJMP LOOP2
LOOP1:MOV   51H,#01H
LOOP2:END
对(2)程序为:
MOV   R5,#31H
MOV   A,#00H
MOV   51H,#0
LOOP:    MOV    A,@R0
        XRL A,#00        
        INC     R0
        JNZ    LOOP1
        INC    51H
LOOP1:   DJNZ    R5,LOOP
LOOP2:END
希望对你有帮助表情
06-02-08 18:12
我个人是觉得用在这个程序段里是可以用SUBB的,因为只是减一的操作,我是从30H开始减的,不会出现溢出,这样应该不会有什么问题吧!!你提到的用XRL,我不是很明白,还请大侠指点一下!!表情
06-02-09 10:25
看看这个呢
MOV  R0,#020H
LOOP: MOV A,@R0
 CJNE A,#0AAH,LOOP1
 MOV  51H,#01H
AJMP LOOP2
LOOP1: INC R0
 MOV A,R0
CJNE  A,#051H,LOOP
 MOV  51H,#00H
LOOP1:
END
06-02-09 21:14
纠正一下,最后一个LOOP1应该是LOOP2
06-02-09 21:16
我看了你回给我的另一个帖子,我也知道这样学太慢了!我最近看了写keil的资料,你觉得用这个软件模拟开发学起来怎么样??
多谢你给我的程序的修改,以后要是有什么程序还请你多指点!!
06-02-11 17:27

工控新闻

更多新闻资讯