找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7250|回复: 9
收起左侧

STC15F104W驱动24位WS2812汇编程序

  [复制链接]
ID:72088 发表于 2017-4-23 08:37 | 显示全部楼层 |阅读模式
本帖最后由 新乡家电维修 于 2017-4-27 09:30 编辑

1.jpg 2.jpg
;WS2812驱动环形24灯15F104W,12m写入

;写程序用12M
        OUT        BIT        P3.3

        ORG        0H
        ORG        30H
;==========主程序=================
MAIN:
        ACALL        REST
START:

ATART_0:
        ACALL        OOO
        ACALL        EEE
        ACALL        OOO
        DJNZ        R0,ATART_0
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;==============
ATART_1:
        ACALL        EEE2
        ACALL        EEE2
        ACALL        OOO
        DJNZ        R0,ATART_1
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;=============
ATART_2:
        ACALL        EEE
        ACALL        OOO
        ACALL        OOO
        DJNZ        R0,ATART_2
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;=============
ATART_3:
        ACALL        EEE2
        ACALL        OOO
        ACALL        EEE2
        DJNZ        R0,ATART_3
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;=============
ATART_4:
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE
        DJNZ        R0,ATART_4
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;=============
ATART_5:
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2
        DJNZ        R0,ATART_5
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
ATART_6:
        ACALL        EEE2
        ACALL        EEE2
        ACALL        EEE2
        DJNZ        R0,ATART_6
        ACALL        REST
        ACALL        ATART_00                ;全灭灯
;=============
MOV R2,#250
ATART_7:                ;双彩色循环GGRRBBGGRRBB
        DEC R2
        MOV A,R2
        JZ MAIN
        ACALL        EEE2        ;G
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO        ;R
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2

        DJNZ        R0,ATART_7

        ACALL        REST
ATART_8:
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2        ;G
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        DJNZ        R0,ATART_8
        ACALL        REST
ATART_9:
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        DJNZ        R0,ATART_9
        ACALL        REST
ATART_10:
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2        ;G
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO        ;R
        ACALL        EEE2
        ACALL        OOO
        DJNZ        R0,ATART_10
        ACALL        REST
ATART_11:
        ACALL        OOO        ;R
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2        ;G
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        DJNZ        R0,ATART_11
        ACALL        REST
ATART_12:
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO        ;R
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO        ;B
        ACALL        OOO
        ACALL        EEE2
        ACALL        OOO
        ACALL        OOO
        ACALL        EEE2
        ACALL        EEE2        ;G
        ACALL        OOO
        ACALL        OOO
        DJNZ        R0,ATART_12
        ACALL        REST
;=============
        JMP        ATART_7


ATART_00:        ;全关闭程序
        ACALL        OOO
        ACALL        OOO
        ACALL        OOO
        DJNZ        R0,ATART_00
        ACALL        REST
        RET
REST:
        CLR        OUT
        ACALL        DELAY1000MS
        SETB        OUT
        mov r0,#24
        RET
OOO:                ;关闭
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
ret
EEE:        ;单色显示亮度不足,用这个高的
        ACALL        SHI_0
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
RET
EEE2:        ;双色显示用这个低值的
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_0
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
        ACALL        SHI_1
RET
;===========01识别============
SHI_0:
        SETB        OUT
        CLR        OUT
        CLR        OUT
        RET
SHI_1:
        SETB        OUT
        SETB        OUT
        CLR        OUT
        RET
;-------------延时子程序-----------------
DELAY60US:                        ;@12.000MHz
        NOP
        NOP
        NOP
        NOP
        PUSH 30H
        MOV 30H,#140
NEXT:
        DJNZ 30H,NEXT
        POP 30H
        RET
DELAY1000MS:                        ;@12.000MHz
        NOP
        NOP
        NOP
        PUSH 30H
        PUSH 31H
        PUSH 32H
        MOV 30H,#37
        MOV 31H,#123
        MOV 32H,#89
NEXT1:
        DJNZ 32H,NEXT1
        DJNZ 31H,NEXT1
        DJNZ 30H,NEXT1
        POP 32H
        POP 31H
        POP 30H
        RET
END

对时序要求比较高,普通51单片机难以实现。希望起到借鉴作用,大家可以编译下试试,交流下


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2017-4-28 00:06 | 显示全部楼层
好资料,51黑有你更精彩
回复

使用道具 举报

ID:72088 发表于 2017-4-30 11:11 | 显示全部楼层
这样发表方便读者阅读,他们又不用回复。总觉得心冷冷的。非要加上回复后才能阅读权限
回复

使用道具 举报

ID:195089 发表于 2017-4-30 19:39 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:271166 发表于 2018-1-15 15:53 | 显示全部楼层
不错的资料,学习一下,顶
回复

使用道具 举报

ID:246618 发表于 2019-3-1 10:23 | 显示全部楼层
怎么用Keil uVision3编译不过
回复

使用道具 举报

ID:104838 发表于 2019-3-20 21:34 | 显示全部楼层
好看
回复

使用道具 举报

ID:445246 发表于 2019-7-4 05:12 | 显示全部楼层
看看,不够清楚
回复

使用道具 举报

ID:200844 发表于 2021-4-16 16:32 | 显示全部楼层
支持你,我就需要汇编的,谢谢了
回复

使用道具 举报

ID:310441 发表于 2022-3-19 16:31 来自手机 | 显示全部楼层
你牛,现在能用汇编做程序的少了!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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