您的位置:首页单片机PIC单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

用12C508实现LED三路七彩调光

[日期:2008-01-23 ] [来源:东哥开发网(www.picavr.com) 作者:] [字体: (投递新闻)

;**********************************************************************
;
;    Filename:     HW-3S.asm
;    Date:2006/05/17
;    File Version:
;    主控芯片用12c508,直接输出3路低电平有效的可调矩形脉冲,用于LED的调光                                                                 *
;                                                                                                                           *
;**********************************************************************
        list p="12c508"
        #include <p12c508.inc>
        __CONFIG  _MCLRE_OFF&_CP_ON&_WDT_OFF&_IntRC_OSC
       errorlevel 0,-207
;**********************************************************************
;变量和名称定义
        #define led_r GPIO,0
        #define led_g GPIO,1
        #define led_b GPIO,2
        #define gl    GPIO,3
        #define  sd_1 GPIO,4
        #define  sd_2 GPIO,5
        #define  rep_b d'50'
        cotc    equ  07h
        cotc_c  equ  08h
        cots    equ  09h
          ch_r  equ  0ah
          ch_g  equ  0bh
          ch_b  equ  0ch
          glcs  equ  0dh
          rep_d equ  0eh
          rep_c equ  0fh

 

;**********************************************************************
;

        org 0x00
        MOVwf OSCCAL   ;片内震荡校正系数送OSCCAL
;---------------------------
;RAM清0子程序
        MOVlw 0x08
        MOVwf FSR
        MOVlw d'24'
        MOVwf cotc
        MOVlw 0x00
        MOVwf INDF
        incf FSR,f
        decfsz cotc,f
        goto $-3
;-----------------------------
;
main:
        MOVlw b'00111000'   ;
        TRIS GPIO
        MOVlw b'11111111'   ;
        MOVwf GPIO
        bcf   STATUS,PA0    ;
        MOVlw 0x00           ;起始输出最暗
        MOVwf ch_r
        MOVwf ch_g
        MOVwf ch_b
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_0      ;调用红色常亮,绿色渐亮子程序
        MOVwf rep_d
        call reprom
        goto $-1

 

;
reprom:
        MOVf rep_d,w
        MOVwf PCL

rep_0:
        MOVlw 0xff     ;红色常亮,绿色渐亮
        MOVwf ch_r     ;
        incfsz ch_g,f  ;判断绿色是否最亮
        retlw 0x00     ;否
        decf  ch_g,f   ;是则绿色重置0xff
        MOVlw rep_1    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_1:                 ;红色绿色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_2
        MOVwf rep_d
        retlw 0x00
       
rep_2:                 ;绿色常亮,红色渐渐灭
        decfsz ch_r,f  ;判断绿色是否最暗
        retlw 0x00     ;否
        MOVlw rep_3    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_3:                 ;绿色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_4
        MOVwf rep_d
        retlw 0x00
       
rep_4:                 ;绿色常亮,蓝色渐亮
        incfsz ch_b,f  ;判断绿色是否最亮
        retlw 0x00     ;否
        decf  ch_b,f   ;是则绿色重置0xff
        MOVlw rep_5    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_5:                 ;绿色蓝色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_6
        MOVwf rep_d
        retlw 0x00
       
rep_6:                 ;蓝色常亮,绿色渐渐灭
        decfsz ch_g,f  ;判断绿色是否最暗
        retlw 0x00     ;否
        MOVlw rep_7    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_7:                 ;绿色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_8
        MOVwf rep_d
        retlw 0x00
       
rep_8:                 ;蓝色常亮,红色渐亮
        incfsz ch_r,f  ;判断红色是否最亮
        retlw 0x00     ;否
        decf  ch_r,f   ;是则绿色重置0xff
        MOVlw rep_9    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_9:                 ;红色蓝色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_10
        MOVwf rep_d
        retlw 0x00
       
rep_10:                 ;红色蓝色常亮,绿色渐亮
        incfsz ch_g,f  ;判断绿色是否最暗
        retlw 0x00     ;否
        decf ch_g,f
        MOVlw rep_11    ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_11:                 ;红色,绿色,蓝色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_12
        MOVwf rep_d
        retlw 0x00
       
rep_12:                ;红色常亮,绿色蓝色渐渐灭
        decf   ch_g,f  ;判断绿色是否最暗
        decfsz ch_b,f
        retlw 0x00     ;否
        MOVlw rep_13   ;保持静止色子程序地址送转移指针
        MOVwf rep_d
        retlw 0x00
rep_13:                 ;红色静止色保持节拍
        decfsz rep_c,f
        retlw 0x00
        MOVlw rep_b
        MOVwf rep_c
        MOVlw rep_0
        MOVwf rep_d
        retlw 0x00


;***********************************
        end

阅读:
录入:东哥

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告