gzyueqian
13352868059
首页 > 新闻中心 > > 正文

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

更新时间: 2008-09-02 14:44:26来源: 粤嵌教育浏览量:1496

;**********************************************************************
;
; 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









免费预约试听课