您可以添加到网摘 让更多人关注此文章:
;********************************************************************** ; ; 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
[1]
|