论坛风格切换切换到宽版
  • 4337阅读
  • 26回复

菜鸟问个问题 [复制链接]

上一主题 下一主题
离线QIE
 
发帖
11291
只看楼主 倒序阅读 0楼 发表于: 2009-07-14
我对编程一窍不通,只是把别人的程序改改,为什么都是1的这行led没有显示暗而使led有闪光效果?
led_table:           ;led花样展示数据定义
           db 00000000b
           db 00000000b
           db 01111111b
           db 11111111b      ;为什么这行不会显示?
           db 00000000b
    end
离线zhangjw
发帖
46
只看该作者 1楼 发表于: 2009-07-14
看你的led数码管是共阳还是共阴的?
离线BA5RW
发帖
48263
只看该作者 2楼 发表于: 2009-07-14
改天过来,这些简单的控制很容易弄明白。
您把整个程序发上来。
离线QIE
发帖
11291
只看该作者 3楼 发表于: 2009-07-14
与led的极性没关系,led会亮,就是全部为1的这行不会显示。
;以查表方式控制的6种不相同的流水灯
;******************************************************************
;* date : 2004.4.20 ----------------------------------------------*
;* support mb: 020-34007281 e-mail:c51cn@163.com---------     --*
;* create by :dengdewu   http://www.c51.cn   更多例程请登陆------*
;* 网站单片机学习资料同步更新,敬请新老朋友随时关注 --------------*
;******************************************************************
end_data equ 0ffh         ;定义花样展示数据字节地址
    org   0030h         ;程序由30开始执行
    jmp   ddw
ddw:   mov   sp,#60h       ;设置堆栈指针至ram地址60h
again:                 ;循环标号
    mov   dptr,#led_table ;加载led花样展示数据起始地址
loop: clr   a           ;累加器清0
    movc   a,@a+dptr     ;加载led花样展示数据起始地址
    cjne   a,#end_data,show ;判断所加载数据是否为结束字节
    jmp   again         ;重新执行led花样展示
show:
    mov   p2,a         ;由p2输出led花样展示九据
    mov   r5,#30
    call   delay         ;延迟0.3s
    inc   dptr         ;指到下一个led花样展示地址
    jmp   loop         ;再加载led花样展示数据
delay:                 ;延迟子程序
    mov   r6,#50
s1:   mov   r7,#100
    djnz   r7,$
    djnz   r6,s1
    djnz   r5,delay
    ret
led_table:               ;led花样展示数据定义
           db 00000000b   ;会亮
           db 00000000b   ;会亮
           db 01111111b   ;会亮一只,如果去掉这行,就没有闪光效果了
           db 11111111b   ;为什么这行不会显示?
           db 00000000b   ;会亮
    end
离线QIE
发帖
11291
只看该作者 4楼 发表于: 2009-07-14
我是改了高位刹车灯的,想多搞些花样http://blog.sina.com.cn/s/blog_49a880380100drjy.html
离线BA5RW
发帖
48263
只看该作者 5楼 发表于: 2009-07-14
cjne a,#end_data,show ;判断所加载数据是否为结束字节
这一条决定了db 11111111b ;为什么这行不会显示?


因为,#end_data=#0ffh=#11111111b
所以执行cjne a,#end_data,show ;判断所加载数据是否为结束字节
的时候就跳到again重新开始,不会去显示11111111b.

你想实现什么,我可以写一段试试.

我还没睡醒,估计是这样吧.
离线BG2IVR
发帖
243
只看该作者 6楼 发表于: 2009-07-14
完了,已经看不懂汇编了
离线QIE
发帖
11291
只看该作者 7楼 发表于: 2009-07-14
这东西我不懂,只想搞出来8个led全亮-全暗-全亮-全暗,这个效果。
离线BG2IVR
发帖
243
只看该作者 8楼 发表于: 2009-07-14
如果你需要的话我可以给你写个c语言的
离线QIE
发帖
11291
只看该作者 9楼 发表于: 2009-07-14
'
如果你需要的话我可以给你写个c语言的
'
谢谢!我找的这个就是因为可以自己改数据,写进去显示很多花样的,c语言的我不会改。
现在编了这么多,显示出来还不错,就是不知道能搞多长?
  
led_table:               ;led花样展示数据定义
           db 00000000b
           db 00000000b
           db 11110000b
           db 00001111b
           db 11110000b
           db 00001111b
           db 11110111b
           db 11100011b
           db 11000001b
           db 10000000b
           db 00000001b
           db 10000001b
           db 11000011b
           db 11100111b
           db 11110111b
           db 01111111b
           db 10111111b
           db 11011111b
           db 11101111b
           db 11110111b
           db 11111011b
           db 11111101b
           db 11111110b
           db 11111101b
           db 11111011b
           db 11110111b
           db 11101111b
           db 11011111b
           db 10111111b
           db 01111111b
           db 00111111b
           db 00011111b
           db 10001111b
           db 11000111b
           db 11100011b
           db 11110001b
           db 11111000b
           db 11111100b
           db 11111110b
           db 11111100b
           db 11111000b
           db 11110001b
           db 11100011b
           db 11000111b
           db 10001111b
           db 00011111b
           db 00111111b
           db 01111111b
           db 10111110b
           db 11011101b
           db 11101011b
           db 11110111b
           db 11101011b
           db 11011101b
           db 10111110b
           db 11011101b
           db 11101011b
           db 11110111b
           db 11101011b
           db 11011101b
           db 10111110b
           db 01111111b
    end
离线BG2IVR
发帖
243
只看该作者 10楼 发表于: 2009-07-14
能搞到你不想搞了那么长
离线QIE
发帖
11291
只看该作者 11楼 发表于: 2009-07-14
红灯停车时间不会很长,我想只要能搞到一分钟显示不重复就够了。
离线BA5RW
发帖
48263
只看该作者 12楼 发表于: 2009-07-14
'
[表情] 红灯停车时间不会很长,我想只要能搞到一分钟显示不重复就够了。
'
每一种状态保持半秒需要120种,一秒就只需要六十种,汇编很容易理解的,有空过来玩一会儿就明白.
离线BA5RW
发帖
48263
只看该作者 13楼 发表于: 2009-07-14
'
这东西我不懂,只想搞出来8个led全亮-全暗-全亮-全暗,这个效果。
'

org 0

st:mov p2,#0
call delay
mov p2,#0ffh
call delay
ajmp st

delay: ;延迟子程序
mov r6,#50
s1: mov r7,#100
djnz r7,$
djnz r6,s1
djnz r5,delay
ret

end
离线QIE
发帖
11291
只看该作者 14楼 发表于: 2009-07-14
我不想明白什么,你只要教我怎么把8个led搞全暗就好了。
离线BA5RW
发帖
48263
只看该作者 15楼 发表于: 2009-07-14
'
我不想明白什么,你只要教我怎么把8个led搞全暗就好了。
'
在那个原有的程序基础上吗?
离线BA5RW
发帖
48263
只看该作者 16楼 发表于: 2009-07-14
'
与led的极性没关系,led会亮,就是全部为1的这行不会显示。
;以查表方式控制的6种不相同的流水灯
;******************************************************************
;* date : 2004.4.20 ----------------------------------------------*
;* support mb: 020-34007281 e-mail:c51cn@163.com---------     --*
;* create by :dengdewu   http://www.c51.cn   更多例程请登陆------*
;* 网站单片机学习资料同步更新,敬请新老朋友随时关注 --------------*
;******************************************************************
end_data equ 01111110b         ;定义花样展示数据字节地址
    org   0030h         ;程序由30开始执行
    jmp   ddw
ddw:   mov   sp,#60h       ;设置堆栈指针至ram地址60h
again:                 ;循环标号
    mov   dptr,#led_table ;加载led花样展示数据起始地址
loop: clr   a           ;累加器清0
    movc   a,@a+dptr     ;加载led花样展示数据起始地址
    cjne   a,#end_data,show ;判断所加载数据是否为结束字节
    jmp   again         ;重新执行led花样展示
show:
    mov   p2,a         ;由p2输出led花样展示九据
    mov   r5,#30
    call   delay         ;延迟0.3s
    inc   dptr         ;指到下一个led花样展示地址
    jmp   loop         ;再加载led花样展示数据
delay:                 ;延迟子程序
    mov   r6,#50
s1:   mov   r7,#100
    djnz   r7,$
    djnz   r6,s1
    djnz   r5,delay
    ret
led_table:               ;led花样展示数据定义
           db 00000000b   ;会亮
           db 00000000b   ;会亮
           db 01111111b   ;会亮一只,如果去掉这行,就没有闪光效果了
           db 11111111b   ;为什么这行不会显示?
           db 00000000b   ;会亮
            db 01111110b  
    end
'

上面红色部分是改过的,记得花样中间不要出现01111110b式样即可,这是作为结束的数据标记.
离线QIE
发帖
11291
只看该作者 17楼 发表于: 2009-07-14
谢谢周老师!明白了。不过这样要改变流水灯“堆积”这个状态的亮灯位置了。

我已经写了不少了,哪位还有什么好花样劳驾帮忙写一段,先谢谢了。
我写一段就往单片机里写,这样马上能看到效果。

           db 00000000b
           db 01111111b
           db 00000000b
           db 01111111b
           db 00000000b
           db 01111111b
           db 00000000b
           db 01111111b
           db 00000000b
           db 00000000b
           db 01111111b
           db 00000000b
           db 00000000b
           db 00000000b
           db 01111111b
           db 00000000b
           db 00000000b
           db 00000000b
           db 01111111b
           db 00000000b
           db 00000000b
           db 00000000b
           db 01111111b
           db 00000000b
           db 00000000b
           db 00000000b
           db 11110000b
           db 00001111b
           db 11110000b
           db 00001111b
           db 11110111b
           db 11100011b
           db 11000001b
           db 10000000b
           db 00000001b
           db 10000001b
           db 11000011b
           db 11100111b
           db 11110111b
           db 11100011b
           db 11000001b
           db 10000000b
           db 00000001b
           db 10000001b
           db 11000011b
           db 11100111b
           db 11110111b
           db 01111111b
           db 10111111b
           db 11011111b
           db 11101111b
           db 11110111b
           db 11111011b
           db 11111101b
           db 11111110b
           db 11111101b
           db 11111011b
           db 11110111b
           db 11101111b
           db 11011111b
           db 10111111b
           db 01111111b
           db 00111111b
           db 10011111b
           db 11001111b
           db 11100111b
           db 11110011b
           db 11111001b
           db 11111100b
           db 11111110b
           db 11111100b
           db 11111001b
           db 11110011b
           db 11100111b
           db 11001111b
           db 10011111b
           db 00111111b
           db 01111111b
           db 00111111b
           db 00011111b
           db 10001111b
           db 11000111b
           db 11100011b
           db 11110001b
           db 11111000b
           db 11111100b
           db 11111110b
           db 11111100b
           db 11111000b
           db 11110001b
           db 11100011b
           db 11000111b
           db 10001111b
           db 00011111b
           db 00111111b
           db 01111111b
           db 10111110b
           db 11011101b
           db 11101011b
           db 11110111b
           db 11101011b
           db 11011101b
           db 10111110b
           db 11011101b
           db 11101011b
           db 11110111b
           db 11101011b
           db 11011101b
           db 10111110b
           db 01111111b
           db 00110011b
           db 11001100b
           db 00110011b
           db 11001100b
           db 00110011b
           db 11001100b
           db 00110011b
           db 11001100b
           db 00110011b
           db 01111111b
           db 00111111b
           db 00011111b
           db 00001111b
           db 00000111b
           db 00000011b
           db 00000001b
           db 00000000b
           db 00000001b
           db 00000011b
           db 00000111b
           db 00001111b
           db 00011111b
           db 00111111b
           db 01111111b
           db 00111111b
           db 00011111b
           db 00001111b
           db 00000111b
           db 00000011b
           db 00000001b
           db 00000000b
           db 00000001b
           db 00000011b
           db 00000111b
           db 00001111b
           db 00011111b
           db 00111111b
           db 01111111b
           db 11111110b
           db 11111101b
           db 11111011b
           db 11110111b
           db 11101111b
           db 11011111b
           db 10111111b
           db 01111111b
           db 01111110b
           db 01111101b
           db 01111011b
           db 01110111b
           db 01101111b
           db 01011111b
           db 00111111b
           db 00111110b
           db 00111101b
           db 00111011b
           db 00110111b
           db 00101111b
           db 00011111b
           db 00011110b
           db 00011101b
           db 00011011b
           db 00010111b
           db 00001111b
           db 00001110b
           db 00001101b
           db 00001011b
           db 00000111b
           db 00000110b
           db 00000101b
           db 00000011b
           db 00000010b
           db 00000001b
           db 00000000b
           db 10000000b
           db 01000000b
           db 10100000b
           db 01100000b
           db 11100000b
           db 11010000b
           db 10110000b
           db 01110000b
           db 11101000b
           db 11011000b
           db 10111000b
           db 01111000b
           db 11110100b
           db 11101100b
           db 11011100b
           db 10111100b
           db 01111100b
           db 11111100b
           db 11111010b
           db 11110110b
           db 11101110b
           db 11011110b
           db 10111110b
           db 01111110b
           db 11111110b
           db 11111101b
           db 11111011b
           db 11110111b
           db 11101111b
           db 11011111b
           db 10111111b
           db 01111111b

    end
离线火腿蛋
发帖
21500
只看该作者 18楼 发表于: 2009-07-14
快快的拉动代码似乎恩能够看见效果哦,单个流水,多个流水,单个流水,是不是?
离线QIE
发帖
11291
只看该作者 19楼 发表于: 2009-07-14
'
上面红色部分是改过的,记得花样中间不要出现01111110b式样即可,这是作为结束的数据标记.
'
错了,闪光效果很好,但是这样会结束,不能结束,要让它不断循环。