单片机 > 单片机程序设计 > 详情

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

发布时间:2020-06-19 发布时间:
|

;**********************************************************************
        list p="12c508"
        #include
        __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


关键字:12C508  LED  三路七彩调光 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二