打印

lpd6803汇编程序

[复制链接]
2963|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fanxing789|  楼主 | 2010-9-13 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;            2010-09-12          芯片型号:lpd6803s   深圳产   由于发帖字节限制延时略

                       电平检测     EQU      P3.7
                       计数         EQU      2AH
                       缓冲         EQU      2BH
                       时钟         EQU       P3.0
                       数据口       equ       P3.1
                       
                      红值      equ      30h
                      绿值      equ      31h
                      蓝值      equ      32h
                       红色         EQU       20h
                       绿色         EQU       21H
                       蓝色         EQU       22H
                      计数qa       equ      4ah
                     基准数据     EQU       28H
                     org           0000h
                     ljmp          0060h
                     org           0060h
                     nop
                     nop
                     mov           sp,#60h               
初始化1:             nop
                      mov          p1,#0ffh
                      mov          p3,#0ffh
                      mov          sp,#60h   
               
                       lcall         延时100ms
清除返回:             nop  
                      MOV          绿色,#00H
                      MOV          蓝色,#00H
                      MOV          红色,#00H
                     ;=======================
                      lcall         清除                ;60米
主返回入口:          nop
主循环入口:          nop
                     nop
                      lcall        七彩渐变  
                      ljmp         主循环入口
七彩渐变:              nop  
七彩渐变入口:          nop
                       MOV           红色,#31
                       MOV           绿色,#31
                       MOV           蓝色,#31  
                       nop
                       lcall         起始祯
                       lcall         全段数据发  
                       lcall         时钟延时100ms
                       mov        红值,#31
                       mov        绿值,#31
                       mov        蓝值,#31
                       mov         计数qa,#7            ;颜色系数
渐变返回入口:          nop                     
                       mov           r6,#32            ;渐变级数
小渐变循环:            nop
                       MOV           红色,红值
                       MOV           绿色,绿值
                       MOV           蓝色,蓝值  
                       nop
                       lcall         起始祯
                       lcall         全段数据发
                       lcall           时钟延时10ms  
                       nop
                       djnz          r6,渐变检查
                      ljmp          渐变全亮入口  
渐变检查:              nop
                       nop  
                     ;==================
                     ;   渐变 红  7
                     ;-----------------------
                       mov           a,计数qa
                       cjne          a,#7,渐变无效q7
                       dec           绿值
                       dec           蓝值
                       ljmp         小渐变退出
渐变无效q7:            nop   
                      ;==================
                      ;   红渐变黄  6
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#6,渐变无效q6
                       inc           绿值
                       ljmp         小渐变退出
渐变无效q6:            nop   
                       ;==================
                      ;   黄渐变绿
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#5,渐变无效q5
                       dec           红值
                       ljmp         小渐变退出
渐变无效q5:            nop   
                        ;==================
                      ;   绿渐变青
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#4,渐变无效q4
                       inc           蓝值
                       ljmp         小渐变退出
渐变无效q4:            nop   
                      ;==================
                      ;   青渐变蓝
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#3,渐变无效q3
                       dec           绿值
                       ljmp         小渐变退出
渐变无效q3:            nop   
                       ;==================
                      ;   蓝渐变紫
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#2,渐变无效q2
                       inc          红值
                       ljmp         小渐变退出
渐变无效q2:            nop   
                       ;==================
                      ;   紫渐变白
                      ;-------------------
                       mov           a,计数qa
                       cjne          a,#1,渐变无效q1
                       inc          绿值
                       ljmp         小渐变退出
渐变无效q1:            nop  
                      ;=============================
                       ljmp         七彩渐变入口              ;错误返
                       ;====================                       
小渐变退出:            nop
                       ljmp           小渐变循环             ;渐变过程返回  
                      ;============================
                       ;    实验全亮保持
                       ;===============================
渐变全亮入口:           nop   
                        lcall          时钟延时1s
                        lcall          时钟延时1s
                         djnz           计数qa,渐变继续
                         ret  
                       ;=========================
                      ;   以下是数据分支程序
                       ;=======================
渐变继续:              nop                       
                      ;=====================
                       ;   红渐变黄
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#6,渐变分支q1无效  
                       MOV           红值,#31
                       MOV           绿值,#0
                       MOV           蓝值,#0
                       ljmp         渐变有效返回
渐变分支q1无效:        nop  
                     ;=====================
                       ;   黄渐变绿
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#5,渐变分支q2无效
                       MOV           红值,#31
                       MOV           绿值,#31
                       MOV           蓝值,#0
                       ljmp         渐变有效返回
渐变分支q2无效:        nop  
                      ;=====================
                       ;    绿渐变青
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#4,渐变分支q3无效
                       MOV           红值,#0
                       MOV           绿值,#31
                       MOV           蓝值,#0
                       ljmp         渐变有效返回
渐变分支q3无效:        nop                       
                      ;=====================
                       ;  青渐变蓝
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#3,渐变分支q4无效
                       
                       MOV           红值,#0
                       MOV           绿值,#31
                       MOV           蓝值,#31
                       ljmp         渐变有效返回
渐变分支q4无效:        nop  
                      ;=====================
                       ;   蓝渐变紫
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#2,渐变分支q5无效  
                       MOV           红值,#0
                       MOV           绿值,#0
                       MOV           蓝值,#31
                       ljmp         渐变有效返回
渐变分支q5无效:        nop                       
                      ;=====================
                       ;   紫渐变白
                       ;=====================
                       mov          a,计数qa
                       cjne         a,#1,渐变分支q6无效
                       MOV           红色,#31
                       MOV           绿色,#0
                       MOV           蓝色,#31
                       ljmp          渐变有效返回
渐变分支q6无效:        nop
                      ;=======================
渐变有效返回:          nop  
                      ljmp           渐变返回入口         ;错误返回
                      ;=======================
                    ;   6  紫
                    ;==========================
实验分支q1:            nop  
                       MOV           绿色,#0
                       MOV           蓝色,#31
                       MOV           红色,#0
                       lcall        米段数据发
                       ;=======================
                    ;   5  蓝
                    ;==========================
实验分支q2:            nop                     
                       MOV           绿色,#0
                       MOV           蓝色,#31
                       MOV           红色,#31
                       lcall        米段数据发
                        ;=======================
                    ;      4  绿
                    ;==========================
实验分支q3:            nop                     
                       MOV           绿色,#31
                       MOV           蓝色,#0
                       MOV           红色,#0
                       lcall        米段数据发  
                       ;=======================
                    ;     3   青
                    ;==========================
实验分支q4:            nop   
                        MOV           绿色,#31
                       MOV           蓝色,#31
                       MOV           红色,#0
                       lcall        米段数据发
                       ;=======================
                    ;      2  黄
                    ;==========================
实验分支q5:            nop                       
                       MOV           绿色,#31
                       MOV           蓝色,#0
                       MOV           红色,#31
                       lcall        米段数据发
                        ;=======================
                    ;      1  红
                    ;==========================
实验分支q6:            nop                     
                       MOV           绿色,#0
                       MOV           蓝色,#0
                       MOV           红色,#31
                       lcall        米段数据发
                     ;=============================  
                        lcall         时钟延时100ms
                        lcall          时钟延时1s
                        ret
                    
                    
;***************************************************************************************
;              以下是子程序
;
;************************************************************************************
                       
                     ;===================================
全段数据发:            nop
                       mov           r2,#50                       ;单色点个数
全段循环q2:            nop  
                       mov           r1,#12                       ;单色点个数
全段循环q1:            nop
                       lcall         全数据发送                   ;1个1+15 位数据
                       nop
                       djnz          r1,全段循环q1
                       djnz          r2,全段循环q2                    
                       ret
米段数据发:            mov           r1,#12                       ;单色点个数
米段循环qr1:           lcall         全数据发送                   ;1个1+15 位数据 b
                       djnz          r1,米段循环qr1                    
                       ret
全数据发送:         nop
                    lcall    起始位
                  mov           a,绿色
                  cpl           a                          ;置反向
                  lcall         五位数据
                  mov           a,蓝色
                  cpl           a                          ;置反向
                  lcall         五位数据
                   mov           a,红色
                   cpl           a                          ;置反向
                   lcall         五位数据               
                   ret
                ;========================
              ;      送32个0
              ;=========================
起始祯:         NOP              
                setb         数据口
                MOV           R2,32
数据循环:       ;nop               
               ; NOP
                LCALL        时钟脉冲
                ;NOP
               ; NOP
                djnz         r2,数据循环
                RET
                ;=========================
              ;  起始位   1
              ;==========================
起始位:         NOP              
                CLR          数据口
                nop
                LCALL        时钟脉冲
                nop
                SETB          数据口
                nop
                RET
              ;===========================
              ;  八位单元
              ;===========================
                 
五位数据:        clr        c
                 rlc        a
                 rlc        a
                 rlc        a
                 mov        3ah,#5
                 clr        c
送数循环:        rlc        a
                 mov        数据口,c
                 clr        时钟
                 nop  
                 setb       时钟                           
                 djnz       3ah,送数循环
                 ret              
               ;============================================
清除:                 nop                       
                      LCALL        起始祯
                      mov           r4,#60
清除长度循环:         nop
                      mov          r3,#12
清除循环:             nop                        
                      MOV          绿色,#00h
                      MOV          蓝色,#00h
                      MOV          红色,#00h
                      nop
                      lcall        全数据发送
                      nop           
                      djnz         r3,清除循环
                      nop
                      djnz         r4,清除长度循环              
                      nop
                      ret
              
              ;================
点时钟:        CLR       时钟
                SETB       时钟
                RET            
              ;=================
              
时钟脉冲:       NOP
                CLR       时钟
                NOP
                NOP
                SETB       时钟
                RET
              ;===================
              
点数发送:        nop
                 nop
                  setb        数据口
                  nop
                  nop
                 mov        r4,#100
               
点数循环:        nop            
                 LCALL      时钟脉冲
                 nop
                 djnz       r4,点数循环
                 ret
                 lcall     时钟延时10ms
                 lcall    时钟延时50ms
                  lcall  时钟延时100ms
                 nop
           
;=================================
时钟延时2ms:       nop
                    mov         56h,#210
时钟延时2ms1:       LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲  
                    djnz        56h,时钟延时2ms1               
                    ret  
时钟延时10ms:       nop               
                    mov         55h,#10
时钟延时10ms2:      mov         56h,#102
时钟延时10ms1:      LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲  
                    djnz        56h,时钟延时10ms1
                    djnz        55h,时钟延时10ms2               
                    ret  
时钟延时50ms:       nop               
                    mov         55h,#50
时钟延时50ms2:      mov         56h,#102
时钟延时50ms1:      LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲  
                    djnz        56h,时钟延时50ms1
                    djnz        55h,时钟延时50ms2               
                    ret
时钟延时100ms:      nop               
                    mov         40h,#100
时钟延时2:          mov         41h,#102
时钟延时1:          LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲
                    LCALL       时钟脉冲   
                    djnz        41h,时钟延时1
                    djnz        40h,时钟延时2               
                    ret  
                  
           ;===================================      
                     org     07fdh
                     ljmp    0000h         
                     end

相关帖子

沙发
afong| | 2010-10-13 10:35 | 只看该作者
顶顶你:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

147

帖子

1

粉丝